LLM推論の効率的フロンティア:バッチサイズから量子化、投機的デコードまで
The efficient frontier of LLM inference

AI業界では「効率的フロンティア」という経済学用語を、コストと性能のトレードオフを管理するために使います。推論エンジニアリングにも同様の概念があり、レイテンシとスループット、品質とスループット、知能と速度の間のトレードオフが存在します。本記事では、フロンティア上の特定の点をターゲットにするためのテクニック(バッチサイズ、並列化戦略、量子化)と、フロンティア全体を押し広げるテクニック(カーネル最適化、投機的デコード、P/D分離)を解説します。特に、量子化はMXFP4やNVFP4などのマイクロスケーリング浮動小数点形式を用いることで、品質をほとんど犠牲にせずに推論効率を大幅に向上させることができます。
量子化されたモデルは、サービングのトレードオフに関する効率的フロンティアを押し広げます。
HNでの議論
40- amelius
パラメータを変更したときに、本当に効率的フロンティア上に留まっているとどうやって確信できるのでしょうか?
このプレゼンテーションは、フロンティアについてよりも、どのようなつまみを回せて、結果がどの方向に動くか(競合他社よりも悪くなる可能性がある)について述べているように思います。
- copperwire
量子化と投機的デコードにより、私たちの小規模モデルでは大幅なコスト削減が実現しました。それでも、理想的なコストパフォーマンス比を追い求めています。
- jumploops
> 投機的デコードとは、モデルが生成する可能性のあるトークンを推測し、その推測を検証するプロセスです。
コンピュータエンジニアとして、スタックのさまざまなレベルで最適化が適用されるのを見るのはいつも興味深いものです。
投機的実行は90年代にかなり普及し、最終的にはほぼすべてのx86設計で使用されるようになりました。
その後、2000年代半ばにはSpeculator[0]という論文がその概念を分散システムに持ち込み、現在もその研究が続いています[1][2]。
古いものはすべて再び新しくなる(笑)
[0]https://www.cs.princeton.edu/courses/archive/fall07/cos518/p...
[1]https://www.usenix.org/system/files/osdi25-shen-weihai.pdf
[2] https://www.microsoft.com/en-us/research/publication/distrib...
- armcat
まもなく、Astraが採用している「再帰的深度」戦略を含めることができると思います。これは(おそらく)従来の思考/CoTで行われてきた完全なフォワードパスとサンプリングではなく、トランスフォーマー内の再帰的な内部状態変化を使用していると推測しています。同様の方法がここで使用されました(ただし、コンテキストは異なります - 高速実行のためにトランスフォーマーの重み内にツールをエンコードする):https://www.percepta.ai/blog/can-llms-be-computers
- kgeist
私は現在、llama.cppの利点(単一バイナリ展開、異種非データセンターコンピュートの優れたサポート、広範な量子化サポート)と、vLLM/SGLangの利点(適切なページドアテンションによるVRAM利用の向上や高並行性など)を組み合わせた推論エンジンを書こうとしています。
データセンター用ハードウェアは高価で不足していますが、llama.cppは並行使用には遅く/最適化されておらず、vLLM/SGLangは一般的でないセットアップ(例えば、RTX5090+RTX4090でパイプライン並列処理を行う場合、RAMキャッシュを有効にするとランダムにクラッシュしたり、各ランクが同じデバイスタイプであると想定しているため誤ったカーネルを選択したりします。また、Q5-Q6をサポートしていません)では簡単にクラッシュします。
私にとって最も興味深いのは、優れたデータセンター用ハードウェアがない場合の推論の最適化と、それを最適に最適化する方法です。私はオフィスでAIサーバーを運用しており、これまでに安価なハードウェアでの並行使用に最も重要な手法として、パイプライン並列処理(PCIeに対応するため)、RAMキャッシュ(コンテキストをVRAMに迅速に復元するため)、投機的デコード(ドメイン固有のn-gramを含み、ドラフトモデルのオーバーヘッドなしにコード生成を大幅に高速化できる)、特定のデバイスに高度に最適化された優れたカーネル、Q5-Q6のサポート(Q8とほぼ同等)、FP8コンテキスト(より多くのコンテキストを収めるため)、ページドアテンション(VRAM利用の向上のため)、プレフィックスキャッシュ、継続的バッチ処理(これはどこでもデフォルトです)を見つけました。
これまでのところ、主な…