llama.cppプロジェクトは、モデル推論のプリフィルフェーズを対象として、Metalバックエンドにスパースフラッシュアテンション(FA)サポートを導入しました。この更新には、有限マスクエントリを行ごとのインデックスリストに圧縮する新しいカーネルと、オプションのスパースインデックス収集で拡張されたベクトルFAカーネルが含まれています。
- 実装では、n_kv_maxが0より大きく、他の条件も満たされる場合にスパースパスを有効にするホスト側のゲートが追加されました。
- 複数の行の場合に失敗を引き起こしていたスパースフラッシュアテンションカーネルの行アドレス指定バグを修正する修正が適用されました。
- スレッドごとのレジスタに有限位置を保持することで冗長なマスク読み取りを回避し、単一パスのスパースインデックス圧縮を実行する最適化技術が追加されました。
- ヘッドサイズ、量子化タイプ、およびさまざまな構成パラメータを検証するために、テストケースとパフォーマンスベンチマークが追加されました。
この変更により、スパースアテンションヒントが利用される際にプリフィルステージ中のメモリトラフィックを削減することで、Metalユーザーの効率性が向上します。