LMDeploy プロジェクト詳細
プロジェクト概要
LMDeploy は、大規模言語モデルを圧縮、デプロイ、およびサービス提供するためのツールキットであり、MMRazor と MMDeploy チームによって開発されました。このプロジェクトは、大規模言語モデル (LLM) および視覚-言語モデル (VLM) に、効率的な推論、デプロイ、およびサービスソリューションを提供することに焦点を当てています。
主要な特徴
1. 効率的な推論 (Efficient Inference)
LMDeploy のリクエストスループットは vLLM より 1.8 倍高く、持続的バッチ処理 (continuous batching)、チャンク化された KV キャッシュ、動的分割融合、テンソル並列処理、高性能 CUDA カーネルなどの主要な機能が導入されています。
2. 効果的な量子化 (Effective Quantization)
LMDeploy は重み量子化と k/v 量子化をサポートしており、4 ビット推論の性能は FP16 より 2.4 倍高く、量子化品質は OpenCompass によって評価され確認されています。
3. 簡単な分散サービス (Effortless Distribution Server)
リクエスト分散サービスを利用することで、LMDeploy は複数のマシンと複数のカードに、簡単かつ効率的にマルチモデルサービスをデプロイできます。
4. インタラクティブ推論モード (Interactive Inference Mode)
複数ターンの対話プロセス中に注意の k/v をキャッシュすることで、エンジンは対話履歴を記憶し、履歴セッションの繰り返し処理を回避します。
5. 優れた互換性 (Excellent Compatibility)
LMDeploy は、KV Cache 量子化、AWQ、および自動プレフィックスキャッシュの同時使用をサポートしています。
デュアルエンジンアーキテクチャ
LMDeploy は 2 つの推論エンジンを開発しました。
TurboMind エンジン
- 焦点: 推論性能の究極の最適化を追求
- 特徴: 高度に最適化された C++/CUDA 実装、本番環境向けに設計
PyTorch エンジン
- 焦点: 純粋な Python 開発、開発者の参入障壁を低減
- 特徴: 新しい機能や技術を迅速に実験しやすく、拡張とカスタマイズが容易
2 つのエンジンは、サポートするモデルタイプと推論データタイプが異なり、ユーザーは実際のニーズに応じて適切なエンジンを選択できます。
サポートするモデル
LMDeploy は幅広いモデルタイプをサポートしています。
大規模言語モデル (LLMs)
- InternLM シリーズ (InternLM、InternLM2、InternLM2.5、InternLM3)
- Llama シリーズ (Llama2、Llama3、Llama3.1)
- Qwen シリーズ (Qwen1.5、Qwen1.5-MOE など)
- Baichuan2 シリーズ
- Mistral、Mixtral
- DeepSeek シリーズ
- Gemma
- Code Llama
- より多くのモデルが継続的に追加されています
視覚-言語モデル (VLMs)
- InternVL シリーズ
- InternLM-XComposer シリーズ
- LLaVA シリーズ
- CogVLM シリーズ
- Mini-InternVL
- DeepSeek-VL
- より多くのマルチモーダルモデル
インストール方法
迅速なインストール
conda 環境で pip を使用してインストールすることをお勧めします (Python 3.8-3.12 をサポート):
conda create -n lmdeploy python=3.8 -y
conda activate lmdeploy
pip install lmdeploy
注意事項
- デフォルトの事前構築済みパッケージは CUDA 12 に基づいてコンパイルされています (v0.3.0 バージョン以降)
- CUDA 11+ プラットフォームのインストールをサポート
- ソースコードからの構築をサポート
迅速な使用例
基本的な推論
import lmdeploy
with lmdeploy.pipeline("internlm/internlm3-8b-instruct") as pipe:
response = pipe(["Hi, pls intro yourself", "Shanghai is"])
print(response)
マルチモーダル推論
from lmdeploy import pipeline
from lmdeploy.vl import load_image
pipe = pipeline('OpenGVLab/InternVL2-8B')
image = load_image('path/to/image.jpg')
response = pipe(('描述这张图片', image))
print(response)
モデルソースのサポート
LMDeploy は複数のモデルライブラリをサポートしています。
- HuggingFace (デフォルト)
- ModelScope: 環境変数
LMDEPLOY_USE_MODELSCOPE=Trueを設定 - openMind Hub: 環境変数
LMDEPLOY_USE_OPENMIND_HUB=Trueを設定
アプリケーションシナリオ
- 本番環境へのデプロイ: 高スループットの LLM サービス
- 研究開発実験: 新しいモデルとアルゴリズムの迅速な検証
- リソース制約のある環境: 量子化技術によるリソース要件の削減
- マルチモーダルアプリケーション: 視覚-言語モデルの効率的な推論
- エッジデバイス: NVIDIA Jetson などのプラットフォームをサポート
エコシステム統合
LMDeploy は複数のオープンソースプロジェクトと深く統合されています。
- OpenAOE: LMDeploy サービスとのシームレスな統合
- Swift: デフォルトの VLM 推論アクセラレータとして
- BentoML: デプロイのサンプルプロジェクトを提供
- Jetson プラットフォーム: 専用のエッジデバイスアダプテーション
まとめ
LMDeploy は、強力で高性能な大規模言語モデルのデプロイツールキットであり、研究開発実験から本番デプロイまで、さまざまなシナリオに適しています。そのデュアルエンジンアーキテクチャ、高度な量子化技術、および幅広いモデルサポートにより、AI アプリケーション開発者にとって重要なツール選択肢となっています。究極のパフォーマンスを追求する本番環境でも、迅速なイテレーションが必要な研究開発シナリオでも、LMDeploy は適切なソリューションを提供できます。