https://preview.redd.it/3pjau5brllrg1.png?width=2501&format=png&auto=webp&s=181000a4046b8de02cc75c2a5c1776a3847ff34a
**ハードウェア:** AMD Ryzen 9 9900X | RX 9070 16GB VRAM (RDNA 4, gfx1201) | 192GB DDR5 | Ubuntu 24.04 **ROCm のバージョン:** 7.2.1 **llama.cpp ビルド:** `-DGGML_CUDA_FORCE_MMQ=ON -DGGML_HIP_GRAPHS=ON` で ROCm --- ## TL;DR RX 9070(RDNA4)で ROCm 7.2.1 は、フラッシュアテンションを有効化し、正しいビルドフラグを使うと、プロンプト処理では Vulkan に勝ちます。MoE モデルでは、トークン生成はいまだに Vulkan のほうが有利です。デフォルトの ROCm ビルドは致命的に遅いです — フラッシュアテンション単体でも、密な(dense)モデルのプロンプト処理が 5.5× 改善します。 --- ## 発見:フラッシュアテンションがすべてを変える 試してみたこと ROCm をそのまま(out of the box)使うのはがっかりする結果でした。そこで次のフラグを見つけました: ```bash cmake .. -DGGML_HIP=ON -DAMDGPU_TARGETS=gfx1201
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_PREFIX_PATH=/opt/rocm-7.2.1
-DGGML_CUDA_FORCE_MMQ=ON
-DGGML_HIP_GRAPHS=ON # --flash-attn で実行 ``` **密なモデル(Qwen3-8B Q8_0)— プロンプト処理:** - ROCm デフォルト、フラッシュアテンションなし: **711 t/s** - ROCm + フラッシュアテンションのみ: **~3,980 t/s** - **1 つのフラグで 5.5× 改善** --- ## 完全なベンチマーク結果 ### Qwen3.5-14B-A3B MXFP4(MoE — アクティブ 3B パラメータ) | 設定 | pp512 (t/s) | tg128 (t/s) | |---|---|---| | Vulkan(FA オン) | 3,332 | **113.2** | | ROCm デフォルト、FA なし | 2,042 | 81.4 | | **ROCm MMQ+GRAPHS+FA** | **3,731** | 87.6 | **判定:** ROCm がプロンプト処理で勝利(+12%)。Vulkan がトークン生成で勝利(MoE で +23%)。 ### Qwen3-8B Q8_0(密) | 設定 | pp512 (t/s) | tg128 (t/s) | |---|---|---| | Vulkan | 3,336 | 68.1 | | ROCm デフォルト、FA なし | **711** | 60.6 | | **ROCm MMQ+GRAPHS+FA** | **3,931** | 64.2 | **判定:** ROCm がプロンプト処理で勝利(+18%)。トークン生成は概ね同程度(+6% Vulkan)。 ### コンテキストスケーリング — Qwen3.5-14B-A3B MXFP4 | コンテキスト | Vulkan (t/s) | ROCm MMQ+FA (t/s) | 勝者 | |---|---|---|---| | pp512 | 3,184 | **3,731** | ROCm +17% | | pp2048 | 3,537 | **3,770** | ROCm +7% | | pp8192 | 3,280 | 3,191 | Vulkan +3% | ROCm のプロンプト処理の優位は長いコンテキストでは縮みます。おおむね 8K で同等です。 --- ## うまくいかなかったこと 有意な影響はなく、もしくはクラッシュを起こしたもの: - `HSA_OVERRIDE_GFX_VERSION` — gfx1201 でクラッシュ、またはサイレント失敗 - `HIP_FORCE_DEV_KERNELS` — 影響なし - `HIPBLAS_V2` — 影響なし - `GPU_MAX_WAVESPERCU` — 影響なし - より小さい ubatch サイズ — プロンプト処理の性能が低下 --- ## 私の環境でのビルド - `~/src/llama.cpp/build/` — Vulkan(安定、MoE で良いトークン生成) - `~/src/llama.cpp/build-rocm/` — ROCm デフォルト(使わないで—遅いほう) - `~/src/llama.cpp/build-rocm2/` — **ROCm MMQ+GRAPHS(現在の本番)** ROCm MMQ+GRAPHS ビルドでポート 8081 に本番投入、コンテキスト 262K、フラッシュアテンションはオン。 --- ## gfx1201 / RDNA4 に関するメモ これは、ROCm 7.2.1 における RX 9070 のための、私が見た最初期の公開ベンチマークセットの一つです。RDNA4 カーネルは新しく、まだ成熟途中です — gfx1201 向けの最適化が gfx1201-specific として着地するにつれて、今後のリリースで ROCm のトークン生成性能が Vulkan とのギャップを埋めてくると期待しています。bitsandbytes はまだ gfx1201 をサポートしていません(HIP `invalid device function` エラー)。bitsandbytes ベースの量子化が必要なら、Vulkan を使うか、次の bitsandbytes リリースを待ってください。 --- ## ハードウェアの前提(Hardware Context) RX 9070 は 192GB DDR5 と組になっています。16GB VRAM に収まらない MoE モデルでは、エキスパートのオフロード経路(`-ot "exps=CPU"`)が強力な結果を出します — 122B Qwen モデルは、全 CPU の 4.2 tok/s に対して 14 tok/s です。このベンチマークは別記事にあります。 --- *役に立てば質問に答えたり、特定のベンチマークを実行したりします。*
提出者: