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系モデルとの相性が非常に良い。
特に以下の傾向が確認できる。
-
Prefill性能はQwable 35B.A3B IQ4_XSが最も高い
- 約2,000~2,100 tok/s。
-
Decode性能は35B.A3B系が30~40 tok/s台
- 短Contextでは約41~43 tok/s。
- 25K~33K程度では約31~35 tok/s。
-
Context長はDecode性能へ明確に影響する
- MoE 35B.A3B系では長Context化により約20%前後以上の速度低下が見られる。
-
Prompt Cacheは実用上かなり有効
- 約72~90%のPrompt処理を省略できるケースが確認されている。
-
35B.A3B系のKV Cacheは比較的小さい
- 32Kで約0.625 GiB、128Kで約2.50 GiB。
-
Qwen3.6 27B Q4_Kは長Context時のKV Cacheが大きい
- 128Kで約8 GiB。
-
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構成では、以下が特に大きな特徴となる。
-
GGUF自体は17.37 GiBと比較的収まりが良い
- 30.70B parametersをQ4_K_Mで約17.37 GiBまで圧縮している。
-
128K ContextのKV Cacheが約11.17 GiBと非常に大きい
- GPUだけでも約9.94 GiBをKV Cacheが使用する。
-
全レイヤーGPUオフロードが成立しない
- 実測では50/61 layers。
- fit内訳ではHost側にも約4.14 GiBのModel領域が配置される。
-
Decodeは約3 tok/s
- 18計測点の加重平均は約2.98 tok/s。
- 23K~32K Contextでは概ね2.8~3.2 tok/s。
-
Prefillは約200~254 tok/s
- 既存のMoE 35B.A3B系より大幅に低い。
-
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速度がどこまで改善するかは、このログだけからは確定できない。