手元でローカルLLMを普段使いしていて、
- RTX 4060 Ti 16GB ×2
- Ryzen AI Max+ 395内蔵のRadeon 8060S
の両方を使う機会があったので、同じプロンプトをGemma 4 31Bに食わせたときの速度を比べてみました。
ちなみにそれぞれの環境は以下のとおりです。
■自作PC側
マザボ:ASRock B550M Pro4
PCIe 4.0 x16スロット (16 レーン幅)
PCIe 3.0 x16スロット(4 レーン幅)
電源:560W(FD-PSU-IONP-560P-BK)
GPU:RTX 4060 Ti 16GB ×2
1枚目:Palit NE6406T019T1-1061J(ドスパラ3連ファンモデル)
2枚目:GV-N406TWF2OC-16GD(GIGABYTE製2連ファンモデル)
メモリ:DDR4 8GBx4
CPU:Ryzen 5 3600
■Radeon 8060S側
ミニPC機種名:EVO-X2
CPU/GPU:Ryzen AI Max+ 395(Radeon 8060S)
メモリ:128GB(LPDDR5X-8000)
結果
Prefill
RTX 4060 Ti ×2 ██████████████████████████████████████████████ 927.60 tok/s
Radeon 8060S █████████ 185.43 tok/s
LM Studio ████████ 158.84 tok/s
Decode
RTX 4060 Ti ×2 ██████████████████ 17.70 tok/s
Radeon 8060S ████████████████████ 19.53 tok/s
LM Studio ███████████ 10.63 tok/s
表にするとこんな感じ。
| 環境 | Prefill | Decode | 16,951 tokensのPrefill時間 |
|---|---|---|---|
| RTX 4060 Ti 16GB ×2 / llama.cpp(CUDA) | 927.60 tok/s | 17.70 tok/s | 18.27秒 |
| Radeon 8060S / llama.cpp(Vulkan) | 185.43 tok/s | 19.53 tok/s | 91.41秒 |
| Radeon 8060S / LM Studio(llama.cpp / Vulkan) | 158.84 tok/s | 10.63 tok/s | 106.72秒 |
Prefillは4060 Ti ×2が約5倍速い。
なのにDecodeになると、
Radeon 8060Sと4060 Ti ×2がまさかのほぼ互角。
という結果になりました。
Radeonがすごいんだか、4060 Ti君がヘボいんだか……。
※ちなみにllama.cppはllama-serverで起動させて、OpenAI互換API経由で別のチャットアプリからプロンプトを投げ、応答分を取得する、という形で使用しています。
なお、この記事は厳密なGPU性能比較ではありません
実際に普段使っている環境で、
同じプロンプトを投げたらこれだけ挙動が違った
というのをメモしただけです。
比較しているモデルも、
RTX側:
gemma-4-31B-it-UD-IQ3_XXS.gguf
Radeon側:
google_gemma-4-31B-it-IQ3_XXS.gguf
で、同じGemma 4 31Bの3bit級とはいえ量子化内容が完全に同じではありません。
さらに、
- KV Cacheの量子化方式
- batch / ubatch
- Flash Attention
- MTP設定
などにも差があります。
本当にGPUそのものを比較したいなら、この辺を全部揃えるべきです。
今回は、
まあどっちもGemma 4 31BのIQ3_XXS級だし、だいたい似たようなもんとして見てみよう
くらいの雑さです。
なので、4060 Tiは8060Sより5.00倍速いという主張ではありません。
ただ、実用していたらこれくらい極端な差が見えたので、「条件をきっちり揃えて測っても結構差が出るんだろうな」という程度の話です。
……嘘です、本音は「Radeon 8060SではRTX 4060Tiにも勝てなかったか……」という悲しみのお気持ち表明です。
(元々Ryzen AI Max+ 395の強みはメモリ量の多さであって速度ではないだろ、という点はさておく)
使用環境
RTX 4060 Ti側
GPU:
RTX 4060 Ti 16GB ×2
バックエンド:
CUDA 12.4
llama.cpp:
8172e65
モデル:
gemma-4-31B-it-UD-IQ3_XXS.gguf
MTP:
mtp-gemma-4-31B-it-Q8_0.gguf
Radeon側
GPU:
Radeon 8060S
CPU:
Ryzen AI Max+ 395
バックエンド:
Vulkan
llama.cpp:
8172e65
モデル:
google_gemma-4-31B-it-IQ3_XXS.gguf
MTP:
mtp-google_gemma-4-31B-it-Q8_0.gguf
Radeon 8060SはRyzen AI Max+ 395に内蔵されているGPUです。
RTX 4060 Ti 16GB ×2
起動時の主要な設定はこんな感じ。
/path/to/llama.cpp/build/bin/llama-server
--host 127.0.0.1
--metrics
--offline
--model-draft
/path/to/models/gemma-4-31B-it/mtp-gemma-4-31B-it-Q8_0.gguf
--spec-draft-n-max 1
--spec-type draft-mtp
--alias gemma-4-31b-it-ud-iq3-xxs
--ctx-size 65536
--cache-type-k q4_0
--cache-type-v q4_0
--fit-target 1536
--model
/path/to/models/gemma-4-31B-it/gemma-4-31B-it-UD-IQ3_XXS.gguf
--mmproj
/path/to/models/gemma-4-31B-it/mmproj-F16.gguf
--n-gpu-layers 99
--ubatch-size 256
同じプロンプトを投入した結果がこちら。
[37645] 2.24.845.283 I slot print_timing: id 3 | task 0 | prompt eval time = 18273.99 ms / 16951 tokens ( 1.08 ms per token, 927.60 tokens per second)
[37645] 2.24.845.286 I slot print_timing: id 3 | task 0 | eval time = 118885.90 ms / 2105 tokens ( 56.50 ms per token, 17.70 tokens per second)
[37645] 2.24.845.286 I slot print_timing: id 3 | task 0 | total time = 137159.89 ms / 19056 tokens
[37645] 2.24.845.292 I slot print_timing: id 3 | task 0 | graphs reused = 1175
[37645] 2.24.845.293 I slot print_timing: id 3 | task 0 | draft acceptance = 0.77853 ( 921 accepted / 1183 generated), mean len = 1.78
注目するのはここ。
prompt eval: 927.60 tok/s
eval: 17.70 tok/s
16,951 tokensのPrefillが、
18.27秒
で終わっています。
速い。長いプロンプトを投げても、かなり短時間で本文生成に入ります。
Radeon 8060S
こちらも同じllama.cppコミット。
8172e65
バックエンドはVulkanです。
主な設定はこちら。
/path/to/llama.cpp/build/bin/llama-server
--cache-prompt
--host 127.0.0.1
--jinja
--metrics
--offline
--model-draft
/path/to/models/gemma-4-31B-it/mtp-google_gemma-4-31B-it-Q8_0.gguf
--spec-type draft-mtp
--alias google-gemma-4-31b-it-iq3-xxs
--batch-size 1024
--ctx-size 65536
--cache-type-k q8_0
--cache-type-v q8_0
--flash-attn on
--model
/path/to/models/gemma-4-31B-it/google_gemma-4-31B-it-IQ3_XXS.gguf
--mmproj
/path/to/models/gemma-4-31B-it/mmproj-google_gemma-4-31B-it-f16.gguf
--n-gpu-layers 99
--threads 4
--ubatch-size 1024
結果。
[53953] 4.54.591.913 I slot print_timing: id 3 | task 0 | prompt eval time = 91413.98 ms / 16951 tokens ( 5.39 ms per token, 185.43 tokens per second)
[53953] 4.54.591.925 I slot print_timing: id 3 | task 0 | eval time = 199016.28 ms / 3887 tokens ( 51.21 ms per token, 19.53 tokens per second)
[53953] 4.54.591.927 I slot print_timing: id 3 | task 0 | total time = 290430.26 ms / 20838 tokens
[53953] 4.54.591.937 I slot print_timing: id 3 | task 0 | graphs reused = 1270
[53953] 4.54.591.946 I slot print_timing: id 3 | task 0 | draft acceptance = 0.67523 ( 2603 accepted / 3855 generated), mean len = 3.03
こちらは、
prompt eval: 185.43 tok/s
eval: 19.53 tok/s
16,951 tokensのPrefillに、
91.41秒
かかっています。
Prefill:約5倍差
ここはかなり露骨です。
RTX 4060 Ti ×2
927.60 tok/s
Radeon 8060S
185.43 tok/s
計算するとほぼ5倍。
時間で見るともっと分かりやすいです。
| GPU | 16,951 tokensを読む時間 |
|---|---|
| RTX 4060 Ti ×2 | 18.27秒 |
| Radeon 8060S | 91.41秒 |
約73秒差。ここまで違うと、ベンチマークを取らなくても普段使っていて普通に気付くレベルの速度差です。
特に、
- 長大なシステムプロンプト
- RAG
- ソースコード大量投入
- 長文要約
- 過去ログを大量に含むチャット
みたいな使い方では、Prefill性能が応答時間に直結します。
なのにDecodeはほぼ互角
RTX 4060 Ti ×2
17.70 tok/s
Radeon 8060S
19.53 tok/s
Radeonのほうが数字上は速い。
もちろん約10%程度の違いなので、今回みたいな条件の揃っていない比較で、
Radeon 8060SはRTX 4060 Ti ×2よりDecode性能が高い!
とは言えません。ここは「だいたい互角」と見るべきでしょう。
そして今回の測定結果で、Radeon側のllama.cppバックエンドに使っているのはROCm/HIPではなくVulkanです。少なくとも手元の条件では、ROCm 10よりVulkanのほうがDecode性能がかなり高く出ました。
ちなみに別日に、同じRadeon 8060SでROCm 10とVulkanを比較したところ、以下の結果になりました。
少なくともこの条件では、Decode重視ならVulkanを選びたくなる結果です。頼むよROCm……
| 項目 | ROCm 10 | Vulkan | 差 |
|---|---|---|---|
| Prompt tokens | 7,806 | 7,806 | 同一 |
| Generated tokens | 1,833 | 1,913 | Vulkanが80 tokens多い |
| Total tokens | 9,639 | 9,719 | Vulkanが80 tokens多い |
| Prefill | 208.81 tok/s | 200.52 tok/s | ROCm が約 4.1%高速 |
| Prefill時間 | 37.38 s | 38.93 s | ROCm が約1.55秒短い |
| Decode | 11.61 tok/s | 17.02 tok/s | Vulkan が約 46.6%高速 |
| Decode 1token | 86.11 ms | 58.75 ms | Vulkan が約31.8%低遅延 |
| 実測総時間 | 195.13 s | 151.26 s | Vulkan が約22.5%短い |
参考:RTX4060TiのVRAMとEVO-X2のLPDDR5の帯域幅が意外と近い
今回、Decodeでは
RTX 4060 Ti ×2 : 17.70 tok/s
Radeon 8060S : 19.53 tok/s
と、かなり近い数字になりました。
これを見て気になったので、メモリ周りのスペックも並べてみます。
| 環境 | メモリ | バス幅 | 理論メモリ帯域幅 |
|---|---|---|---|
| Radeon 8060S / Ryzen AI Max+ 395 | LPDDR5X-8000 | 256-bit | 256 GB/s |
| RTX 4060 Ti 16GB | GDDR6 18Gbps | 128-bit | 288 GB/s |
Radeon 8060Sを搭載するRyzen AI Max+ 395は、256-bit幅のLPDDR5X-8000を使用し、AMD公称のメモリ帯域幅は256 GB/sです。
一方RTX 4060 Ti 16GBは128-bit GDDR6で、帯域幅は288 GB/s。
つまり単体同士で見ると、
Radeon 8060S 256 GB/s
RTX 4060 Ti 288 GB/s
で、実はメモリ帯域幅そのものは1.125倍程度しか違いません。
288 / 256 = 1.125
この数字を見ると、
DecodeでRadeon 8060SがRTX 4060 Tiにかなり近い速度を出す
という結果も、それほど不思議ではないのかもしれません。
LLMのDecodeは大量のモデル重みを繰り返し読み出すため、計算性能だけではなくメモリ帯域幅の影響をかなり受けます。
もちろんRadeon 8060S側はCPUと共有するLPDDR5X、RTX側はGPU専用GDDR6なので、単純に「256 GB/sと288 GB/sだから性能も同じ」とは言えません。
さらにRTX 4060 Tiには32MBのL2キャッシュがあり、NVIDIA自身もこの大容量L2によってVRAMへのトラフィックを減らしていると説明しています。
それでもスペック表だけを見ると、
演算性能ではかなり違うGPU
↓
しかしメモリ帯域幅は意外と近い
↓
Decodeではかなり近い速度になる
という今回の結果には、それなりに納得感があります。
ただし今回のRTX側は2枚構成
注意したいのは、今回測定したRTX環境は
RTX 4060 Ti 16GB ×2
だという点です。
RTX 4060 Tiは1枚あたり288 GB/sなので、
288 GB/s × 2 = 576 GB/s
と書きたくなりますが、2枚挿したから1つのGPUとして576 GB/sの共有メモリ帯域幅になるわけではありません。
それぞれのGPUが、
GPU 0 → 自分の16GB VRAM : 288 GB/s
GPU 1 → 自分の16GB VRAM : 288 GB/s
という独立したメモリを持っています。
llama.cppでモデルを複数GPUへ分割した場合、それぞれのGPUは自分が担当するモデルデータを自分のVRAMから読みます。
そのため並列に働けば2枚分の帯域を利用できますが、GPU間通信やモデルの分割方法なども絡むので、
288 × 2 = 576 GB/s
をそのままRadeon 8060Sの256 GB/sと比較するのは適切ではありません。
むしろ今回面白いのは、
理論上は2枚の独立したGDDR6を使える4060 Ti環境なのに、Decodeでは共有LPDDR5XのRadeon 8060Sとほぼ同じ速度になった
というところでしょう。
PrefillではRTX側が約5倍速かった一方、Decodeではほぼ互角。
つまるところローカルLLMでは単純なGPUの演算性能がPrefillに、メモリ帯域がdecodeにそれぞれ直結するということですね。
何が言いたいかといえば結局はつよつよGPUにVRAM積みまくるのが最強、という身も蓋もない話です。ヤンナルネ……
「LLMが○○tok/s出た」だけだと実態が分からない
今回改めて思い知ったのがこれです。
ローカルLLMの速度というと、Decode側、つまり「文章を何tok/sで生成できるか」だけが注目されがちです。というか、筆者自身そこばかり気にしていました。
でも実際の処理は大雑把には、
- プロンプトを読む:Prefill
- 文章を書く:Decode
に分かれますし、長文コンテキストを放り込むならその分だけPrefill所要時間も無視できない要素になってきます。
今回の結果だと、
| GPU | Prefill | Decode |
|---|---|---|
| RTX 4060 Ti ×2 | 927.60 | 17.70 |
| Radeon 8060S | 185.43 | 19.53 |
です。
Prefillだけ見れば「やっぱりiGPUではdGPUに届かなかった」という割と普通の話ではあるのですが、Decodeがほぼ互角なのが今回の面白いところです。
ついでにLM Studioでも試してみた
ここからはGPU比較というより、Radeon 8060S環境での余談です。
同じEVO-X2上で、LM Studio内蔵のllama.cppでも同じプロンプトを投げてみました。
環境は、
LM Studio 0.4.24 (build 1)
Vulkan llama.cpp 2.34.0
llama.cpp release b10864
commit 5d806aa25
結果はこちら。
5.04.004.572 I slot print_timing: id 3 | task 0 | prompt eval time = 106715.52 ms / 16951 tokens ( 6.30 ms per token, 158.84 tokens per second)
5.04.004.579 I slot print_timing: id 3 | task 0 | eval time = 185951.60 ms / 1978 tokens ( 94.06 ms per token, 10.63 tokens per second)
5.04.004.580 I slot print_timing: id 3 | task 0 | total time = 292667.12 ms / 18929 tokens
5.04.004.589 I slot print_timing: id 3 | task 0 | graphs reused = 1970
結果は、
Prefill 158.84 tok/s
Decode 10.63 tok/s
でした。
一方、自分でビルドしたllama.cppは、
Prefill 185.43 tok/s
Decode 19.53 tok/s
です。
並べると、
| Radeon 8060S | Prefill | Decode |
|---|---|---|
| ネイティブllama.cpp | 185.43 tok/s | 19.53 tok/s |
| LM Studio | 158.84 tok/s | 10.63 tok/s |
特にDecodeが、
19.53
↓
10.63
とかなり違います。
最初にLM Studioで動かしたときは、
Radeon 8060Sってこんなもんなのか……
と思ったのですが、自分でllama.cppをビルドして動かしてみると全然違いました。
てか結構な期間をLM Studioで使ってたから、かなり損してたな……
今回のLM Studio環境が遅かった理由を考える
この差をそのまま「LM Studioそのもののオーバーヘッド」と見るのは早計だと思います。今回まず大きいのは、LM Studio内蔵のllama.cppと、自分でビルドしたllama.cppのバージョンが違うことです。
llama.cppは更新頻度が非常に高いため、LM Studio側でパッケージ化されたランタイムと、Gitから取得して自分でビルドした版では、バックエンドの最適化状況に差が出ることがあります。
なので今回もLM Studioと直接実行したllama.cppはバージョンが違います。
ネイティブ側:
8172e65
LM Studio側:
b10864
commit 5d806aa25
です。
今回言えるのは、
手元のEVO-X2では、LM Studioに入っているllama.cppより、自分でビルドした新しいllama.cppを直接動かしたほうがかなり速かった
というところまでです。
ちなみにMTPについても、自分が試した時点のLM Studioではうまく動作しませんでした。
今となっては改善されているかもしれませんが……まあこの速度差を知っちゃったからには……ネ……
(MTPのような新機能も、生のllama.cppを追っているほうが早く試せることが多いですし……)
追試:RTX 4060 Ti 16GB ×1でも実行してみた
せっかくなので、RTX 4060 Tiを2枚ではなく1枚だけ使用した場合も試してみました。
ただし、このテストでは先ほどのRTX 4060 Ti ×2環境とは違って、MTPを無効化しています。
理由は単純で、4060 Ti 16GBを1枚だけ使う構成では、メインモデルを載せた時点でVRAM容量に余裕がなく、MTP用のドラフトモデルを同居させられなかったためです。
つまり、
RTX 4060 Ti ×2
→ メインモデル + MTPモデルをVRAM上に配置可能
RTX 4060 Ti ×1
→ メインモデルだけでVRAMがほぼ埋まり、MTPモデルを追加できない
という違いがあります。
そのため、
RTX 4060 Ti ×2
vs
RTX 4060 Ti ×1
は純粋なGPU枚数だけの比較ではありません。
特にDecodeについては、×2側だけMTPによる投機的デコードが有効になっているので、その差も含まれています。
あくまで、
4060 Tiを1枚だけ使った場合、VRAM容量の都合でMTPなしになる実用構成ではこれくらい出た
という参考値です。
主な設定
主要部分だけ書くとこんな感じです。
/path/to/llama.cpp/build/bin/llama-server
--host 127.0.0.1
--metrics
--offline
--spec-type none
--alias gemma-4-31b-it-ud-iq3-xxs
--ctx-size 65536
--cache-type-k q4_0
--cache-type-v q4_0
--device CUDA0
--fit-target 1536
--model
/path/to/models/gemma-4-31B-it/gemma-4-31B-it-UD-IQ3_XXS.gguf
--mmproj
/path/to/models/gemma-4-31B-it/mmproj-F16.gguf
--n-gpu-layers 99
--ubatch-size 256
--device CUDA0を指定して、4060 Tiを1枚だけ使用しています。
また、
--spec-type none
としているのは、単なる比較条件の変更ではなく、16GB VRAMではMTP用モデルまで載せきれなかったためです。
実行結果
同じ16,951 tokensのプロンプトを投入した結果はこちら。
[50701] 3.51.612.869 I slot print_timing: id 3 | task 4 | prompt eval time = 29472.58 ms / 16951 tokens ( 1.74 ms per token, 575.14 tokens per second)
[50701] 3.51.612.872 I slot print_timing: id 3 | task 4 | eval time = 176997.44 ms / 2600 tokens ( 68.10 ms per token, 14.68 tokens per second)
[50701] 3.51.612.873 I slot print_timing: id 3 | task 4 | total time = 206470.02 ms / 19551 tokens
[50701] 3.51.612.878 I slot print_timing: id 3 | task 4 | graphs reused = 2589
結果は、
Prefill : 575.14 tok/s
Decode : 14.68 tok/s
でした。
16,951 tokensのPrefill時間は、
29.47秒
です。
4060 Ti ×1、×2、Radeon 8060Sを並べる
ここまでの結果を並べるとこうなります。
| 環境 | MTP | Prefill | Decode | 16,951 tokensのPrefill時間 |
|---|---|---|---|---|
| RTX 4060 Ti 16GB ×2 | あり | 927.60 tok/s | 17.70 tok/s | 18.27秒 |
| RTX 4060 Ti 16GB ×1 | VRAM不足のためなし | 575.14 tok/s | 14.68 tok/s | 29.47秒 |
| Radeon 8060S | あり | 185.43 tok/s | 19.53 tok/s | 91.41秒 |
Prefill時間が露骨に下がっていますね。
4060 Tiを1枚から2枚にすると、
575.14 tok/s
↓
927.60 tok/s
なので、2倍とまでは行かないものの約1.61倍まで伸びています。
今回の条件ではMTPの有無なども違うため、純粋なマルチGPU性能のスケーリングとは言えませんが、少なくとも実用上は2枚構成によってかなり性能が向上していることが分かります。
ちなみに今回のRTX 4060 Ti ×2環境は、マザーボード側の仕様により2枚のGPUを以下のPCIe接続で使用しています。
| GPU | 物理スロット | マザーボード側 | GPU側を含むリンク上限 | 理論帯域幅(片方向) |
|---|---|---|---|---|
| RTX 4060 Ti #1 | PCIe x16 | PCIe 4.0 x16 | PCIe 4.0 x8 | 約15.75 GB/s |
| RTX 4060 Ti #2 | PCIe x16 | PCIe 3.0 x4 | PCIe 3.0 x4 | 約3.94 GB/s |
つまり2枚目は、見た目こそx16スロットですが、マザーボード側では電気的にPCIe 3.0 x4接続です。
一方、1枚目を挿している上段スロット自体はPCIe 4.0 x16ですが、RTX 4060 Ti側のインターフェースはPCIe 4.0 x8までなので、実カード基準ではx8が上限になります。
帯域幅だけ比べると、
1枚目:PCIe 4.0 x8 ≒ 15.75 GB/s
2枚目:PCIe 3.0 x4 ≒ 3.94 GB/s
なので、2枚目側のPCIe帯域は1枚目の約1/4です。
15.75 / 3.94 ≒ 4
かなりアンバランスな構成です。
なお、ここでいう15.75 GB/sや3.94 GB/sはPCIeの理論上の片方向データ帯域です。実際のアプリケーションではプロトコル処理などもあるため、この値がそのまま実効転送速度になるわけではありません。
それでも、
PCIe 4.0 x8 + PCIe 3.0 x4
という、2枚目側についてはかなり帯域が細くなっている状態での2枚構成でも
Prefill
575.14 → 927.60 tok/s
まで伸びたのは興味深いところです。
llama.cppのマルチGPU推論では、常時すべてのモデルデータをGPU間で往復させているわけではなく、各GPUのVRAMに分割して配置したモデルをそれぞれ処理するため、PCIe帯域の差がそのまま推論性能差になるわけではありません。
とはいえGPU間通信が必要になる場面では、当然このPCIe 3.0 x4側がボトルネックになり得ます。
今回の結果だけでは断定できませんが、4060 Tiを2枚ともPCIe 4.0 x8相当で接続できるような環境なら、マルチGPU時の性能がさらに伸びる可能性はあります。ただし、どこまで効くかはモデル分割方式やGPU間通信量にも左右されるので、実測しないと分かりません。
Prefillは1枚でもRadeonよりかなり速い
4060 Ti ×1でも、
4060 Ti ×1
575.14 tok/s
Radeon 8060S
185.43 tok/s
となりました。
比率としては、
575.14 / 185.43 ≒ 3.10
なので、今回の条件では4060 Ti 1枚でもPrefillはRadeon 8060Sの約3.1倍です。
これは結構大きな差です。
2枚構成だからPrefillが速かった、というだけではなく、少なくとも今回の環境では4060 Ti単体でもPrefill性能はかなり高いことが分かります。
やはり古いとはいってもNVIDIAのGPU……まだまだAMDには頑張って対抗していっていただきたいところ……
2枚化のメリットは速度だけではなかった
4060 Ti ×1と×2を比べると、
×1 : 575.14 tok/s
×2 : 927.60 tok/s
なので、Prefillは約1.61倍に伸びています。
ただ、今回の構成では2枚化のメリットは速度だけではありません。
2枚にすることでVRAM容量に余裕ができ、MTP用モデルまで同時にロードできるようになった
という点も大きいです。
つまり今回の4060 Ti ×2構成は、
速度が上がる
+
利用可能なVRAM容量が増える
+
MTPを有効化できる
という3つの変化が同時に起きています。
そのため、
14.68 tok/s
↓
17.70 tok/s
というDecodeの差を、単純に「GPUが2枚になったから1.21倍速くなった」と解釈することはできません。
×2側ではMTPも有効になっているからです。
逆に言えば、今回の結果は、
GPUを増やすことは単に演算資源を増やすだけではなく、VRAM不足で使えなかった推論機能を使えるようにする
というローカルLLM特有の事情もよく表していると思います。
まとめ:今回見えたこと
今回の実測をかなり雑にまとめると、
- Radeon 8060Sと比較すると、Prefillは(古いGPUであろうとも)RTX 4060 Tiが明確に強い。1枚でもRadeon 8060Sの約3.1倍、2枚構成では約5倍だった
- DecodeはRadeon 8060Sがかなり健闘しており、今回の条件ではRTX 4060 Ti ×2とほぼ同じレンジだった
- Radeon 8060Sでは、今回試した範囲ではROCm 10よりVulkanのほうがDecodeが速かった
- RTX 4060 Ti ×2は速度だけでなく、VRAM容量が増えることでMTPを同居させられるという実用上のメリットもあった
- 同じRadeon 8060Sでも、LM Studio内蔵版と自前ビルドのllama.cppでかなり速度差が出た。何なら生のllama.cppに乗り換えただけで2倍以上に伸びた
という結果でした。
もちろん、モデル、量子化、KV Cache、MTP、batch / ubatchなどが完全には揃っていないので、これはGPUの厳密なベンチマークではありません。
ただ、「同じくらいのモデルを実際に使ったとき、PrefillとDecodeでここまで性格が変わる」という点はかなり面白い結果でした。
次にやるなら、同一GGUF・同一パラメータ・MTPなしなど条件を揃えて、もう少し真面目に比較してみたいところです。
