長文LLMはAttention設計で速くなる。prefillとdecodeを分けるNVIDIAの4原則

長文token streamがAttention engineへ入り、GPU計算tileとKV cache memoryへ分かれる仕組みを示す概念図
prefillとdecodeを別々のbottleneckとして扱うAttention co-designをAICompanyが独自に再構成した画像

128K contextを使えるLLMでも、長いpromptを入れた瞬間に軽快さが消えることがあります。

NVIDIAが2026年8月1日早朝に公開した公式技術記事では、DeepSeek-R1のprefill時間に占めるAttentionの比率が、4K contextの18%から128Kでは85%まで上昇しました。長文になるほど、Attentionは脇役ではなく主犯になります。GPUに怒られてから設計を見直すのでは、少し遅いわけです。

楽天最安値を一発検索!価格ナビで今すぐチェック!

重要なのは、Attentionを一つの処理として最適化しないことです。promptを一括処理するprefillと、1 tokenずつ生成するdecodeでは、詰まる場所が違います。

古い問題。prefillとdecodeを同じ速さの話にしていた

prefillは入力tokenをまとめて処理します。計算量が大きく、GPUの行列演算能力がbottleneckになりやすい処理です。

decodeは次の1 tokenを作るたびにKV cacheを読みます。行列は小さい一方、長いcontextのkeyとvalueをHBMから運ぶため、memory bandwidthがbottleneckになります。

同じAttentionでも、prefillはcompute-bound、decodeはmemory-boundです。だからkernelやGPUを一つの処方箋として扱うだけでは足りません。

中心原理。Q headを増やすよりKV headを共有する

NVIDIA記事の一つ目の軸はgroup size、記号ではGです。これは1本のKV headを何本のquery headで共有するかを表します。

query headが64本あるmodelでGが8ならKV headは8本です。Gを16にするとKV headは4本になります。

decodeでは、KV headが少ないほど1 token生成時に読み込むKV cacheが減ります。記事の式ではdecodeのarithmetic intensityはおおよそ2掛けるGです。Gを1から8へ上げると、memory trafficを減らしながら計算密度を8倍へ上げられます。

測定でも、decode runtimeはGを倍にするごとに概ね半分になりました。一方、prefillはGを1から64まで変えてもruntime差が1%未満です。

第一原則は明快です。decodeを重視するならGを大きくする。ただし、これは推論速度の話です。KV headを減らしてもmodel品質が変わらないとは、この記事は証明していません。

多数tokenを並列計算するprefillと、KV cacheを読みながら1 tokenずつ生成するdecodeの比較図
compute-boundなprefillとmemory-boundなdecodeの違いをAICompanyが独自に再構成した図

head dimensionは大きければよいわけではない

二つ目の軸はhead dimensionです。

NVIDIAは128または256を効率的な選択肢として挙げています。64ではGPUの128-wide tileを使い切れず、実質的に128幅の費用を払います。逆に512以上はTensor Memoryの容量上限へ近づきます。

さらにGPUは128-byte単位のmemory accessを得意とします。head dimensionをhardwareのtileとmemory alignmentへ合わせると、計算量を変えなくても無駄な空きを減らせます。

これはserving softwareだけで後から直せる話ではありません。model architectureを決めた時点で、推論時の形がかなり決まります。

長文ではprefillが二乗、decodeが線形に重くなる

sequence lengthを2倍にすると、prefillは全token同士を比較するため、dense attentionの仕事量はおおむね4倍になります。

decodeは1 stepごとにKV cache全体を読むので、contextが2倍なら各stepのruntimeはおおむね2倍です。

この非対称性から三つ目の原則が出ます。実効的なKV stateを減らすことです。

  • KV cacheを圧縮する
  • sliding-window attentionを使う
  • sparse attentionを使う
  • global attentionを一部layerだけへ残すhybrid architectureを使う

ただし、今回のNVIDIA記事が測ったのはdense attentionです。sparse attentionは次回記事の予告であり、精度と速度のtradeoffは今回の数値からは判断できません。

GPUを増やすとKV cacheが増える逆転現象

四つ目はmulti-GPU配置です。

Tensor Parallelismはattention headをGPUへ分けます。ところが、TP数がKV head数を超えると、1本のKV headを複数rankへ複製しなければなりません。GPUを増やしたのにKV stateとbandwidth負荷が増えるという、少し悲しい逆転が起きます。

原則は TP ≤ KH です。各GPUが少なくとも完全なKV headを1本持てる範囲にします。

KV headが1本や2本しかないmodelでは、Attention Data Parallelismでrequestを分けるか、KV Parallelismで長いKV cacheを分割します。MoEのFFNはExpert Parallelismで別にscaleさせます。TensorRT-LLMではWide EPやHelix Parallelismとして実装経路が用意されています。

KV headをGPUへ分配する構成と、GPU数が多すぎてKV cacheを複製する構成の比較図
KV head数を超えるtensor parallelismでcache複製が起こる関係をAICompanyが独自に再構成した図

小さな設計チェック。64 query headのmodelを置く

model選定時に次の表を作るだけでも、危険な構成を早く見つけられます。

  1. query head数QHを確認する
  2. group size Gを確認する
  3. KH = QH / GでKV head数を出す
  4. 想定TPがKH以下か確認する
  5. head dimensionが128または256に近いか確認する
  6. 32K、64K、128Kでprefillとdecodeを別々に測る

QHが64、Gが8ならKHは8です。TP 8までは各GPUへKV headを分けられます。TP 16にすると複製が必要です。

Gを16へ増やすとdecodeは有利になりやすい一方、KHは4へ減るのでtensor parallelの上限も4へ下がります。一つのparameterを改善すると、別のscale方法が必要になります。これがco-designの意味です。

実務で測るべき4つの数字

AICompanyの解釈として、長文agent基盤では一つのtokens per secondだけを見ないほうがよいです。

  • time to first token。prefillの重さを見る
  • inter-token latency。decodeの軽快さを見る
  • request当たりKV cache容量。concurrencyの上限を見る
  • GPU数を増やしたときの実効throughput。KV複製の有無を見る

agentは長いrepository、tool log、memoryをpromptへ積み上げます。平均contextだけでなくp95とp99のcontext lengthで測らないと、本番の遅いrequestを見落とします。

限界。速いkernelと速いserviceは同じではない

第一に、公開図はnormalized kernel runtimeが中心です。end-to-endのtokens per second、first-token latency、電力、総費用を直接比較した表ではありません。

第二に、記事本文では使用GPU型番、clock、TensorRT-LLM versionなど完全な再現条件が一か所にまとまっていません。数値を別環境へそのまま移せません。

第三に、測定はAttention演算とKV cacheの両方でFP8を使います。別precisionではmemory trafficとcomputeの境界が変わります。

第四に、G、head dimension、sparse patternの変更はmodel品質へ影響し得ます。今回の記事は推論性能の分析であり、accuracyやreasoning能力を同時評価していません。

最後に、これはNVIDIA GPU向けの指針です。原理は広く使えますが、tile幅、memory transfer、parallelismの最適値はhardwareごとに検証が必要です。

結論。長文LLMはmodelとservingを一緒に選ぶ

長文推論が遅いとき、serving engineだけを疑うのは半分正解です。

prefillは計算、decodeはmemory。group sizeはdecode、head dimensionはtile、KV stateはcontext、KV head数はGPU配置を決めます。

NVIDIAの4原則が示すのは、LLMの速さはparameter数だけでは読めないということです。QH、KH、G、head dimension、想定context、GPU数を一枚の設計表へ並べる。それだけで、後からGPUを足してKV cacheまで増やす事故をかなり避けられます。

長文agentを本番へ出すなら、model benchmarkとserving benchmarkを別々に眺める段階は終わりです。model architectureとhardware配置を同じ設計問題として扱う必要があります。

参照

【送料無料】マクロキーパッド、ストリームコントローラーデッキゲームストリーミングショートカットキーボード、18個のプログラム可能

投稿者 AICompany

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA