プリフィル・デコード分離

Prefill-Decode Disaggregation

大規模言語モデルの推論を、入力を一括処理するプリフィル段階と、トークンを逐次生成するデコード段階に分け、別々の計算資源へ割り当てる方式である。両段階の相互干渉を取り除き、並列化戦略と資源配分を段階ごとに独立して最適化できる点に狙いがある。

詳細

概要

大規模言語モデルの推論は、入力プロンプトを一括で処理して最初のトークンを出すプリフィル段階と、以降のトークンを一つずつ生成するデコード段階からなる。両者を同一の計算資源に同居させると相互干渉が生じ、資源配分を両段階の遅延要件に対して同時に最適化できない。この問題への対処として、プリフィルとデコードを別々の計算資源へ分離する構成が提案されている。

技術的な要点

両段階は計算特性が異なる。プリフィルは行列積が支配的で演算資源が律速になりやすく、デコードは 1 トークンごとにパラメータを読み出すためメモリ帯域が律速になりやすい。評価指標も異なり、プリフィルは最初のトークンまでの時間、デコードは 1 トークンあたりの出力時間で測られる。分離することで段階ごとに並列化戦略と資源量を独立に選べるようになり、性能上の衝突を取り除きながら応用側の遅延制約を満たしやすくなる。一方で、プリフィルが生成した中間状態をデコード側へ転送する経路の帯域と遅延が新たな設計制約となる。

産業での位置づけ

段階ごとに性質が異なることから、汎用アクセラレータで全工程を処理するのではなく、段階ごとに専用設計のチップを割り当てる構成が検討されている。この場合、チップ間を結ぶ相互接続の帯域と消費電力が方式全体の成立条件を左右する。