vLLM とは何か
vLLM とは、仮想大規模言語モデルの略で、vLLM コミュニティによって維持管理されているオープンソースコードのライブラリです。vLLM は大規模言語モデル (LLM) がより効率的かつ大規模に計算を行う上で役立ちます。
具体的には、vLLM は GPU メモリをより有効に活用することで、生成 AI アプリケーションの出力を高速化する推論サーバーです。
vLLM の仕組み
vLLM の価値を理解するためには、まずは推論サーバーが何を行うのか、そして、LLM が動作する基本的な仕組みを理解することが重要です。これらを理解しておくことで、既存の言語モデルのパフォーマンスを向上させるために vLLM がどのような役割を果たすかがよくわかります。
推論サーバーとは何か
推論サーバーとは、AI モデルが過去のトレーニングに基づいて新しい結論を導き出すのを支援するソフトウェアです。推論サーバーは、入力リクエストを機械学習モデルに送り、出力を返します。
推論とは、証拠に基づいて結論を導き出すことです。たとえば、友人の家のリビングルームに明かりがついているものの、友人の姿は見当たらないとします。あなたは友人が家にいると推測できます。しかし、それを証明する絶対的な証拠はありません。
言語モデルも単語やフレーズの意味について絶対的な証拠は持っていません (言語モデルはソフトウェアです)。そこで、トレーニングを証拠として使用します。モデルはデータに基づく一連の計算を通じて結論を導き出します。これはあなたが、明かりが消えていることは友人が外出していることを意味する、と推測するのと同じです。
LLM は結論を導き出すために数学を使用
LLM はトレーニング中に、数学的計算を通じて学習します。また LLM が回答 (推論) を生成するときも、(より数学的な) 一連の確率計算が行われます。
LLM がユーザーの要求を理解するためには、単語同士がどのように関係しており、単語間の関連付けをどのように行うかを、モデルが理解している必要があります。人間のように意味を学習し、言葉を使って推論する代わりに、LLM による「論理的思考」では (ご想像どおり) 数学が使用されます。
LLM が 1 日数百万人ものユーザーに対応する場合、実行される計算の量は膨大です。アプリケーションの稼働中に、これらの計算をすべて即座に処理するのは困難です。これは (従来の手法では)、LLM の稼働に必要な処理能力により、大量のメモリが急速に消費されてしまうためです。
Red Hat の AI
vLLM は計算を効率化するために PagedAttention を使用
画期的な研究である「PagedAttention による大規模言語モデルの効率的なメモリ管理」は、既存の LLM メモリ管理システムでは計算を最も効率的な方法で整理できていないことを指摘しています。PagedAttention は、vLLM により導入されたメモリ管理手法で、オペレーティングシステム内の仮想メモリとページングシステムから着想を得ています。
この研究では、スループット中にキー値 (KV) キャッシュ (LLM の短期メモリ) がどのように拡大縮小するかを把握した上で、より安定した方法でメモリ空間と演算能力を管理するためのソリューションとして vLLM を提案しています。
本質的に vLLM は、ユーザーの応答を連続的に「バッチ処理」することでショートカットを作成するよう KV キャッシュに促す、一連の命令として機能します。
先に進む前に、KV キャッシュおよび連続バッチ処理とは何かを簡単に定義しておきましょう。
KV キャッシュとは何か
KV はキー値 (Key Value) の略語です。キー値とは、LLM が単語やフレーズの意味を定式化する方法を指します。たとえば、あるメニュー表の項目で、フライドポテト (キー) が 3.99 ドル (値) であるとします。店員がフライドポテトの注文をレジに通すと、その「キー」の「値」は 3.99 ドルで計算されます。LLM による KV の処理では、同じように、各キー (トークン) に対応する値がキャッシュに保持されています。
キャッシュとは、短期的なメモリストレージを指します。パソコンを思い浮かべてください。動作が遅くなってきた場合は、多くの人が、処理を高速化するために「キャッシュをクリア」しているはずです。
連続バッチ処理とは何か
連続バッチ処理は、全体的な処理効率を向上させるために、複数のクエリを同時に処理する手法です。
想像してみてください。あるチャットボットは毎分数千件ものクエリを受け取りますが、その多くは「インドの首都はどこか」、「アイルランドの首都はどこか」といった類似した内容です。どちらのクエリにも「の首都はどこか」という語が含まれており、これは LLM が意味を生成するために多くの計算を行わなければならないトークン文字列 (単語) です。
vLLM を使用する場合、チャットボットはこのトークン文字列 (「の首都はどこか」) を短期メモリ (KV キャッシュ) に保持でき、2 つの個別の「変換要求」ではなく、1 つの要求のみを送信します。
言い換えれば、vLLM を使用すると、まったく新しい回答を生成する代わりに、KV キャッシュに記憶を保持しておき、以前に行った計算と類似した新しいクエリのためのショートカットを作成できます。類似するクエリの計算を (個別にではなく) まとめて行うことで、スループットが向上し、メモリ割り当てが最適化されます。
vLLM は組織にどのように役立つか
vLLM は、LLM ベースのアプリケーションに必要なハードウェアの価格が市場で高騰する中、組織が「少ないコストでより多くを達成する」ことを可能にします。
コスト効率に優れた信頼性の高い LLM サービスを構築するには、膨大な演算能力、エネルギー資源、そして専門的な運用スキルが必要です。これらの課題は、カスタマイズされ、すぐにデプロイでき、よりセキュリティが重視された AI のメリットを、多くの組織にとって手の届かないものにしてしまいます。
vLLM と、その基盤となるアルゴリズムである PagedAttention は、AI ワークロードをサポートするために必要なハードウェアの使用を効率化することで、これらの課題に対処することを目指しています。
vLLM のメリット
vLLM を LLM 用の推論サーバーとして使用すると、次のようなメリットを得られます。
応答時間の短縮:ある試算によると、vLLM は、LLM を操作するための人気の高いオープンソース・ライブラリである Hugging Face Transformers と比較して、最大 24 倍のスループット (LLM が処理可能なデータ量) を達成できます。
ハードウェアコストの削減:リソースをより効率的に使用することで、LLM の処理に必要な GPU が減少します。
スケーラビリティ:vLLM は仮想メモリを整理し、GPU がユーザーからの同時リクエストをより多く処理できるようにします。
データプライバシー:vLLM を使用して LLM をセルフホスティングすると、ChatGPT のようなサードパーティの LLM サービスやアプリケーションを利用する場合と比較して、データプライバシーや使用方法をより細かく制御できます。
オープンソース・イノベーション:vLLM の維持管理にコミュニティが関与しているため、コードの一貫した改善が可能になります。ユーザーがコードにアクセスして修正する仕組みに透明性があり、開発者はニーズに合わせて vLLM を自由に使用できます。
vLLM が LLM のパフォーマンス向上の標準になりつつある理由
PagedAttention は、vLLM から生まれた主要なアルゴリズムです。ただし、PagedAttention は vLLM が提供する唯一の機能ではありません。vLLM が提供するその他のパフォーマンス最適化機能には、以下のようなものがあります。
- PyTorch Compile/CUDA Graph - GPU メモリを最適化します。
- 量子化 - モデルの実行に必要なメモリ容量を削減します。
- テンソル並列処理 - 複数の GPU 間で処理を分散させます。
- 投機的デコーディング - トークンの予測に小さいモデルを使用し、予測の検証に大きいモデルを使用することで、テキスト生成を高速化します。
- Flash Attention - Transformer モデルの効率を改善します。
vLLM が提供する最適化機能に加えて、その柔軟性も vLLM の人気を後押ししています。vLLM は、小規模および大規模の言語モデルの両方に対応しており、人気の高いモデルやフレームワークとの統合も可能です。さらに vLLM のオープンソースの性質が、コードの透明性、柔軟なカスタマイズ、迅速なバグ修正に寄与しています。
LoRA と QLoRA はどちらもリソース効率の高いファインチューニング技法です。この技法を使うことで、コストとコンピュートリソースを最適化できます。
オープンソース方式で AI を管理
Red Hat® AI ポートフォリオは、大規模なエンタープライズ AI の課題に対応するため、オープンソースのイノベーションを活用しており、vLLM は Red Hat のツールボックスに欠かせないツールです。
vLLM は、Red Hat® OpenShift® AI が提供する多数の推論ランタイムの 1 つです。
OpenShift AI は、AI 対応アプリケーションを構築、デプロイ、管理するためのツールを備えた柔軟でスケーラブルな MLOps プラットフォームです。OpenShift AI は、オンプレミスとパブリッククラウドの両方で、AI/ML の実験およびモデルのライフサイクル全体をサポートします。