この記事は2023年7月1日で公開された中国語の記事「Python潮流周刊#9:如何在本地部署开源大语言模型?」の日本語訳です。主に LLM によって翻訳され、手修正で校正されていますが、もし不自然の点が気づいたら、「記事の改善」機能で、編集リクエストをいただけるとありがたいです。
こちらから最新号まで購読できます(英語のみですので、ご了承ください。)
こんにちは、Python エンジニアのネコです。ここでは毎週、参考になる Python や汎用技術に関する情報をまとめています。一部は英語の内容も含まれており、小見出しにその旨を記載しています。(今回のタイトルは共有項目の一つから取ったもので、すべての内容がそのテーマに関するわけではありませんのでご了承ください。)
この記事の初出はここです。
🦄記事&チュートリアル
1、 オープンソース LLM をローカル環境を構築する完全ガイド:LangChain + Streamlit + Llama (英語)
手順が明確に示されたチュートリアルで、LangChain と Meta (旧Facebook) が公開した LLaMA を使用して、文書ベースの質問応答アシスタントを構築する方法を解説しています。さらに Streamlit を使って洗練されたユーザーインターフェースも実装しています。
2、 Python Asyncio コルーチンオブジェクトのオーバーヘッド
Python Asyncio の1つのコルーチンはどれくらいメモリを消費するのでしょうか?記事のテスト結果によると、約 2Kb です。また、以下の点についても検証しています:
- 1秒間に作成可能なベアコルーチンの数
- 1秒間に処理可能なコルーチンの数
-
uvloop使用時のコルーチンタスク作成・処理の性能向上度合い
3、 asyncio.Runner で複数のコルーチンを実行する方法 (英語)
asyncio.Runner は Python 3.11 で導入された新機能で、同一のイベントループ内で複数のコルーチンを実行できます。この記事では、以下の内容について解説しています:asyncio.run() を使った複数コルーチンの実行方法、ラッパーメソッドによる複数コルーチンの実行方法、そして asyncio.Runner クラスを使って同一イベントループ内で柔軟かつ条件付きにコルーチンを実行する方法。
4、 ロックを使わない並行処理の実装 (英語)
並行プログラミングでは通常ロックを使用しますが、ロックの乱用は避けるべきです。この記事では、ロックへの依存を最小限に抑えて並行処理を実現する方法を探り、短縮URLの生成を例に解説しています。主な考え方は「許可より謝罪」の原則と、PostgreSQL データベースの機能を活用することです。
5、 CPython コントリビュート日記 (3) CPython の実行メカニズム(中国語)
この記事では、CPython が Python コードを実行するプロセスについて解説しています。主なプロセスは以下の通り:字句解析、構文解析、バイトコードへのコンパイル、バイトコードの実行。
6、 Python JIT コンパイラ - リアルタイムでコンパイル (英語)
この記事では、JIT (Just-In-Time) コンパイルの概念とメリットについて解説し、主要な Python JIT コンパイラ (PyPy、Numba、Cython など) の利点と欠点を詳しく分析しています。また、Python で JIT コンパイラを効果的に使用するためのベストプラクティスと指針について紹介しています。
7、 CPython、Pypy、MicroPython、Jython……それぞれの違いとは? (英語)
一般的に「Python」と言った場合、公式の CPython 実装を指しますが、他にも多数の「Python」実装が存在します。例えば Pypy、Jython、MicroPython、Brython、RustPython など、さらに Nuitka、WinPython、Psyco、Pyjion といった Python 関連のツールや実装もあります。この記事では、これらの関連概念とツールについて詳しく解説しています。
8、 Python APScheduler:AsyncIOScheduler のパワフルな機能を深掘り (英語)
APScheduler はタスクスケジューリングと自動化のためのツールで、その AsyncIOScheduler は非同期関数やコルーチンのスケジューリングに対応しています。この記事では、その機能や利点、そして非同期タスクのスケジューリング要件を最適化する方法について詳しく解説しています。
9、 コード生成時に技術的負債を避ける方法 (英語)
GPT やその他の大規模言語モデルは大量のコードを迅速に生成できますが、これによって乱雑なコードが生まれるリスクもあります。この記事では、生成されたコードを改善し、プロジェクトに統合するための様々な方法を探求しています。具体的には、専門家の視点を取り入れること、実例を提供すること、ベストプラクティスに従うこと、標準と明確なガイドラインを遵守すること、そしてコードの適切な配置場所の選択などを含みます。
10、 NumPy が遅い場合の対処法 (英語)
並列処理を使用しない前提で、NumPy のパフォーマンスを向上させる方法について解説しています。NumPy には3つの根本的なボトルネックがあります:即時実行(Eager execution)、汎用コンパイルされたコード、ベクトル化による高いメモリ使用量。これらのボトルネックに対処するため、記事では4つの解決策を紹介しています:手動でのコード最適化、JAX を使った JIT コンパイル、Numba を使った JIT コンパイル、そして事前コンパイルの活用です。
11、Numba チュートリアル:JIT コンパイルによる Python コード高速化 (英語)
Numba は専用の JIT(Just-In-Time) コンパイラであり、Python コードを効率的なマシンコードにコンパイルすることでインタプリタの実行オーバーヘッドを排除し、パフォーマンスを大幅に向上させます。この記事では、Numba の機能、内部原理、基本的な使用方法、およびよくある問題について解説しています。
12、自動化による Python コード品質の向上 (英語)
より少ない時間と労力でコード品質を向上させるにはどうすればよいでしょうか?この記事では、コード品質向上のためのツール(flake8、Black、isort、mypy、banditなど)と、IDE、CI、pre-commit を活用してこれらのツールを自動実行する方法について解説しています。
13、PandasAI を使用したデータ分析の強化 (英語)
PandasAI は最近注目されているライブラリであり、Pandas に対話型 AI 機能を統合することでデータ操作を簡略化します。この記事では、PandasAI を使用した複雑なクエリとチャート可視化の方法、および提供されている10数種類の便利な関数について解説しています。
14、ユニットテスト作成のベストプラクティス (英語)
ユニットテストの利点は言うまでもないが、ユニットテストの作成は開発者が最も嫌がる作業の一つです。この記事では、ユニットテスト作成のための10のベストプラクティスを列挙し、手動でのユニットテスト作成手順を解説した上で、最後に Codium.AI を使用したテストの自動生成方法について紹介しています。
15、Netflix が GraphQL に安全に移行する方法 (英語)
Netflix 公式ブログの記事で、スマートフォンアプリを Falcor から GraphQL に安全に移行する過程で採用した3つのテスト戦略について紹介しています:A/Bテスト、Replay テスト、Sticky Canaries。A/Bテストは新機能の顧客への影響評価に、Replay テストは移行の正確さの検証に、Sticky Canaries は性能とビジネス指標の検証にそれぞれ使用されます。
🎁Pythonトレンド週刊🎁は9号まで無料公開中!下記リンクからすべてのバックナンバーを閲覧できます:https://pythoncat.top/tags/weekly
🐿️プロジェクト&リソース
1、 PyGWalker:pandas データを Tableau 風の可視化インターフェースで操作
Jupyter Notebook 環境で動作する探索的可視化分析ツールです。わずか1コマンドで対話型の UI を生成し、Tableau や PowerBI のようにフィールドをドラッグする直感的な操作でデータ分析を行うことができます。(スター数 6.5K)
2、 jnumpy:Julia で Python の C 拡張を効率的に作成 (英語)
Julia を使って Python 向けの高パフォーマンスな C 拡張を記述し、約200倍の高速化を実現できます。(投稿者:xgdgsc)
3、 jupyter-ai:JupyterLab の生成 AI 拡張機能 (英語)
JupyterLab 公式による生成 AI 拡張で、主な機能として以下のものを提供しています:
-
%%aiコマンド - 組み込みのチャット UI インターフェース
- AI21、Anthropic、Cohere、Hugging Face、OpenAI、SageMaker など、様々なプラットフォームの大規模言語モデル (LLM) に対応
4、 broadcast-service: 強力な Python Pub/Sub フレームワーク
発行-購読型のフレームワークで、同期・非同期処理、定期タスク、トピック管理、発行者・購読者のコールバック機能などをサポートしています。(投稿者:Zeeland)
5、 cushy-storage: ディスクキャッシュを基盤とした ORM フレームワーク
ディスクキャッシュを利用した ORM フレームワークで、基本データ型やカスタムデータに対しても ORM による CRUD 操作を提供し、多様なシリアライズ方式とデータ圧縮方法をサポートしています。(投稿者:Zeeland)
6、 giskard:MLモデル特化のテストフレームワーク (英語)
機械学習モデルのテスト方法、カバーすべき問題、実施手順について。このフレームワークは数十種類の脆弱性(パフォーマンスバイアス、データ漏洩、頑健性不足、疑似相関、過信、自信過小、倫理的問題など)をスキャンし、結果に基づいてドメイン特化のテストスイートを生成します。(スター数 1K)
7、 DragGAN:ポイント操作による対話型画像編集 (英語)
今週最も注目されているプロジェクトで、画像上のポイントをドラッグ操作するだけで、希望通りの新しい画像を生成でき、非常に印象的です!(スター数 28K)
8、 plumbum: シェルスクリプトから解放される (英語)
シェルに似た構文と便利な省略記法に加え、ローカル/リモートでのコマンド実行(SSH経由)、ローカル/リモートのファイルシステムパス操作、簡易的なディレクトリ・環境操作、そしてプログラマブルCLIツールキットを提供します。(スター数 2.6K)
9、 threestudio:3Dコンテンツ生成向け統合フレームワーク (英語)
テキストプロンプト、単一画像、Few-shot 画像を使用した 3Dコンテンツの生成をサポート。ProlificDreamer、DreamFusion、Magic3D、Score Jacobian Chaining など、様々なモデルに対応しています。(スター数 1.8K)
10、 rembg:画像背景除去ツール (英語)
画像の背景除去に対応し、CLI、ライブラリ、Docker など様々な使用方法と強力な機能を備えています。(スター数 10.5K)
🐼本週刊について
Python トレンド週刊では、国内外 200 以上の情報源から注目すべき記事、チュートリアル、オープンソースプロジェクト、ソフトウェアツール、ポッドキャスト、動画、話題のトピックなどを厳選してお届けします。本週刊のビジョンは、すべての読者が Python 技術を高めるとともに、本業や副業の収入アップにつなげられるようサポートすることです。
コンテンツの作成には多くの時間と労力がかかっています。もしこの記事が少しでも参考になったと感じたら、気軽にサポート や コーヒーをごちそう などをいただけると嬉しいです!この週刊が気に入った方は、ぜひ必要としている仲間にもシェアして、より多くの方に役立ててもらえたら嬉しいです〜
購読方法:Python猫 (Wechatのグループ参加可)| RSS | メールマガジン | Github | Telegram | Twitter






