大規模な言語モデル(LLM)をスケールで提供することは複雑である。現代のLLMは、単一のGPUや単一のマルチGPUノードのメモリおよび計算能力を超えている。そのため、70B以上や120B以上のパラメータモデル、または大きなコンテキストウィンドウを持つパイプラインの推論ワークロードは、マルチノードの分散GPU展開を必要とする。
この課題は、推論スタックにおける革新を生み出している。そこで登場するのがDynamoである。Dynamoは、分散推論のためのオープンソースフレームワークであり、GPUやノード間の実行を管理する。推論をプレフィルやデコードなどのフェーズに分割し、メモリバウンドタスクとコンピュートバウンドタスクを分離する。また、GPUリソースを動的に管理し、使用率を向上させ、レイテンシを低く保つ。
Dynamoは、インフラチームが推論能力を柔軟にスケールさせ、需要の急増に対応しつつ、高価なGPUリソースを恒久的に過剰に配備することなく管理できるようにする。このフレームワークは、あらゆる推論エンジンと連携可能であり、TensorRT-LLM、vLLM、SGLangなどをサポートしている。これにより、組織は技術選択において柔軟性を持つことができる。
マイクロソフト社のAzureとNVIDIA社は最近、オープンソースのNVIDIA Dynamoフレームワークを紹介するために協力した。このコラボレーションは、分散化、スマートキャッシング、動的リソース割り当てがKubernetes上で高性能なAIワークロードを効率的に実行できることを示した。最近の報告書では、著者たちがKubernetesクラスター(AKS)上でDynamoをどのように使用したかが詳述されている。このセットアップは、72の緊密に統合されたNVIDIA Blackwell GPUを搭載した特別なラックスケールのVMインスタンス、ND GB200-v6上で動作する。
彼らはこのセットアップを使用して、テスト済みの「InferenceMAX」レシピを用いてオープンソースの120BパラメータモデルであるGPT-OSS 120Bを実行。このセットアップは、1秒あたり120万トークンを達成し、Dynamoが通常のクラスター上でエンタープライズレベルの推論タスクを処理できることを示した。
この展開では、GPUノードプール、Dynamo用のHelm、オーケストレーションのためのKubernetesなどの標準的なクラウドネイティブツールが使用された。これにより、組織はカスタムインフラを必要とせずにDynamoの利点を享受できることが示された。
Dynamoの核心的な革新は、LLM推論のプレフィルとデコードフェーズをGPU間でディスアグリゲート(分離)することにある。入力コンテキストを処理するプレフィルフェーズは計算集約型であり、出力トークンを生成するデコードフェーズはメモリバウンドである。これらのフェーズを分離することで、それぞれを異なるGPU数や並列処理戦略で独立して最適化できる。
このアーキテクチャの選択は、推論ワークロードにおける一般的な問題を解決。例えば、パーソナライズされた商品推薦を作成するeコマースアプリでは、ユーザーや商品コンテキストのために数千のトークンを処理する(重いプレフィル)が、生成するのは短い50トークンの説明(軽いデコード)にとどまる。この2つのタスクを同じGPUで実行すると、リソースが無駄になる。分離されたサービングでは、プレフィル用のGPUが計算集約型のタスクを処理し、デコード用のGPUはメモリ帯域幅と容量に集中する。
このフレームワークは、変化する需要に適応する動的なGPUスケジューリング機能を備えている。これにより、推論システムはリアルタイムのトラフィックに基づいてリソースをスケールさせることができる。SLAに基づくPlannerコンポーネントは、時系列データを使用してトラフィックを予測する。これにより、プレフィルとデコードの作業者間でGPUの割り当てを調整し、初回トークンまでの時間やトークン間レイテンシなどのレイテンシ目標を達成。
トラフィックの急増時には、システムはデコードからプレフィル操作にGPUを再割り当て、追加のリソースを立ち上げることができる。負荷が減少すると、リソースは再び縮小される。このスケールの柔軟性により、組織はハードウェアを過剰に投入することなく、サービスレベル目標を達成できる。
Dynamoには、GPUクラスター全体のキー・バリュー(KV)キャッシュの位置を追跡するLLM対応のルーターが含まれている。リクエストが到着すると、ルーターは新しいリクエストとキャッシュされたKVブロックとの重複を計算し、キャッシュの再利用を最大化できるGPUにトラフィックを誘導する。このアプローチは、特に複数のリクエストが共通のコンテキストを共有する場合に、冗長な計算を削減するのに有効。
メモリ管理のために、KVブロックマネージャーはあまりアクセスされないキャッシュブロックをCPUのRAM、SSD、またはオブジェクトストレージに移動させる。このキャッシング手法により、キャッシュストレージをペタバイト規模にスケールさせ、再利用を効率的に保つことができる。オフロードを行わない場合、GPUあたりの同時セッション数が増えると、エビクションや高コストの再計算が発生する可能性がある。一方、オフロードを行うことで、GPUはより多くのユーザーを処理しつつ、レイテンシを低く保つことができる。
Dynamoは、NVIDIA Triton Inference Serverの後継として位置付けられ、以前の推論サービングフレームワークから得た教訓を取り入れている。パフォーマンスのためにRustで構築され、拡張性のためにPythonが使用されており、このプロジェクトはGitHub上で完全にオープンソースである。