llama.cppはリリースb11476(#30065)で、Metal向けの汎用少数行MMA行列乗算カーネルをBF16、Q1_0、Q2_0、MXFP4、Q2_K、Q3_K、TQ2_0、IQ系の各src0型に適用しました。M3 Ultraでの測定では、9〜16行で処理時間がmaster比0.24〜0.33になっています。
llama.cppはggml-orgが公開するC/C++実装の推論ソフトウェアで、CPUや各社GPUで実行でき、量子化に対応します。
何が新しいか
汎用の少数行MMAカーネルは16-weight dequantizerを持つ型ならどれでも動作するため、今回残りの型も扱えるようになりました。各型は、M3 Ultra上で現行カーネルを上回る行数からこのカーネルを使い始めます。
| 型 | 少数行MMAを開始する行数 |
|---|---|
| TQ2_0 | 5行 |
| BF16 | 4行 |
| MXFP4、Q2_0、Q2_K、IQ4_NL | 3行 |
| その他の型 | 2行 |
ベンチマーク結果
測定はtest-backend-ops perf -o MUL_MAT、m=4096、k=14336、M3 Ultraで行い、各値は2回のインターリーブ実行の平均です。数値は変更後の時間をmasterで割った比です。
| 行数 | master比の時間 |
|---|---|
| 閾値〜8行 | 0.23〜0.98 |
| 9〜16行 | 0.24〜0.33 |
| 1行・512行 | 0.99〜1.01 |
閾値〜8行では比が0.23から0.98まで幅があり、9〜16行では0.24〜0.33です。1行と512行ではmasterとほぼ同等です。
試し方
同条件の測定には次のコマンドを使います。
test-backend-ops perf -o MUL_MAT(m=4096、k=14336)

まだコメントはありません。