0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RX9060xtパフォーマンス

0
Last updated at Posted at 2026-08-08

Ollama / ROCm 推論パフォーマンスレポート

測定環境: Ryzen 7 3700X + Radeon RX 9060 XT ×2
Backend: ROCm / gfx1200
Ollama: 0.32.6
作成日: 2026-08-08

---

1. 概要

本レポートでは、Radeon RX 9060 XT 16GB ×2 構成における Ollama / ROCm 推論環境について、以下のモデルを中心に実測結果を整理する。

  • Qwable 35B.A3B IQ4_XS
  • Qwen3.6 35B.A3B Q4_K
  • Qwen3.6 27B Q4_K
  • Qwen3.6 27B-A3B Coder Q8_0

主な評価項目は以下のとおり。

  • Prompt / Bulk Prefill 性能
  • Decode 性能
  • Prompt Cache による再処理削減率
  • Context 長による Decode 速度への影響
  • KV Cache 使用量
  • GPU VRAM 使用量
  • Q8_0 モデルの速度・精度・VRAMバランス

---

2. 環境情報

項目 状況
CPU Ryzen 7 3700X / 8C16T
GPU Radeon RX 9060 XT ×2
VRAM 15.9 GiB ×2、合計約31.8 GiB
RAM 32 GiB
Backend ROCm / gfx1200
Ollama 0.32.6
並列数 1
Flash Attention 有効
Prompt Cache 8 GiB
Context Checkpoint 最大32
GPU間 NO\_PEER\_COPY=1
モデル最大Context 262,144 token

補足

  • Ollama は2枚の RX 9060 XT を ROCm デバイスとして認識している。
  • 総VRAMは約31.8 GiB。
  • NO\_PEER\_COPY=1 のため、GPU間で直接 Peer Copy を利用しない構成となっている。
  • Prompt Cache は 8 GiB。
  • Context Checkpoint は最大32個。
  • Flash Attention は実行時に有効化されている。

---

3. 総合パフォーマンス

モデル Context 最大実測Prompt Bulk Prefill Decode実測 Cacheで省略 KV Cache 推定Device VRAM
Qwable 35B.A3B IQ4_XS 32K 28,032 約2,100 tok/s 約35.5 tok/s 74.9% 0.625 GiB 18.45 GiB
Qwable 35B.A3B IQ4_XS 128K 26,008 約2,021 tok/s 約33.6 tok/s 72.0% 2.50 GiB 20.70 GiB
Qwen3.6 35B.A3B Q4_K 32K 32,717 約1,597 tok/s 約35.6 tok/s 90.3% 0.625 GiB 21.75 GiB
Qwen3.6 35B.A3B Q4_K 128K 29,167 約1,456 tok/s 約38.8 tok/s* 76.5% 2.50 GiB 23.62 GiB
Qwen3.6 27B Q4_K 128K 35,207 約580 tok/s 約13.2 tok/s 75.4% 8.00 GiB 23.56 GiB

\* Qwen3.6 35B.A3B Q4_K / 128K の約38.8 tok/sは、その測定時点のContext状態や生成区間の影響を含むため、短Contextと単純比較する際は注意が必要。

3.1 Prefill性能

Bulk Prefill は MoE 35B.A3B 系が非常に高速である。

  • Qwable 35B.A3B IQ4_XS: 約2,000~2,100 tok/s
  • Qwen3.6 35B.A3B Q4_K: 約1,450~1,600 tok/s
  • Qwen3.6 27B Q4_K: 約580 tok/s

特に Qwable IQ4_XS は、35Bクラスでありながら 2,000 tok/s を超える Prompt Processing 性能を示している。

3.2 Decode性能

MoE 35B.A3B 系では、長いContextを保持した状態でも概ね30 tok/s台を維持している。

一方、Dense系の Qwen3.6 27B Q4_K は約13 tok/sであり、Decode速度では MoE 35B.A3B 系が大きく優位となっている。

---

4. ContextがDecode速度へ与える影響

構成 短いContext時 約25~33K Context時
Qwable IQ4_XS 約43 tok/s 約31~35 tok/s
Qwen3.6 35B.A3B Q4_K 約41~43 tok/s 約31~34 tok/s
Qwen3.6 27B Q4_K 約13.4 tok/s 約12.4~12.8 tok/s

傾向

Qwable 35B.A3B IQ4_XS

短いContextでは約43 tok/sだが、Contextが25K~33K程度まで増えると約31~35 tok/sへ低下する。

概算では、長Context時に 約20~28%程度のDecode性能低下が発生している。

Qwen3.6 35B.A3B Q4_K

短Contextでは約41~43 tok/s、長Contextでは約31~34 tok/sとなる。

こちらも Context 増加に伴う低下傾向は Qwable と近く、MoE 35B.A3B 系では長Context時のAttention処理コストがDecode速度へ明確に影響している。

Qwen3.6 27B Q4_K

短Context時の約13.4 tok/sに対して、長Contextでは約12.4~12.8 tok/s。

絶対性能は低いものの、Context増加による相対的な低下幅は比較的小さい。

---

5. KV Cache状況

構成 GPU上モデル KV Cache 特徴
Qwable IQ4 32K 約17.38 GiB 0.625 GiB かなり余裕あり
Qwable IQ4 128K 約17.38 GiB 2.50 GiB Context拡大で +1.875 GiB
Qwen 35B Q4 32K 約20.67 GiB 0.625 GiB 約9~10 GiB余裕
Qwen 35B Q4 128K 約20.67 GiB 2.50 GiB 約7~8 GiB余裕
Qwen 27B Q4 128K 約14.44 GiB 8.00 GiB KVが非常に大きい

5.1 MoE 35B.A3B系

Qwable / Qwen3.6 35B.A3B では、

  • 32K: 約0.625 GiB
  • 128K: 約2.50 GiB

となっており、Contextを4倍にするとKV Cacheもほぼ4倍になる。

128K化による増加量は約1.875 GiBで、31.8 GiBの総VRAMに対して比較的扱いやすい。

5.2 Qwen3.6 27B Q4_K

128K時のKV Cacheは約8 GiBと非常に大きい。

モデル本体は約14.44 GiBと比較的小さい一方で、長ContextではKV Cacheの占める割合が急増する。

したがって、Qwen3.6 27B Q4_Kは「モデルサイズ」だけを見ると軽量だが、長Context運用ではKV CacheがVRAM消費の主要因となる。

---

6. Prompt Cache / Context Checkpoint

Prompt Cache は最大 8 GiB が確保されている。

実測では以下のような省略率が確認されている。

モデル Context Cacheで省略
Qwable 35B.A3B IQ4_XS 32K 74.9%
Qwable 35B.A3B IQ4_XS 128K 72.0%
Qwen3.6 35B.A3B Q4_K 32K 90.3%
Qwen3.6 35B.A3B Q4_K 128K 76.5%
Qwen3.6 27B Q4_K 128K 75.4%

特に Qwen3.6 35B.A3B Q4_K / 32K では約90%のPrompt再処理を回避できており、会話継続時のレイテンシ削減効果が大きい。

Context Checkpoint は最大32個で、長い会話における既存Contextの再利用に寄与している。

---

7. Qwen3.6 27B-A3B Coder / Q8_0

7.1 モデル・実行構成

項目 実測値
モデル Qwen3.6 27B A3B Coder
総パラメータ 26.21B
Active expert A3B系
量子化 Q8_0
GGUFサイズ 25.98 GiB
BPW 8.51
GPU RX 9060 XT 16GB ×2
GPUオフロード 42/42 layers
GPU0 重み 13,100 MiB
GPU1 重み 12,365 MiB
CPU mapped 515 MiB
推定GPU使用量 約26.4 GiB
現在のContext 32,768
学習時Context 262,144
KV cache 640 MiB
KV形式 F16
Batch 512
Flash Attention 有効
Tool parser qwen3.5
Thinking 無効
Temperature 1.0

7.2 Decode速度

ログ上の32計測点を集計した結果は以下。

平均    : 約31.95 tokens/sec
最小    : 31.33 tokens/sec
最大    : 32.70 tokens/sec
標準偏差: 約0.26 tokens/sec

したがって、生成速度は ほぼ32 tok/sで非常に安定している。

代表的な推移:

100 tokens   → 32.70 tok/s
478 tokens   → 31.65 tok/s
1057 tokens  → 31.85 tok/s
1849 tokens  → 32.25 tok/s
2509 tokens  → 31.99 tok/s
3093 tokens  → 32.05 tok/s

3,000 tokenを超える長めの生成でも、明確な速度低下は見られない。

7.3 32K時のVRAM内訳

概算は以下。

Model weights   ≈ 25.5 GiB GPU
KV cache        ≈ 0.625 GiB
Compute buffers ≈ 0.22 GiB
Recurrent state ≈ 0.06 GiB
--------------------------------
合計予測        ≈ 25.8~26.4 GiB

Ollama側のfit計算では、GPU使用量は 26,396 MiB と予測されている。

総VRAM約31.8 GiBに対して、32K Contextでは約5 GiB前後の余裕が残る計算となる。

---

8. Qwen3.6 27B-A3B Coder / Q8_0 のContext拡張予測

32K時のKV Cacheが640 MiBであるため、単純比例した場合の概算は以下。

Context KV Cache概算
32K 640 MiB
64K 約1.25 GiB
128K 約2.5 GiB
256K 約5 GiB

128K時には、総GPU使用量が概ね 28~29 GiB程度になる可能性が高い。

31.8 GiBの実VRAM内には収まる可能性があるが、以下の追加メモリも存在するため、最終判断は実際のfit結果で確認する必要がある。

  • Compute Buffer
  • ROCm内部バッファ
  • Recurrent State
  • ランタイム側の予約領域
  • VRAM断片化

---

9. Q8_0の性能評価

Qwen3.6 27B-A3B Coder Q8_0 の特徴は、量子化精度を高く保ちながら約32 tok/sを実現している点にある。

比較対象として、35B A3B Q4系のDecode性能が約36~37 tok/sとすると、

  • Q4系: 約36~37 tok/s
  • Q8_0: 約32 tok/s

となり、Q8化による速度低下は概ね 約13%程度に留まる。

その一方で、Q8_0はQ4よりも重み精度を高く保持できるため、Tool Calling、Coding、構造化出力など精度を優先したい用途では有力な選択肢となる。

特に、約32 tok/sを安定して維持できている点から、対話型エージェントやTool Calling用途では速度と品質のバランスが良い。

---

10. モデル別の特徴

モデル 強み 注意点
Qwable 35B.A3B IQ4_XS Prefillが非常に高速、VRAM消費が小さい 長ContextでDecodeがやや低下
Qwen3.6 35B.A3B Q4_K Decode・Cache効率・品質のバランス QwableよりモデルVRAMが大きい
Qwen3.6 27B Q4_K モデル本体は比較的小さい Decodeが遅く、128KではKV Cacheが8 GiB
Qwen3.6 27B-A3B Coder Q8_0 高精度Q8で約32 tok/s、生成速度が安定 32K時点で約26 GiBを使用しVRAM余裕は小さめ

---

11. 結論

今回の RX 9060 XT ×2 / 31.8 GiB VRAM 環境では、MoE A3B系モデルとの相性が非常に良い

特に以下の傾向が確認できる。

  1. Prefill性能はQwable 35B.A3B IQ4_XSが最も高い

    • 約2,000~2,100 tok/s。
  2. Decode性能は35B.A3B系が30~40 tok/s台

    • 短Contextでは約41~43 tok/s。
    • 25K~33K程度では約31~35 tok/s。
  3. Context長はDecode性能へ明確に影響する

    • MoE 35B.A3B系では長Context化により約20%前後以上の速度低下が見られる。
  4. Prompt Cacheは実用上かなり有効

    • 約72~90%のPrompt処理を省略できるケースが確認されている。
  5. 35B.A3B系のKV Cacheは比較的小さい

    • 32Kで約0.625 GiB、128Kで約2.50 GiB。
  6. Qwen3.6 27B Q4_Kは長Context時のKV Cacheが大きい

    • 128Kで約8 GiB。
  7. Qwen3.6 27B-A3B Coder Q8_0は高精度と速度のバランスが良い

    • 平均約31.95 tok/s。
    • 生成長が3,000 tokenを超えても速度がほぼ一定。
    • Q4系に対する速度低下は概ね13%程度に留まる。

総合すると、この2GPU構成では、高速Prefill重視ならQwable IQ4_XS、汎用性・品質・速度のバランスならQwen3.6 35B.A3B Q4_K、高精度なCoding / Tool Calling用途ならQwen3.6 27B-A3B Coder Q8_0が有力である。

---

12. 参考ログ上の重要設定

GPU                 : Radeon RX 9060 XT ×2
Backend             : ROCm / gfx1200
VRAM                : 15.9 GiB ×2
NO\_PEER\_COPY        : 1
OLLAMA\_NUM\_PARALLEL : 1
Prompt Cache        : 8192 MiB
Context Checkpoints : max 32
Model train context : 262144
Flash Attention     : enabled

---

13. 測定値の扱い

本レポートの数値は、提示された実測ログ・集計結果を基に整理したものである。

実際の速度およびVRAM使用量は、以下の条件によって変動する可能性がある。

  • Prompt長
  • 実際に再利用可能なPrompt Cache量
  • Context内のToken数
  • Batch / UBatch
  • モデルの量子化方式
  • Tool Calling / Thinkingの有無
  • ROCm / llama.cpp / Ollamaバージョン
  • GPU間データ転送
  • VRAM断片化

追加測定枠: Gemma4-31B / Q4_K_M / 128K

注: 本節は既存のQwen / Qwable比較とは分離した追加測定枠である。
添付ログで確認できたGemma4-31Bは 128K設定のみのため、32K等の未測定値は補完していない。

A.1 モデル・実行構成

項目 実測値
モデル Gemma4-31B
Ollamaモデル gemma4_31b_128k:latest
Architecture gemma4
モデル規模 30.70B parameters / 31B
量子化 Q4_K - Medium
GGUFサイズ 17.37 GiB
BPW 4.86
Layer数 60
設定Context 131,072 token
学習時Context 262,144 token
Batch / UBatch 512 / 512
Flash Attention 有効
Prompt Cache 8 GiB
Context Checkpoint 最大32
Vision 有効 / Gemma4V projector
GPU Radeon RX 9060 XT 16GB ×2
GPUオフロード 50/61 layers

128K設定では全レイヤーをGPUへ載せ切れず、50/61 layersのみGPUオフロードとなっている。


A.2 VRAM / RAM構成

fit後の主要メモリ内訳

項目 ROCm0 ROCm1 Host 合計
Model 6,838 MiB 7,819 MiB 4,235 MiB 約18.45 GiB
Context 5,600 MiB 4,576 MiB 1,264 MiB 約11.17 GiB
Compute 1,253 MiB 276 MiB 156 MiB 約1.65 GiB
GPU側使用量 13,691 MiB 12,671 MiB 約25.74 GiB

GPU上のモデル重みは合計約 14.31 GiB

一方、fit計算ではモデルの一部がHost側へ退避されており、Host側Modelは約 4.14 GiB となっている。

なお、loaderは別途、

CPU_Mapped model buffer size = 17801.84 MiB

も報告している。これはmmapされたモデルバッファであり、fit内訳のHost Model値と単純加算して「実使用RAM」とみなすべきではない。


A.3 KV Cache

Gemma4-31Bでは、通常のnon-SWA KV CacheとSWA KV Cacheが別々に確保されている。

non-SWA KV Cache

CPU   : 1024 MiB
ROCm0 : 5120 MiB
ROCm1 : 4096 MiB
合計  : 10240 MiB

SWA KV Cache

CPU   : 240 MiB
ROCm0 : 480 MiB
ROCm1 : 480 MiB
合計  : 1200 MiB

合計

KV Cache 使用量
non-SWA 10,240 MiB
SWA 1,200 MiB
総KV Cache 11,440 MiB ≒ 11.17 GiB
GPU上KV 10,176 MiB ≒ 9.94 GiB
CPU上KV 1,264 MiB ≒ 1.23 GiB

このため、Gemma4-31B / 128Kでは、モデル本体よりもContext関連メモリの負担が非常に大きい

特に既存レポート内の35B.A3B系が128Kで約2.5 GiBのKV Cacheだったのに対し、Gemma4-31BではSWA分を含めて約11.17 GiBとなっている。


A.4 Prefill性能

ログ上で大きなPromptを新規処理した代表値は以下。

Prompt総長 新規Prefill token Prefill速度 Cache省略率
11,294 11,294 254.17 tok/s 0%
23,746 12,452 202.01 tok/s 約47.6%
23,820 79 34.62 tok/s 約99.67%
26,588 459 122.09 tok/s 約98.27%
31,539 2,610 156.88 tok/s 約91.72%
32,277 743 122.17 tok/s 約97.70%

完全な新規Bulk Prefillでは、今回のログ上で概ね 約200~254 tok/s

一方、会話継続時にはContext Checkpointが機能し、既存Contextの大部分を再利用できている。


A.5 Decode性能

18個の完了したeval time計測値を集計すると、

単純平均         : 約3.06 tok/s
全生成token加重 : 約2.98 tok/s
最小             : 2.82 tok/s
最大             : 3.78 tok/s
標準偏差         : 約0.21 tok/s

代表的なContext長との関係は以下。

Prompt Context Decode
11,294 3.78 tok/s
23,746 3.02 tok/s
23,820 3.06 tok/s
26,132 3.24 tok/s
26,588 2.91 tok/s
31,539 2.91 tok/s
32,277 2.82 tok/s

11K Context付近では3.78 tok/sだったが、23K~32K付近では概ね 2.8~3.2 tok/sで推移している。


A.6 Context Checkpoint

Gemma4-31BではContext Checkpoint 1個あたり、

約799~800 MiB

という非常に大きなサイズがログ上で確認されている。

Prompt Cache上限は8 GiBであるため、Gemma4-31B / 128Kでは、Qwen系と比べてCheckpointそのもののメモリコストも大きい。


A.7 性能上の特徴

Gemma4-31B / Q4_K_M / 128K構成では、以下が特に大きな特徴となる。

  1. GGUF自体は17.37 GiBと比較的収まりが良い

    • 30.70B parametersをQ4_K_Mで約17.37 GiBまで圧縮している。
  2. 128K ContextのKV Cacheが約11.17 GiBと非常に大きい

    • GPUだけでも約9.94 GiBをKV Cacheが使用する。
  3. 全レイヤーGPUオフロードが成立しない

    • 実測では50/61 layers。
    • fit内訳ではHost側にも約4.14 GiBのModel領域が配置される。
  4. Decodeは約3 tok/s

    • 18計測点の加重平均は約2.98 tok/s。
    • 23K~32K Contextでは概ね2.8~3.2 tok/s。
  5. Prefillは約200~254 tok/s

    • 既存のMoE 35B.A3B系より大幅に低い。
  6. Prompt再利用自体は有効

    • 継続リクエストでは約98~99%以上を省略できるケースも確認できる。

ボトルネックの推定

ログ上では、

  • 50/61 layersのみGPUオフロード
  • Host側Model配置あり
  • 約11.17 GiBのKV Cache
  • Batch 512時にgraph splits = 180
  • GPU/CPU双方にContextとModelが分散

となっている。

したがって、この128K設定の約3 tok/sというDecode速度は、モデル計算量だけではなく、VRAM不足による部分CPUオフロードとGPU/CPU間の処理分散が大きなボトルネックになっている可能性が高い


A.8 総評

Gemma4-31B / Q4_K_Mはモデルファイル単体では17.37 GiBとRX 9060 XT ×2環境に収めやすいが、128K ContextではKV Cacheだけで約11.17 GiB必要となる。

その結果、

GPU Model       ≈ 14.31 GiB
GPU Context/KV  ≈  9.94 GiB
GPU Compute     ≈  1.49 GiB
--------------------------------
GPU使用量       ≈ 25.74 GiB

となり、モデルの一部をHostへ退避する必要が生じている。

実測Decodeは約3 tok/sであり、今回のRX 9060 XT ×2環境では、Gemma4-31Bを128K固定で使用する構成は「動作はするが、速度面ではCPUオフロードの影響が非常に大きい」構成と評価できる。

一方で、Prompt Cache / Context Checkpointによる再利用は機能しており、継続会話ではPromptの再処理量を大幅に削減できている。

測定上の注意: 添付ログで確認できたGemma4-31Bは128K設定のみであり、32K / 64Kで全レイヤーGPUオフロードが可能になるか、またその場合のDecode速度がどこまで改善するかは、このログだけからは確定できない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?