AI推論最適化の論点
まず分類する
AI推論最適化は、次の層に分けて考えます。
| 層 | 例 | ルール違反リスク |
|---|---|---|
| ベンチ条件 | concurrency、request count、ISL/OSL | 低。ただし指定条件は守る |
| serving設定 | max running requests、CUDA graph batch、memory fraction | 低から中 |
| 並列化 | TP、PP、DP、EP、DP attention | 中。モデル・実装依存 |
| cache | KV cache、prefix cache、RadixAttention | 中 |
| disaggregation | prefill/decode分離、worker比率、KV transfer | 中から高 |
| 推測系 | speculative decoding、MTP、draft model | 高。モデル品質・重み・評価条件に依存 |
| 量子化 | FP8、INT8、INT4、KV quantization | 高。2025年はモデル性能低下変更が禁止された |
| 実験的機能 | torch.compileなど | 高。2025年は実験的機能が禁止されたという参加記情報あり |
Qwen3-235B-A22Bで重要そうなこと
Qwen3-235B-A22BはMoEモデルです。総235Bの重みを扱いつつ、1 tokenあたりは一部expertを使います。
重要な論点は次の通りです。
- 重みロード時間とストレージ配置。
- GPUメモリ上に重みとKV cacheをどう載せるか。
- Expert Parallelismでexpert計算をどう分散するか。
- TP/PP/EPの組み合わせ。
- 長いcontextを扱う場合のprefillコスト。
- thinking mode / non-thinking modeと出力長の扱い。
SGLangで出てくる設定
参加記では、--max-running-requestsや--cuda-graph-max-bsをバッチサイズ相当の調整として扱ったと書かれています。SGLangのserver argumentsにもこれらの引数が存在します。
ただし、最適値はモデル、GPU、VRAM、context長、concurrency、CUDA graphの有無で変わります。固定値を丸写ししないで、sweepする必要があります。
speculative decoding / MTP
SGLangのSpeculative Decoding docsでは、EAGLE、Multi Token Prediction、draft model、NGRAMなど複数の推測デコード手法が説明されています。
メモ上の議論では、ランダム重みでベンチマークすると、MTPやspeculative decodingの有効性が実運用の分布を反映しないのではないかという懸念があります。これは妥当な論点です。推測デコードは「予測したtokenがどれだけ採用されるか」に依存するため、実重み・実データ分布でないと評価が歪み得ます。
DP Attention
2025年参加記では、DeepSeekモデル向けのDP Attentionを試したものの、KV cache削減は確認できてもスループットは大きく下がったと書かれています。
この教訓は、公式ブログや論文上の高速化率をそのまま信じないことです。最適化は次の条件が揃ったときだけ意味があります。
- 同じモデルか。
- 同じGPU世代か。
- 同じbatch/concurrencyか。
- 同じ入力長・出力長か。
- 同じnetworkか。
- 同じ評価指標か。
実験の優先順位
最終ルール前にやるなら、リスクが低い順に進めます。
- ベンチマークの測り方を固定する。
- concurrency sweepを作る。
- TP/PP/DP/EPの意味をチームで説明できるようにする。
- SGLangの主要server argumentsを読む。
- PD disaggregationの構成図を描けるようにする。
- ルール確定後に、禁止されていない範囲で最適化候補を絞る。