はじめに
LitServeは 雷 AIは、FastAPI上に構築されたオープンソースのAIモデル・サービス・エンジンを発表した。大規模言語モデル(LLM)、ビジュアルモデル、オーディオモデルから古典的な機械学習モデルまで、幅広いシナリオをサポートし、バッチ処理、ストリーミング、GPU自動スケーリングを提供し、FastAPIと比較して少なくとも2倍の性能向上を実現します。 LitServeは使いやすく柔軟性が高く、セルフホスティングまたはLightning Studiosを介したフルホスティングが可能です。LitServeは使いやすく柔軟性が高く、Lightning Studiosを通じてセルフホストまたはフルホストすることができるため、研究者、開発者、企業が効率的なモデル推論APIを迅速に構築するのに理想的です。LitServeは、セキュリティ、スケーラビリティ、高可用性といったエンタープライズクラスの機能を重視しており、本番環境がすぐに利用できるようになっています。
機能一覧
- 推論サービスの迅速な展開PyTorch、JAX、TensorFlowなどのフレームワークからAPIへのモデルの高速変換をサポート。
- バッチファイルスループットを向上させるために、複数の推論要求をバッチにまとめる。
- ストリーミングリアルタイムでの推論結果ストリーム出力をサポート。
- GPUオートスケーリング推論負荷に応じてGPUリソースを動的に調整することで、パフォーマンスを最適化します。
- 複合AIシステム複雑なサービスを構築するために、複数のモデルが共同で推論できるようにする。
- セルフホスティングとクラウドホスティングLightning Studiosのクラウドを利用したローカルデプロイメントまたは管理をサポートします。
- vLLMとの統合大規模言語モデルの推論性能を最適化する。
- OpenAPI対応テストと統合を容易にするために、標準的なAPIドキュメントを自動的に生成します。
- フルモデルサポートLLM、ビジョン、オーディオ、エンベッディングなど、様々なモデルの推論ニーズをカバー。
- サーバーの最適化マルチプロセス処理と推論をFastAPIの2倍以上高速化。
ヘルプの使用
設置プロセス
LitServeはPythonの ピップ
このツールは仕事をする。以下はその詳細な手順である:
1.環境を整える
Python 3.8以降がシステムにインストールされていることを確認してください:
python -m venv venv
ソース venv/bin/activate # Linux/Mac
venv/bin/activate # Windows
2.LitServeのインストール
以下のコマンドを実行して安定版をインストールする:
pip install litserve
最新の機能が必要な場合は、開発版をインストールしてください:
pip install git+https://github.com/Lightning-AI/litserve.git@main
3.設備の検査
成功したことを確認する:
python -c "import litserve; print(litserve.__version__)"
バージョン番号の出力に成功すれば、インストールは完了です。
4.オプションの依存関係
GPUサポートが必要な場合は、例えば対応するフレームワークのGPUバージョンをインストールしてください:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
LitServeの使い方
LitServeは、クリーンなコードによってAIモデルを推論サービスに変える。その詳しい仕組みは以下の通りだ:
1.シンプル推論サービスの創設
以下は、2つのモデルを持つ複合推論サービスの例です:
lsとしてlitserveをインポートする
class SimpleLitAPI(ls.)
def setup(self, device).
#初期化、モデルまたはデータのロード
self.model1 = lambda x: x ** 2 #正方形モデル
self.model2 = lambda x: x ** 3 #立方体モデル
def decode_request(self, request).
# リクエストデータをデコードする
return request["input"].
def predict(self, x).
#複合推論
squared = self.model1(x)
cubed = self.model2(x)
return squared + cubed
def encode_response(self, output).
# 推論結果をフォーマットする
return {"output": output}.
if __name__ == "__main__": server = ls.
server = ls.LitServer(SimpleLitAPI(), accelerator="auto")
server.run(port=8000)
- うごきだす名前を付けて保存
server.py
実施python server.py
. - 試験の使用
カール
推論要求を送信する:curl -X POST "http://127.0.0.1:8000/predict" -H "Content-Type: application/json" -d '{"input": 4.0}'
出力:
{"output": 80.0}
(16 + 64).
2.一括推論を可能にする
バッチ処理をサポートするようにコードを修正する:
server = ls.LitServer(SimpleLitAPI(, max_batch_size=4, accelerator="auto")
- 操作説明::
max_batch_size=4
最大4つの推論要求が同時に処理され、効率向上のために自動的にマージされることを示す。 - 試験方法リクエストを複数回送信し、スループットの向上を観察する:
curl -X POST "http://127.0.0.1:8000/predict" -H "Content-Type: application/json" -d '{"input": 5.0}'
3.ストリーミング推論の設定
リアルタイムの推論シナリオのために:
class StreamLitAPI(ls.LitAPI).
def setup(self, device): self.model = lambda x: [x * i for i in range(5)]].
self.model = lambda x: [x * i for i in range(5)].
def decode_request(self, request): return request["input"].
return request["input"].
def predict(self, x): for result in self.model(x)
for result in self.model(x): yield 結果
結果を返す
def encode_response(self, output): return {"output": {"出力": {"入力"]].
return {"output": output}.
server = ls.LitServer(StreamLitAPI(), stream=True, accelerator="auto")
server.run(port=8000)
- 操作説明::
stream=True
ストリーミング推論を可能にする予測
利用する収量
結果を一つずつ返す。 - 試験方法ストリーミング応答をサポートするクライアントを使用する:
curl --no-buffer -X POST "http://127.0.0.1:8000/predict" -H "Content-Type: application/json" -d '{"input": 2}'
4.GPUの自動拡張
GPUが利用可能な場合、LitServeは自動的に推論を最適化する:
- 操作説明::
アクセラレーター="自動"
GPUの検出と優先順位付け。 - 糺すGPUの使用状況を確認するために、実行後にログをチェックしてください。
- 環境要件GPU 版のフレームワーク(例:PyTorch)がインストールされていることを確認してください。
5.複雑なモデル推論の展開(BERTを例にして)
Hugging Face の BERT モデル推論サービスを展開する:
from transformers import BertTokenizer, BertModel
ls として litserve をインポート
class BertLitAPI(ls.)
def setup(self, device): self.tokenizer = BertTokenizer.
self.tokeniser = BertTokenizer.from_pretrained("bert-base-uncased")
self.model = BertModel.from_pretrained("bert-base-uncased").to(device)
def decode_request(self, request).
return request["text"].
def predict(self, text).
input = self.tokeniser(text, return_tensors="pt").to(self.model.device)
outputs = self.model(**inputs)
return outputs.last_hidden_state.mean(dim=1).tolist()
def encode_response(self, outputs): {"embedding": outputs.last_hidden_state.mean(dim=1.tolist)
return {"embedding": output}.
server = ls.LitServer(BertLitAPI(), accelerator="auto")
server.run(port=8000)
- うごきだすスクリプト実行後
http://127.0.0.1:8000/predict
. - 試験::
curl -X POST "http://127.0.0.1:8000/predict" -H "Content-Type: application/json" -d '{"text": "こんにちは、世界!"}'
6.LLM推論を展開するためのvLLMの統合
大規模言語モデルのための効率的な推論
ls として litserve をインポートする
から ヴルム インポート LLM
class LLMLitAPI(ls.LitAPI): def setup(self, device).
def setup(self, device): self.model = LLM(model="meta-llama/Llama-3.2-1B")
self.model = LLM(model="meta-llama/Llama-3.2-1B", dtype="float16")
def decode_request(self, request):
return request["prompt"].
def predict(self, prompt).
outputs = self.model.generate(prompt, max_tokens=50)
return outputs[0].outputs[0].text
def encode_response(self, output): return {"response": outputs[0].
return {"response": output}.
server = ls.LitServer(LLMLitAPI(), accelerator="auto")
server.run(port=8000)
- vLLMのインストール::
pip install vllm
. - 試験::
curl -X POST "http://127.0.0.1:8000/predict" -H "Content-Type: application/json" -d '{"prompt": "AIとは何ですか?"}'
7.APIドキュメントを見る
- 操作説明アクセス
http://127.0.0.1:8000/docs
インタラクティブテスト推論サービス。 - 機能のヒントOpenAPI標準に基づき、すべてのエンドポイントの詳細を含む。
8.ホスティング・オプション
- 自ホストローカルまたはサーバー上でコードを実行します。
- クラウドホスティングLightning Studios経由でデプロイされ、アカウント登録が必要。ロードバランシング、オートスケーリングなどを提供。
操作のヒント
- テスト中にコンポーネントを調整する設定
タイムアウト=60
推論のタイムアウトを避ける。 - ログトラブルシューティングのために、起動時のターミナルログをチェックしてください。
- 最適化認証やDockerデプロイなどの高度な機能を有効にするには、公式ドキュメントを参照してください。
LitServeは、推論サービスの迅速な展開と最適化を通じて、プロトタイピングからエンタープライズクラスのアプリケーションまで、あらゆるプロセス要件をサポートします。