動機
過去 1 年間の KV スパース性 (H2O、SnapKV、PyramidKV) に関する最近の学術論文をレビューし、KV スパース性をモデルの異なる層に適用します。プルーニング戦略を採用することで、スコアの低い KV ペアを排除し、スコアが高く、より近い位置にある KV ペアを保持します。このアプローチにより、メモリ使用量、計算および I/O オーバーヘッドが削減され、最終的に推論の高速化が実現します。
実験
ベースラインと設定: すべての KV-Compress 実験は、v0.6.2 からフォークした vLLM 統合を使用して実行し、cuda grapth モード、ブロックサイズ 16 で実行しました。すべての RTX 4090/Llama-3.1-8B-Instruct 実験では、デフォルトの GPU メモリ使用率 0.9 を使用し、maxmodel-length を 32k に設定しました。圧縮性能を Llama-3.1-8B-Instruct で評価し、先行研究で導入された以下のベースライン手法と比較しました:
- vLLM-0.6.2
- Novita AI、vLLM フレームワークに基づく Pyramid KV Cache 圧縮
MMLU Pro と LongBench: 異なる層に異なるスライディングウィンドウ長を設定することで、さまざまな KV Cache 圧縮率を制御しました。実験では主に 1024、1280、1536 の 3 つの異なるスライディングウィンドウ長を設定し、異なる層数でクロステストを実施しました。MMLU Pro テストでは、異なる KV スパース層と異なるスライディングウィンドウ長が異なるパフォーマンスを示しました。高速化率を考慮すると、全体の精度は 98% 以上を保証できます。
| vllm-0.6.2 | Novita AI | |
| KV sparsity layers | full | sliding window=1536 |
| 22 | 0.4517 | 0.4496 |
| 26 | 0.4517 | 0.4476 |
| 31 | 0.4517 | 0.4476 |
LongBench テストでは、スライディングウィンドウ 1024 を選択してパフォーマンステストを実施し、精度の低下は約 1.03% であることがわかりました。

スループットベンチマーク: 実際の LLM アプリケーションでは、入力/出力長 5000/500 が最も一般的な構成であり、TTFT 指標は 2 秒未満である必要があります。これらの条件に基づいてバッチパフォーマンス比較テストを実施し、vLLM で 1.5 倍の推論高速化を達成しました。
| Throughput | vllm-0.6.2 | Novita AI |
| KV sparsity layers | full | sliding window=1536 |
| 22 | 1 | 1.26 |
| 26 | 1 | 1.34 |
| 31 | 1 | 1.44 |
主な変更点
主に変更したファイルは次のとおりです:
- Flash attention - Flash attention に基づくスパーススコアリング。カーネルパフォーマンスの低下を 1% 未満に抑えます。
- Paged attention と reshape_and_cache - Paged attention に基づくスパーススコアリング、および prefill ステージと decode ステージでのスパーススコアリングの同期。
- Block_manager およびメモリ管理と tensor prepare に関連するその他の関数。
結論
Novita AI はテンソル並列化もサポートしており、Llama3-70B などのモデルを複数の GPU で実行できます。現在、いくつかの理由によりコードの公開はサポートしていませんが、コミュニティに技術やアイデアを提供し、皆様との技術的な交流を歓迎します。注意点: 以下の機能は vLLM-0.6.2 ではまだサポートされていません:
- Chunked-prefill
- Prefix caching
- FlashInfer およびその他の FlashAttention 以外のバックエンド
- Speculative Decoding
Novita AI は、AI クラウドプラットフォームであり、開発者がシンプルな API を使用して AI モデルを簡単にデプロイできるとともに、手頃で信頼性の高い GPU クラウドを提供して構築とスケーリングを実現します。
推奨記事
