Inference Acceleration(推論高速化)
LLM 推論高速化を 4 ボトルネック × 6 技術系統 (量子化 / Attention カーネル / KV キャッシュ / 投機的デコード / モデル圧縮 / コンパイル) で俯瞰、サービングエンジン・HW・5 大ピットフォールを整理。
article technology ja LLM 推論高速化を 4 ボトルネック × 6 技術系統 (量子化 / Attention カーネル / KV キャッシュ / 投機的デコード / モデル圧縮 / コンパイル) で俯瞰、サービングエンジン・HW・5 大ピットフォールを整理。Inference Acceleration(推論高速化)
LLM 推論高速化は単一の銀の弾丸ではなく、HBM 帯域・HBM 容量・compute・latency tail の 4 ボトルネックに対する 6 技術系統 (量子化 / Attention カーネル / KV キャッシュ / 投機的デコード / モデル圧縮 / コンパイル) の合成最適化。本稿は umbrella / taxonomy。バッチング詳細は tech-43、TTFT/TPOT/Goodput/MFU は tech-44、Prefill/Decode 非対称性と chunked prefill / PD disaggregation は tech-45。
設計空間マトリクス (Bottleneck × Technique)
各技術が攻めるボトルネックを 1 枚で俯瞰。✓✓✓=主効果、✓✓=強い副次、✓=軽微、—=影響なし。
| 技術 | HBM BW | HBM Cap | Compute | Decode Lat | Prefill Lat |
|---|---|---|---|---|---|
| INT4 / FP8 量子化 | ✓✓ | ✓✓ | ✓ | ✓✓ | ✓ |
| MQA / GQA / MLA | ✓ | ✓✓ | — | ✓✓ | — |
| KV 量子化 (KIVI) | — | ✓✓ | — | ✓ | — |
| FlashAttention-2/3 | — | ✓ | ✓✓ | ✓ | ✓✓ |
| FlashInfer / CUDA Graphs | — | — | ✓ | ✓✓ | — |
| Speculative Decoding | — | — | — | ✓✓✓ | (↑微増) |
| MoE | — | (↑) | ✓✓ | ✓✓ | ✓ |
| torch.compile / TRT-LLM | — | — | ✓✓ | ✓✓ | ✓✓ |
| Streaming / KV eviction | — | ✓✓ | — | — | — |
| Distillation / Pruning | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ |
「全部入り」は P1〜P5 アンチパターンへ直結。ボトルネックを tech-44 の指標で同定してから技術を選ぶ。
量子化 (Quantization)
HBM 帯域 (decode 重み読出し) と HBM 容量 を直接攻撃。decode は memory-bandwidth-bound (tech-45) なので W4A16 で 4× 帯域削減 ≈ 4× TPOT 改善。prefill は compute-bound のため活性量子化 (W4A8 等) しない限り効きは限定的。
- GPTQ (arXiv:2210.17323) — 二次近似 (OBQ Hessian) W4、Llama-2-70B で PPL 劣化 < 1。calibration ドメイン整合が精度直結。
- AWQ (arXiv:2306.00978) — 活性絶対値 ~1 % チャネルを保護/スケール、汎用 chat に強く vLLM W4A16 既定。
- SmoothQuant (arXiv:2211.10438) — 活性外れ値を per-channel スケールで重みへ移植、素 INT8 GEMM を引き出す W8A8。Hopper では FP8 上位互換。
- FP8 — Hopper Transformer Engine (E4M3/E5M2)、calibration なしほぼロスレス。
- FP4 / MXFP4 — Blackwell FP4 TensorCore + OCP MX、理論 2× Hopper FP8。2025/2026 ホット。
選定: H100/H200 → FP8、Ampere/Ada → AWQ (汎用) or GPTQ (ドメイン特化)、Blackwell → FP4。
Attention カーネル最適化
標準 softmax-attention は中間 [N, N] を HBM 経由で読み書きする IO-bound。FlashAttention 系は tiled + fused + IO-aware + online softmax で中間を SRAM に閉じ込めメモリ階層を勝つ。
- FA-1 (arXiv:2205.14135) — exact attention、O(N) メモリ、素 PyTorch 比 2–4×。
scaled_dot_product_attentionbackend。 - FA-2 (arXiv:2307.08691) — Q 並列化 + 非 matmul FLOPs 削減、A100 ~72 % FLOPS。2023–2025 サービングのベースライン。
- FA-3 (arXiv:2407.08608) — Hopper SM90 の async TMA + WGMMA + FP8、H100 FP8 ~75 %。Hopper 専用、Ampere 不可 (P3)。
- FlashInfer — 推論特化 (ragged batch / paged KV)、SGLang 採用。
- Flash-Decoding — 長コンテキスト・小バッチ decode 向け KV 系列次元並列化、FA-2 decode 経路に統合。
カスタム mask/bias は PyTorch 2.5+ FlexAttention で Python lambda から Triton に落とせる。
KV キャッシュ最適化
KV は 2 × layers × heads × head_dim × seq_len × dtype_bytes で長文ほど線形肥大、HBM 容量とバッチサイズの両方を制約。decode-heavy では throughput 支配要因。
- MQA (arXiv:1911.02150) — 全 Q ヘッドで K/V 1 組共有、KV ~1/
num_heads。複雑推論で劣化。 - GQA (arXiv:2305.13245) — G グループ (G=1→MQA、G=H→MHA)、Llama-2/3 / Mistral 標準、G=8 で 4× 削減、劣化 < 0.5 %。新規モデル既定。
- MLA (arXiv:2405.04434, DeepSeek-V2/V3) — 低ランク joint 射影 latent でキャッシュ、MHA 比 ~5 %。2025/2026 ホット。
- KIVI (arXiv:2402.02750) — 2-bit KV 量子化 (K per-channel / V per-token)、~2× 削減、PPL 劣化ほぼなし。
- StreamingLLM (arXiv:2309.17453) — 初頭 “attention sink” + 直近窓のみ保持、固定メモリで無限長生成可。長距離依存 (RAG / 長文 QA) は禁止。
既存 MHA → MLA upcycling は重量級、KIVI / StreamingLLM はランタイム適用可。
投機的デコーディング (Speculative Decoding)
decode の latency tail を直接攻める唯一の系統。compute・帯域・容量のどれにも乗らない「並列化次元の追加」が本質。
- オリジナル (arXiv:2211.17192, arXiv:2302.01318) — 軽量 draft が K トークン提案、target が 1 forward で並列検証、rejection sampling で target 分布を厳密保持。期待
K·α + correction、α=0.8, K=5 で ~4×。 - Medusa (arXiv:2401.10774) — target 最終隠れ状態上の並列予測ヘッド + tree 検証、fine-tuning 必要、1.5–2.5×。
- EAGLE / EAGLE-2 (arXiv:2401.15077, arXiv:2406.16858) — 隠れ状態上の単層自己回帰 feature predictor、EAGLE-2 は動的 draft tree、~3× / ~3.5×。
- Lookahead — Jacobi iteration、訓練ゼロ、acceptance は EAGLE 系より低め。
落とし穴: target 量子化で分布が微シフトし α が下落、量子化変更後は本番分布で α 再計測 (P1)。
モデルレベル圧縮
訓練時に推論フレンドリーなアーチファクトを生成、後段の量子化・カーネルと直交し合成可能。
- Knowledge Distillation — soft label + KL 損失。Llama-3.2-1B/3B は 8B/70B の部分蒸留。post-hoc 不可、GQA + 量子化 + spec decoding と組合せやすい。
- Structured Pruning (Sheared LLaMA, arXiv:2310.06694) — 構造的マスクをヘッド/MLP/層に学習、標準カーネルで走る dense 縮小モデル。
- MoE — Mixtral-8x7B: 総 46.7B、token あたり実効 12.9B (top-2/8)。HBM 容量を全 expert 分使うが per-token compute は大幅減。詳細は tech-37。
コンパイルとカーネル融合
eager の dispatch + Python オーバーヘッドを潰し op 間融合を引き出す、他の最適化を「漏らさず取り切る」インフラ層。
- torch.compile / Inductor — PyTorch 2.0+ JIT、10–30 % 向上。動的制御フローで graph capture 破綻。
- TensorRT-LLM — NVIDIA 最高スループット。in-flight batching + paged KV + FP8/INT8。rebuild 遅い。
- Triton — FA-2/3 / FlashInfer の大半は Triton 実装、CUDA 直書きより保守容易。
- CUDA Graphs — launch 録画+replay、dispatch 0.5–2 ms → < 0.1 ms/step。主要エンジン全採用。
- FlexAttention (PyTorch 2.5+) — Python lambda マスク/バイアスを Triton に落とす。
サービングエンジン概観
各エンジンは上記スタックの組合せパッケージ、ワークロード特性で選ぶ。
| エンジン | 差別化要因 | 第一選択 |
|---|---|---|
| vLLM | PagedAttention + 継続バッチング + 最広モデル対応 | 汎用本番 |
| TensorRT-LLM | NVIDIA 最高スループット、FP8/INT8 | NVIDIA で throughput |
| SGLang | RadixAttention prefix cache、structured gen | RAG / エージェント |
| TGI (HF) | 最小構成、HF 直結 | プロトタイピング |
| LMDeploy | TurboMind、AWQ ネイティブ | INT4/INT8、APAC |
| DeepSpeed-MII | ZeRO-Inference TP、4-bit ZeroQuant | マルチ GPU 超大規模 |
| llama.cpp | CPU first、GGUF、Apple Silicon | エッジ / CPU-only |
SGLang RadixAttention (KV ブロックの radix tree) が RAG / エージェントで 5–10× KV 再利用。
ハードウェアレベルの加速
ソフトの最適化は HW 上限に貼り付く。階層は tech-45 と併読。
- Hopper (H100/H200) — FP8 Transformer Engine、HBM3 ~900 GB/s、WGMMA+TMA で FA-3 可。
- Blackwell (B100/B200/GB200) — FP4 TensorCore (理論 2× Hopper FP8)、HBM3e ~8 TB/s、NVL72。
- AMD MI300X — 192 GB HBM3/GPU、70B が TP なしで載る。ROCm+vLLM パリティ急速縮小。
- カスタム — Groq LPU (SRAM、7B TTFT ~10 ms)、Cerebras WSE-3、SambaNova SN40L。decode HBM 律速を SRAM で打ち抜く。
5 大ピットフォール
tech-43 バッチング / tech-44 指標 / tech-45 フェーズ観点に対し、本稿は技術スタック合成観点。
P1: 量子化 × 投機的デコードを α 再測定なしで積む — target を AWQ/FP8 化で分布が微シフト、draft の α 下落で K·α 利得消失。量子化変更時は本番分布で α 再ベンチを義務化。
P2: AWQ vs GPTQ を calibration fit で見ずに選ぶ — AWQ は汎用、GPTQ は任意 calibration の二次近似。リーガル/メディカル/コード等ドメイン特化では GPTQ 優位。本番 prompt 分布で両方ベンチ。
P3: Ampere で FA-3 を期待する — FA-3 は Hopper SM90 (WGMMA, TMA) 依存。Ampere は FA-2、Hopper のみ FA-3。
P4: GQA で足りる場面で MQA を採る — MQA は複雑推論で目に見える劣化。GQA G=4–8 で 80–95 % の KV BW 利得 + 劣化 < 0.5 %。新規は GQA 一択。
P5: 投機的デコードを「タダ」扱いする — draft prefill + 検証コストは無視できず、短出力や高負荷時はオーバーヘッドが利得を上回る。出力長/負荷で gating する adaptive 制御を入れる。
2025/2026 のホットトレンド
- MLA 拡散 — DeepSeek-V3 後、低ランク KV を採る新モデル続出、GQA → MLA がデフォルト候補に。
- FP4 / MXFP4 立ち上がり — Blackwell 本番展開と TRT-LLM / vLLM の FP4 経路成熟が同時進行。
- EAGLE-3 — feature predictor 高度化で α 更に押し上げ、4–5× 視野。
- chunked prefill が vLLM デフォルト化 — 0.4 以降進行 (tech-45)。
- SGLang RadixAttention 普及 — prefix-heavy で 5–10× KV 再利用。
- AMD MI300X 本格採用 — HBM 容量律速で NVIDIA 分散需要。
- Goodput 中心の SLO 設計 — DistServe 由来の goodput が KPI 定着 (tech-44)。
関連リソース
arXiv: FlashAttention arXiv:2205.14135 / arXiv:2307.08691 / arXiv:2407.08608、量子化 arXiv:2210.17323 / arXiv:2306.00978 / arXiv:2211.10438、KV arXiv:1911.02150 / arXiv:2305.13245 / arXiv:2405.04434 / arXiv:2402.02750 / arXiv:2309.17453、投機 arXiv:2211.17192 / arXiv:2302.01318 / arXiv:2401.10774 / arXiv:2401.15077 / arXiv:2406.16858、圧縮 arXiv:2310.06694、フェーズ干渉緩和 arXiv:2403.02310 / arXiv:2311.18677 / arXiv:2401.09670。
ベンダー: vLLM https://docs.vllm.ai/、TensorRT-LLM https://github.com/NVIDIA/TensorRT-LLM、SGLang https://sgl-project.github.io/、TGI https://huggingface.co/docs/text-generation-inference、llama.cpp https://github.com/ggerganov/llama.cpp。
Backlinks
14 backlinks
- related Decoding Strategy(出力戦略)
- related Scaling and Operations(スケーリング則と LLMOps)
- related Containerization and Orchestration(コンテナ化とオーケストレーション)
- related Neural Networks and Deep Learning(ニューラルネットワークとディープラーニング)
- related Machine Learning(機械学習)
- related Inference Serving(推論サービング)
- related Kernel and Memory Optimization(カーネル・メモリ最適化)
- related Model Serialization Format(モデルシリアライゼーションフォーマット)
- related Model Runtime and Conversion(モデルランタイムと変換)
- related Model Compression Techniques(モデル圧縮)
- related Edge Inference(エッジ推論)
- related ML Model Deployment
- related Model Compression and Optimization(モデル圧縮と最適化)
- related Semiconductor Compute Unit(半導体演算ユニット)