
こんにちは。SB C&S の村上です。
この記事では推論システムを最適化するソフトウェアであるNVIDIA Dynamoの概要について紹介します。
なお本記事はNVIDIA Dynamo連載の第1回になります。
第1回と第2回では製品概要や機能の紹介、第3回以降では実際に動かしてみた際の流れを紹介しています。
【連載①】NVIDIA Dynamo 紹介:概要編 ←本記事
【連載②】NVIDIA Dynamo 紹介:3つの最適化機能
※以下近日公開
【連載③】NVIDIA Dynamo 紹介:Dynamoを用いた推論の実行
【連載④】NVIDIA Dynamo 紹介:KV Cache-Aware Routingを用いたルーティング最適化
【連載⑤】NVIDIA Dynamo 紹介:Disaggregated Servingを用いた分散推論
【連載⑥】NVIDIA Dynamo 紹介:KVBM / KV Cache Offloadingを用いたKVキャッシュの効率化
推論システムに求められること
昨今LLMの活用が急速に広がり、推論処理の重要性がこれまで以上に高まっています。
その中で推論システムに求められるのは、単にモデルを動かすことだけではありません。実運用では、「高効率」「低遅延」で「長文対応」の3つを高い水準で満たすことが求められています。
まず高効率とは、限られたGPUリソースを無駄なく活用し、多くのリクエストを安定して処理できることです。推論需要が増える中でハードウェア性能を効率よく使えることはコストと処理能力の両面で重要です。
次に低遅延は、ユーザーからの入力に対して素早く応答を返すために欠かせない要件です。とくにチャット形式のAIのような対話型のアプリケーションでは、応答が少し遅れるだけでもユーザーの体感的な品質に大きく影響を与えます。
さらに、実際の利用シーンでは長いプロンプトや大量の会話履歴、関連文書を入力する場面も少なくありません。そのため、長文対応も推論システムにおける重要な要素になります。
一方で、これら3つを同時に実現するのは容易ではありません。
例えば、既存の負荷分散の仕組みでは、LLM特有の処理特性やKV Cacheの再利用まで十分に考慮しきれず、GPUリソースを効率よく使えていない場合があります。また、複数の推論処理が同時に実行されると処理の詰まりが発生し、初期応答が遅くなることもあります。加えて、長文コンテキストを扱う場合には、KV CacheがGPUメモリを大きく消費し、結果として扱える入力長そのものに制約が生じるケースもあります。

もちろん、こうした課題に対してはハードウェアそのものを増やし、使えるリソースを増やすという方法もあります。
ただし、それだけが最適解とは限りません。限られたリソースをより効率的に使い、ソフトウェアの工夫によって推論性能を引き上げることも重要となっています。
その推論性能を引き上げるソフトウェアがNVIDIA Dynamoです。
NVIDIA Dynamoとは
NVIDIA Dynamoは、LLM推論システムの最適化を実現するためのソフトウェアです。
まずDynamoは、推論APIやリクエスト制御、推論エンジンとの連携など、推論システムに必要な機能をまとめて備えています。つまり、Dynamoは実際の推論システムを構成するための土台として利用できます。
そのうえで、Dynamoには推論処理の効率を上げるためのさまざまな最適化機能が備わっています。この最適化機能がDynamoの一番の特徴となっており、これにより推論システムで求められる「高効率」「低遅延」「長文対応」といった要件を実現します。GPUリソースの使い方を工夫しながら、リクエスト処理の偏りや待ち時間を抑えることで高い性能を引き出すようにしています。
さらにDynamoは推論を実行するだけでなく、推論基盤全体の設計や運用を支援する機能も備えています。例えばPlanner、AI Configurator、Profilerなどといった機能があり、Kubernetes環境を含むシステム構成の検討や運用設計をサポートします。
ここからはDynamoの推論の仕組みや最適化機能について紹介していきます。
Dynamoの推論システム
Dynamoは、推論システムとして必要な機能を一通り備えています。
構成としては、まずリクエストを受け付けるFrontendと受け取ったリクエストから推論処理を実行するBackendの2つに分かれています。
FrontendではOpenAI互換のAPIを提供し、外部からのリクエストを受け付けます。受け取ったリクエストはRequest Routerという機能によってBackendに振り分けを行っています。その後、Backendでは推論エンジンによって実際の推論処理を行います。ここで用いられる推論エンジンは既存のvLLM、SGLang、TensorRT-LLMなどを選択可能です。
このように、Dynamoを利用しても特別に複雑な構成になるわけではなく、推論処理そのものは従来の推論システムに近い形で提供されます。そのため、既存の推論基盤を理解していれば、全体像も掴みやすい構成になっています。
また、Dynamoは通常のLLM推論で求められる機能にも対応しています。例えば、LoRA Adapterの切り替えやキャッシュ、OpenAI互換のfunction calling / tool calling、画像・動画・音声を含むマルチモーダル推論にも対応可能です。対応範囲は利用する推論エンジンによって異なりますが、既存推論エンジンの機能は維持しながら、推論システムを構築できます。
さらに、Dynamoは必ずしもシステム全体を置き換える形で導入する必要はなく、Frontendの中から、Request Routerのみを切り出して利用する構成も可能です。これにより、既存のAPI基盤や推論パイプラインを維持しながら、Dynamoの仕組みを部分的に組み込むことができ、すでに運用中のシステムがある場合でも、導入しやすくなっています。
このようにDynamoは、推論システムとしてそのまま利用できる機能を備えつつ、既存環境にも柔軟に組み込める構成を持っています。そのうえで、後続で説明するDynamoの各最適化機能によって、推論システム全体の効率や応答性をさらに高められるようになっています。
推論システムの最適化機能
ここからは、Dynamoの中核ともいえる推論システムの最適化機能について紹介します。
推論では単にGPU上でモデルを動かすだけではなく、どのリクエストをどこに振り分けるか、どの処理をどのリソースで実行するか、そして限られたGPUメモリをどのように使うかの考慮によってシステム全体の効率や応答性能が大きく変わります。特にLLMにおいては、KV Cacheの存在によってより顕著になります。
LLMの推論では、一般的にPrefillとDecodeという2つの処理が行われます。Prefillは入力されたプロンプトをまとめて読み込み、回答生成のための初期計算を行う処理です。一方Decodeは、その結果を使いながらトークンを1つずつ生成していく処理です。
このときPrefillでは、後続のDecodeで利用するための中間データとしてKV Cacheが作られます。KV CacheはGPUメモリ上に保持され、似た文脈や共通の入力に対する計算を再利用するために使われます。一方で、KV CacheはGPUメモリを大きく消費するため、その保持場所や再利用のさせ方によって、システム全体の効率や応答性能が大きく変わります。
そのため、LLM推論では個々のモデル実行だけでなく、KV Cacheの再利用や配置も含めて、推論システム全体を最適化することが重要になります。
そこでDynamoでは推論システム全体の構成や制御を最適化するための複数の機能を提供しています。
代表的な機能は以下3つとなります。
- KV Cache-Aware Routing
- LLMに特化した負荷分散の仕組みによる最適化
- 計算済みのKV Cacheの配置や再利用を考慮しながら、適切な推論先へリクエストを振り分ける
- Disaggregated Serving
- 推論処理を分離することによる最適化
- LLMの推論処理であるPrefillとDecodeを別々のWorkerで実行し、フェーズごとの干渉を抑える
- KVBM / KV Cache Offloading
- KV CacheをGPU以外のリソースへ格納することによる最適化
- KV Cacheをシステムメモリやストレージへ退避させることでGPUメモリの圧迫を緩和
これらの機能はそれぞれ独立しており、個々で有効化し、組み合わせて使うことも可能です。
なお、冒頭で記載した課題に照らし合わせると、以下のようなマッピングとなります。現在の推論システムの課題それぞれに対して、適切な最適化機能が提供されています。
各機能の詳細は第2回の記事にてご紹介させていただきます。
Dynamoの提供形態
最後にDynamoの提供形態について紹介します。
まずDynamoは以下3つの提供方式があります。
- コンテナ
- 最も手軽な導入方式
- PoCや単体検証向け
- Kubernetes
- 分散構成や本番運用に適した方式
- 大規模展開・運用自動化向け
- PyPI
- Python環境へ直接導入できる方式
- 開発・検証用途や独自のコンテナイメージの作成向け
コンテナで必要なコンテナイメージやKubernetes環境で使用するOperatorはNVIDIAのホストするNGCから取得できます。注意点としては推論エンジンごとで使うコンテナイメージが異なるため、必要に応じて選択が必要です。
https://catalog.ngc.nvidia.com/orgs/nvidia/ai-dynamo/collections/ai-dynamo
PyPIはPythonパッケージとしてDynamoが提供されており、Pythonのパッケージマネージャーからダウンロードする形式になります。
なお、サポートされるOSやGPUなどは都度更新される可能性があるため、公式ドキュメントをご参照ください。CUDAのサポートバージョンに関しては、公式のDynamoコンテナイメージを使う場合は同梱されますが、PyPIを使う場合は利用者側で互換性を考慮する必要がある点はご注意下さい。
https://docs.nvidia.com/dynamo/dev/resources/support-matrix
まとめ
本記事ではNVIDIA Dynamoの概要を紹介しました。
推論の需要が高まる中、推論システムにはこれまで以上に高効率・低遅延・長文対応といった要件が求められています。これらに対して、単にGPUリソースを増やすだけでなく、推論システム全体をどのように最適化するかが重要です。
そこでDynamoは、既存の推論エンジンを活かしながら、ルーティングや処理分離、KV Cache管理などの仕組みにて、推論システム全体の最適化を実現しています。
推論システムの選択肢の1つとしてDynamoは有効かと考えます。
連載2つ目の記事では3つの最適化機能によりフォーカスしてご紹介します。
【連載②】NVIDIA Dynamo 紹介:3つの最適化機能
NVIDIAに関する情報発信はこちら
著者紹介
SB C&S株式会社
ICT事業本部 技術本部 第1技術統括部
第2技術部 1課
村上 正弥 - Seiya.Murakami -
VMware vExpert
