llama.cppのMetal、BF16やIQ系にも少数行MMA行列乗算を拡大

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)

この記事の固有名詞

コメント (0)

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

コメントを書く

2000文字以内