Phractis

Ryzen AI Max+ 395でGemma 4 26Bを動かして分かった、VulkanとROCmの使い分けと落とし穴

目次
  1. きっかけ
  2. 学んだこと
  3. 自分なりの理解
  4. 実践へのつなげ方
  5. 次に試すこと

きっかけ

Ryzen AI Max+ 395(Radeon 8060S / 40CU)環境に、MoEモデルである「Gemma 4 26B A4B QAT」を導入し、llama.cppでローカル推論のベンチマーク測定を行いました。

普段は何気なく「とりあえず最新ビルドでFlash AttentionをONにすれば最速だろう」と考えがちですが、実際にVulkanとROCm(Lemonadeビルド等)を横並びで比較し、パラメータやコンテキスト長(深さ)を変えて測定してみたところ、直感とは大きく異なる挙動がいくつも見つかりました。

学んだこと

今回のベンチマークから得られた技術的な要点は以下の通りです。

自分なりの理解

LLMのローカル実行におけるボトルネックは「プロンプト処理」と「トークン生成」で完全に分離していますが、バックエンドの実装成熟度やアテンション機構(FA)の実装依存によって、コンテキスト長に応じた挙動が全く別物になるという点が非常に興味深かったです。

「Flash Attention=常にONにすべき高速化オプション」と思い込んでいましたが、Vulkan実装においては長いシーケンス長に対するタイリングやキャッシュ効率に課題があることが数字としてはっきり見えました。

実践へのつなげ方

用途に合わせて、LM Studioや llama-server の起動オプションを明確に切り替えて運用します。

  1. 日常のコーディング支援・チャット(短〜中文):
    • ランタイム: Vulkan
    • 設定: -fa on -ctk f16 -ctv f16 -b 2048 -ub 1024
    • 手元のAPIサーバー(ポート8081)の標準構成として常駐させる。
  2. 長文資料を流し込んでの分析・要約:
    • ランタイム: Vulkan
    • 設定: -fa off -b 2048 -ub 512(FAを意図的に切る)
  3. 長大な文脈を持つエージェントタスク:
    • ランタイム: ROCm (lemonade-b1318)
    • 設定: -fa on -ctk f16 -ctv f16 -lm none(mmapを必ずオフにする)

次に試すこと

「Q4_0版のQATモデル」の検証を行います。 今回の UD-Q4_K_XL から、計算カーネルの最適化が最も進んでいる素の Q4_0 に変更することで、演算主導のプロンプト処理および帯域主導の生成速度がどこまで理論上限(117 t/s)に迫れるかを確かめてみます。