Core Concepts
大規模言語モデルのプリフィリング計算を最適化する簡単で効果的な手法「プリパッキング」を提案する。
Abstract
本論文では、大規模言語モデル(LLM)のインファレンス時のプリフィリング計算を最適化する手法「プリパッキング」を提案している。
プリフィリングとは、自己回帰的な生成の前に入力トークンのキー-値(KV)キャッシュを計算する処理である。入力プロンプトの長さが長くなるにつれ、プリフィリングにかかるオーバーヘッドが大きくなる問題がある。
提案手法のプリパッキングは、バッチ内の入力プロンプトの長さのばらつきを活用し、パディングの無駄な計算を削減する。具体的には、可変長の入力プロンプトを bin-packing アルゴリズムを使って1つの圧縮されたシーケンスにまとめ、独立したマスクと位置エンコーディングを適用することで、1回の順伝播でマルチプルのプロンプトのKVキャッシュを計算する。
実験では、標準的なデータセットとモデル設定において、プリフィリング時間とTTFT(Time-to-First-Token)で最大6倍の高速化を達成した。また、メモリ使用量も最大16倍削減できることを示した。プリパッキングは、入力プロンプトの長さのばらつきが大きいほど、またバッチサイズが大きいほど、より大きな効果を発揮する。
プリパッキングは、LLMのインファレンス時の効率を大幅に改善できる簡単で効果的な手法である。将来的には、プリフィリング後の生成フェーズにもパッキングを適用することで、さらなる高速化が期待できる。
Stats
入力プロンプトの長さが長くなるにつれ、プリフィリングにかかるオーバーヘッドが大きくなる
バッチ内の入力プロンプトの長さのばらつきが大きいほど、プリパッキングの効果が大きい
プリパッキングにより、プリフィリング時間とTTFTを最大6倍高速化できる
プリパッキングにより、メモリ使用量を最大16倍削減できる
Quotes
"As language models continue to grow in scale and their usage proliferates across various domains, the capability to generate tokens with optimal speed and efficiency becomes increasingly paramount."
"The conventional approach to LLM inference with varied size inputs is inefficient, and it is exemplified by the Huggingface Transformers library (Wolf et al., 2020)."
"Prepacking is specifically aimed at improving the speed and memory usage of LLM prefilling, which is the initial computation that populates the Key-Value cache (KV cache) preceding generation."