SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

【連載②】NVIDIA Dynamo 紹介:3つの最適化機能

AI
2026.08.26

こんにちは。SB C&S の村上です。

この記事ではNVIDIA Dynamoに搭載されている3つの推論最適化機能について紹介します。

なお本記事はNVIDIA Dynamo連載の第2回になります。
第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キャッシュの効率化

推論システム最適化の重要性

第1回でも紹介した内容ですが、ここで改めて推論システム最適化の重要性について振り返ります。

推論では単に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では推論システム全体の構成や制御を最適化するための機能を提供しています。

  • KV Cache-Aware Routing
    • LLMに特化した負荷分散の仕組みによる最適化
    • 計算済みのKV Cacheの配置や再利用を考慮しながら、適切な推論先へリクエストを振り分ける
  • Disaggregated Serving
    • 推論処理を分離することによる最適化
    • LLMの推論処理であるPrefillDecodeを別々のWorkerで実行し、フェーズごとの干渉を抑える
  • KVBM / KV Cache Offloading
    • KV CacheGPU以外のリソースへ格納することによる最適化
    • KV Cacheをシステムメモリやストレージへ退避させることでGPUメモリの圧迫を緩和

dynamo_02_optimize_01.png

これらの機能はそれぞれ独立しており、個々で有効化し、組み合わせて使うことも可能です。
以降では、それぞれの最適化機能について詳しく見ていきます。

最適化機能①: KV Cache-Aware Routing

Dynamoの最適化機能の1つが、KV Cache-Aware Routingです。
これは、KV Cacheの再利用を考慮しながら、リクエストを最適なWorkerへ振り分ける仕組みです。

LLM推論では、長いシステムプロンプトや会話履歴、共通の入力プレフィックスを持つリクエストが多く発生します。こうしたリクエストでは、Prefill時に計算されたKV Cacheを再利用できれば、同じ計算を繰り返さずに済み、推論をより効率よく実行できます。

しかし、従来の単純な負荷分散では、リクエストをRound Robinのように各Workerへ均等に振り分けることが多いです。この場合、たとえ似たようなリクエストであっても別のWorkerへ分散されてしまい、それぞれのWorkerで同じPrefillの計算を実行することになります。結果として、KV Cacheを十分に再利用できず、計算の重複が発生してしまいます。

そこでDynamoのKV Cache-Aware Routingでは、どのWorkerにどのKV Cacheが存在しているかを考慮したうえで、類似したリクエストをできるだけ同じWorkerへ集約します。これにより、すでに計算済みのKV Cacheを再利用しやすくなります。

dynamo_02_optimize_02.png

この仕組みによって、GPUリソースを効率よく使いつつ、スループットの向上や応答性能の改善が期待できます。特に、共通のシステムプロンプトを使うチャットボットや、似た文脈を持つリクエストが継続的に発生するワークロードで効果的です。

最適化機能②: Disaggregated Serving

Dynamoの2つ目の代表的な最適化機能が、Disaggregated Servingです。
これは、LLM推論のPrefillとDecodeを分離し、それぞれに適したWorkerで処理する仕組みです。

LLM推論では、入力文をまとめて読み込むPrefillと、トークンを1つずつ生成していくDecodeでは、処理の特性が大きく異なります。Prefillは長い入力を一気に処理するため計算負荷が重くなりやすく、一方のDecodeは逐次的な処理で応答が遅延しないことが重要になります。

従来は、これら2つの処理を同じWorker上で実行することが一般的です。しかしその場合、重いPrefill処理が実行されると、Decode処理に干渉しトークン生成の待ち時間が増えることがあります。特に長文入力を扱う場面では、この干渉が初期応答や生成中の遅延に繋がります。

そこでDynamoのDisaggregated Servingは、LLM推論を単一の処理としてまとめて扱うのではなく、PrefillとDecodeを別々のWorkerに分離して実行させることで最適化します。これにより、重いPrefill処理がDecode側へ干渉しにくくなり、それぞれの処理特性に応じてリソースの使い分けを最適化しています。
フェーズ間の干渉が減ることでDecode側はトークン生成に集中しやすくなり、低遅延化が期待できます。また、Prefill側もまとまった入力処理に専念できるため、システム全体としてのスループット向上も期待できます。
また、PrefillとDecodeを分けることにより、どちらかのGPUリソースが不足した場合も、片方のWorkerを増やすことで解消できるようになります。

dynamo_02_optimize_03.png

また、PrefillとDecodeのそれぞれのWorkerの数を柔軟に変更することも可能です。例えばDecode側の処理が追いついていない場合は、Decode側のWorkerだけ増やすといったことも可能です。

dynamo_02_optimize_04.png

最適化機能③: KVBM / KV Cache Offloading

Dynamoの3つ目の代表的な最適化機能が、KVBM (KvBlockManager) / KV Cache Offloadingです。
これは、KV CacheをGPUメモリだけで保持するのではなく、GPU外へ退避して管理することで、長文対応とメモリ効率を高める仕組みです。

LLM推論では、入力が長くなるほどKV Cacheの使用量も増加します。複数のリクエストを同時に処理する場合には、それぞれでKV Cacheを保持する必要があり、GPUメモリの消費はさらに増えます。とくに、すぐには使わないKV CacheまでGPU上に載せ続けてしまうと、推論計算に使いたいメモリまで圧迫してしまいます。
このようにKV CacheがGPUメモリを圧迫した結果、扱えるコンテキスト長や同時処理数に制約が発生しやすいです。

そこでDynamoではKVBMの機能によって、使っていないKV CacheをGPU外へ退避できるようにしています。GPU上には今すぐ必要なKV Cacheを優先して残し、使用頻度の低いデータは外部メモリやストレージへ退避します。これによりGPUメモリの圧迫を緩和しながら、より長いコンテキストや同時リクエストに対応できます。

dynamo_02_optimize_05.png

厳密には、DynamoのKVBMではKV Cacheを単純にGPU外へ逃がすだけでなく、複数のメモリ階層を使って管理します。具体的には、最も高速に参照できるGPUメモリを起点として、システムメモリ、ローカルディスク、リモートストレージといった領域に、段階的にKV Cacheを退避できる仕組みになっています。

これにより、システム全体のリソースを活用し、KV Cacheを効率よく管理できるようになっています。

dynamo_02_optimize_06.png

まとめ

本記事では、NVIDIA Dynamoが提供する3つの推論最適化機能について紹介しました。

KV Cache-Aware Routingでは、KV Cacheの配置や再利用を考慮してリクエストを振り分けることで、重複する計算を減らし、推論処理の効率化を行っています。
Disaggregated Servingでは、Prefill/Decodeの処理を別々のWorkerに分離することで処理同士の干渉を抑え、それぞれの特性に応じてリソースを柔軟に割り当てられるようになります。
KVBM/KV Cache Offloadingでは、KV CacheをGPUメモリだけでなくメモリやストレージへ退避させることでGPU メモリの圧迫を緩和し、より長いコンテキストや多くの同時リクエストへの対応を可能としています。

次回以降は、実際にDynamoを動かして、推論の構成や各最適化機能の使い方について紹介していきます。

NVIDIAに関する情報発信はこちら

著者紹介

SB C&S株式会社
ICT事業本部 技術本部 第1技術統括部
第2技術部 1課
村上 正弥 - Seiya.Murakami -

VMware vExpert