概要:
vLLM は、大規模言語モデル (LLM) の推論とサービス提供のための、高スループットかつ効率的な Python ライブラリです。 LLM のデプロイを簡素化し、推論速度を大幅に向上させながら、コストを削減することを目的としています。 vLLM は、優れたパフォーマンスを実現するために、メモリ管理とスケジューリングの最適化に重点を置いています。
主な特徴:
PagedAttention: vLLM の核となる革新は、PagedAttention アルゴリズムです。 従来の注意機構では、各トークンに対して過去のすべてのキーと値を保存する必要があり、特に長いシーケンスでは、メモリ占有量が膨大になります。 PagedAttention は、注意キーと値をページに分割し、オペレーティングシステムの仮想メモリページングに似ています。 これにより、vLLM は注意メモリを動的に管理および共有できるため、メモリの浪費を大幅に削減し、より長いシーケンスとより大きなバッチサイズをサポートできます。
連続バッチ処理: vLLM は連続バッチ処理をサポートしており、異なるリクエストからのトークンを動的に組み合わせて、1つのバッチとして処理できます。 これにより、GPU リソースを最大限に活用し、スループットを向上させます。
効率的な CUDA カーネル: vLLM は、PagedAttention およびその他の操作を実装するために、高度に最適化された CUDA カーネルを使用します。 これらのカーネルは、GPU の並列処理能力を最大限に活用するように設計されています。
使いやすさ: vLLM は、既存の LLM アプリケーションに簡単に統合できる、シンプルで使いやすい Python API を提供します。 また、Hugging Face Transformers などの一般的な LLM フレームワークもサポートしています。
多様なモデルアーキテクチャのサポート: vLLM は、以下を含むさまざまな一般的な LLM アーキテクチャをサポートしています。
分散推論: vLLM は分散推論をサポートしており、複数の GPU にわたって LLM 推論を拡張できます。
テンソル並列: テンソル並列をサポートし、分散推論のパフォーマンスをさらに向上させます。
ストリーミング出力: vLLM はストリーミング出力をサポートしており、トークンが生成されるとすぐに、シーケンス全体が完了するのを待たずに受信できます。
OpenAI API 互換性: vLLM は OpenAI API と互換性のあるサーバーを提供し、OpenAI からの移行や統合を容易にします。
主な利点:
インストール:
vLLM は pip を使用してインストールできます。
pip install vllm
クイックスタート:
以下は、vLLM を使用してテキストを生成する簡単な例です。
from vllm import LLM, SamplingParams
# モデルのロード
llm = LLM(model="facebook/opt-125m")
# サンプリングパラメータの定義
sampling_params = SamplingParams(temperature=0.8, top_p=0.95, max_tokens=256)
# テキストの生成
prompts = ["Hello, my name is", "The capital of France is"]
outputs = llm.generate(prompts, sampling_params)
# 出力のプリント
for output in outputs:
print(output.prompt)
print(output.outputs[0].text)
ユースケース:
vLLM は、以下を含むさまざまな LLM アプリケーションに適しています。
貢献:
vLLM はオープンソースプロジェクトであり、コミュニティからの貢献を歓迎します。 問題の提出、機能リクエストの提案、またはプルリクエストの送信を通じて参加できます。
まとめ:
vLLM は、優れたパフォーマンス、使いやすさ、および柔軟性を提供する強力な LLM 推論・サービスエンジンです。 チャットボットの構築、テキストの生成、またはその他の LLM タスクの実行に関係なく、vLLM は効率を向上させ、コストを削減するのに役立ちます。 その PagedAttention メカニズムは、その核となる革新であり、長いシーケンスを処理し、高いスループットを実現することを可能にします。 vLLM を試して、LLM ワークフローをどのように改善できるかを確認することを強くお勧めします。