広告

kernel-anvil: モデル形状ごとに llama.cpp カーネルを自動チューニングして、AMDでデコード速度を最大2倍高速化

Reddit r/LocalLLaMA / 2026/3/30

📰 ニュースSignals & Early TrendsTools & Practical UsageModels & Research

要点

  • kernel-anvil は、AMD GPU 上の GGUF モデル向けのプロファイリングおよび設定ツールで、固有の GEMV/MMVQ レイヤ形状を特定し、実行時に形状ごとへ llama.cpp カーネルのパラメータを自動チューニングします(再コンパイル不要)。
  • このアプローチは、llama.cpp における性能上の制限を解消します。具体的には MMVQ カーネルが、形状にかかわらずレイヤ間で同一のスレッド/ブロック設定を使用してしまい、RDNA3 ではスループットを浪費していました。
  • RX 7900 XTX 上で、kernel-anvil は Qwen3.5-27B Q4_K_M に対して最大 2.25x のデコード速度向上(12 tok/s から 27 tok/s)を報告し、Qwen3-8B Q4_K_M では形状ごとに 1.2x〜2.1x の改善を示しました。
  • このツールは JSON 設定ファイルを生成します。これは llama.cpp の mmvq.cu(ブランチ: smithy-shape-configs)に対する小さなパッチ(約50行)が起動時に読み込み、最適な形状ごとの設定を適用します。
  • 著者は、本ツールを llama.cpp 向けで初の AMD 向けカーネル最適化ツールとして位置付けています。今後 CUDA/Metal 対応を計画しており、さらなるテストの後にパッチをアップストリーム提案する可能性もあります。

AMD GPU上でGGUFモデルの層の形状をプロファイルし、実行時にllama.cppが読み込む最適なカーネル設定を生成するツールを作りました。再コンパイルは不要です。

問題: llama.cppのMMVQカーネルは、形状に関係なくすべての層で同じスレッド/ブロック構成を使います。1024行のGQAプロジェクションは、17408行のFFN層とまったく同じ設定になります。これは特にRDNA3で大きなパフォーマンス損失につながります。

解決策: kernel-anvilはあなたのGGUFを読み取り、一意なGEMV形状を特定し、実際のGPU上でそれぞれをプロファイルして、JSONコンフィグファイルを書き込みます。llama.cppのmmvq.cuに小さなパッチを入れることで、起動時にこの設定を読み込み、形状ごとに最適なnwarpsとrows_per_blockを適用します。

7900 XTXでの結果:

  • Qwen3.5-27B Q4_K_M: 12 tok/s -> 27 tok/s(2.25倍)
  • Qwen3-8B Q4_K_M 個別カーネル: 形状ごとに1.2x〜2.1x

使い方:

pip install -e . kernel-anvil gguf-optimize ~/Models/my-model.gguf # <1 second SMITHY_CONFIG=~/.cache/smithy/my-model.json llama-server -m my-model.gguf -ngl 999 

プロファイル+スイープ全体は1秒未満です。193テスト。RDNA3(7900 XTX/XT、7800 XT)のどのGGUFモデルでも動作します。CUDA/Metal対応は予定されています。

GitHub: https://github.com/apollosenvy/kernel-anvil

llama.cppのパッチ(mmvq.cuに約50行)はブランチsmithy-shape-configsにあります。より多くのテストが進んだらPRとして本流に取り込むことも検討しています。

背景: これは最近のカーネル最適化の論文群の流れから始まりました―― KernelSkillCUDA AgentKernelFoundryTritonForge――いずれもNVIDIA専用を対象にしています。さらに、The Residual Stream Is All You Need(Qasimら、2026年3月)からも着想を得て、AMD上で推論をボトルネックにしているのは実際には何なのかを考えるようになりました。分かったのは、思ったよりずっと単純なことでした。つまり、llama.cppの汎用的なカーネル設定が、各モデルが実際に使っている特定の形状に最適化されていないのです。

既存のカーネル最適化ツールはすべてNVIDIAを対象にしています。これはAMD向けとして初めてのものです。

submitted by /u/Apollosenvy
[link] [comments]

広告