llama.cppプロジェクトはバージョンb10532をリリースし、Metalバックエンドで量子化されたKey-Value (KV) キャッシュをF16にデ量子化する前処理パスを導入しました。これはFlash Attentionの実行前に適用されます。
- 新しいカーネルはQ8_0 KVテンソルを連続したF16の一時バッファにデ量子化し、カーネル内でのデ量子化の代わりに既存のF16 Flash Attentionカーネルの使用を可能にします。
- Metalがサポートするすべての量子化KVタイプ(Q4_0、Q4_1、Q5_0、Q5_1を含む)への対応が拡張されました。
- VがKのビューであるMLAベースのモデルでは、冗長なVのデ量子化をスキップし、KのF16バッファからVを読み取ります。
- M2 Ultraでの検証により、q8_0 KVを使用するQwen2.5-0.5BのパースペクティビリティがF16リファレンスと完全に一致することを確認しました(PPL 1.0008)。
この変更により、量子化されたKVキャッシュに連続したF16バッファを活用してMetalデバイスで効率的なFlash Attentionの実行を可能にし、標準的なF16実装との精度の同等性を確保します。