はじめに
EVO-X2 ( Ryzen AI Max+ 395 ) を購入時の素のままに LM Studio をインストールして遊んでいたのですが、大きなコンテキストサイズを使うとプロンプトプロセッシングの時間が異常に長くなりました。そこで、Ubuntu 24.04 をインストールして、ollama の docker コンテナで実行したところ、この問題が解決しましたので、ついでに他のマシンとの動作速度比較をしてみました。
比較対象のスペック
今回の比較に用いたマシンのスペックは以下のとおりです。
EVO-X2 | Galleria | Mac Book Air | |
---|---|---|---|
CPU | Ryzen AI Max+ 395 | Ryzen 7 5700X | Apple M4 |
CPU Core | 16 core | 8 core | 10 core |
Memory Size | 128GB (UMA) | 64GB | 32GB (UMA) |
GPU | Radeon 8060S | GeForce RTX4060Ti | Apple GPU |
GPU Unit | 40 UNIT | 34 SM | 10 Core |
VRAM size | 64-96GB (UMA) | 16GB | < 21GB? (UMA) |
OS | Ubuntu 24.04 | Ubuntu 24.04 | MacOS 15.5 |
LLM Engine | Ollama | Ollama | LM Studio |
比較の方法
EVO-X2 と Galleria には docker をそれぞれの環境に合わせてインストールし、ほぼ同じ内容の docker-compose.yml を作成して、実行しています。Flash Attention オプションはなし、kv_cache は量子化なしにしてあります。Mac Book Air の方は MLX モデルと GGUF モデルの両方を使いたかったので、LM Studio で同じ条件になるようにしました。
3 つの比較対象の全てで、Gemma3 の 1B, 4B, 12B, 27B の GGUF.Q4_K_M のモデルで、実行し、加えて Mac Book Air M4 では 同じモデル・サイズのMLXモデルでも実行しました。入力プロンプトは Make a brief history of LLM.
としました。プロンプト入力時の top_k はすべての場合で 1 にしました。
EVO-X2 および Galleria にはローカルのターミナルで以下のスクリプトの実行をしました。
for i in 1b 4b 12b 27b; do \
echo -n "gemma3:$i "; \
curl -s http://localhost:11434/api/generate -d "{ \
\"model\":\"gemma3:$i\", \
\"prompt\": \"Make a brief history of LLM.\", \
\"options\": { \"top_k\": 1 } \
}" \
| jq -s '.[-1] | (.eval_count / (.eval_duration/1e9))'; \
done
結果は以下のように表示されます。
gemma3:1b 153.59607937908683
gemma3:4b 75.86148050584481
gemma3:12b 31.207385283883006
gemma3:27b 6.94770277167098
Mac Book Air については LM Studio を GUI を手動で操作して、結果を得ました。
結果
結果を以下の表にまとめました。単位は token/sec です。
EVO-X2 | Galleria | Mac Book Air (MLX) |
Mac Book Air (GGUF) |
|
---|---|---|---|---|
Gemma3:1b | 126.5 | 156.6 | 128.8 | 77.6 |
Gemma3:4b | 56.8 | 75.9 | 40.7 | 31.7 |
Gemma3:12b | 21.7 | 31.2 | 14.2 | 10.1 |
Gemma3:27b | 10.4 | 7.0 | 6.1 | 4.4 |
全体的には GeForce RTX4060Ti を搭載している Galleria が一番速い結果ですが、VRAM が枯渇する Gemma3:27b では EVO-X2 に逆転を許します。それより小さいサイズでも EVO-X2 は健闘しています。一方 Mac Book Air は MLX モデルを使えば概ね他2つのマシンと同等の結果で、GGUF モデルよりも速いです。
Mac の人は MLX モデルがあるなら、こちらを積極的に使う方がいいでしょう。ただ、モデルサイズが大きくなるに従って動作速度が他のマシンよりも遅くなる割合が大きいです。ここは注意すべきかもしれません。
まとめ
以下のようにまとめました。
- Ryzen AI Max+ 395 ( Radeon 8060S )、RTX4060Ti、Apple M4 ( GPU 10 コア ) のそれぞれで Gemma3 の各サイズのLLMモデルを実行して比較しました。
- 全体的には概ね同様の性能と言って良いと思いますが、VRAM が潤沢な Ryzen AI Max+ 395 が大きなモデルで力を見せました。
- Apple M4 の性質なのか、LM Studio の問題なのか、モデルが大きくなるに従って動作速度が他よりも遅くなる傾向が見られました。
- Ryzen AI Max+ 395 および Apple M4 はどちらもまだ NPU を利用できていない状況のため、将来的にはどちらも性能向上が期待できます。
- コストパフォーマンスとしては Ryzen AI Max+ 395 が一番良さそうです。
付録
EVO-X2 ( Ryzen AI Max+ 395 ) 用の docker-compose.yml
services:
ollama:
image: ollama/ollama:rocm
container_name: ollama
volumes:
- ollama:/root/.ollama
environment:
- HSA_OVERRIDE_GFX_VERSION=11.5.1
- OLLAMA_HF_TOKEN=${HF_TOKEN}
ports:
- "11434:11434"
restart: always
devices:
- "/dev/kfd:/dev/kfd"
- "/dev/dri:/dev/dri"
volumes:
ollama:
Galleria ( GeForce RTX4060Ti ) 用の docker-compose.yml
$ cat docker-compose.yml
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
runtime: nvidia
volumes:
- ollama:/root/.ollama
environment:
- NVIDIA_VISIBLE_DEVICES=0
- CUDA_VISIBLE_DEVICES=0
- NVIDIA_DRIVER_CAPABILITIES=compute,utility
# - OLLAMA_FLASH_ATTENTION=1
- OLLAMA_HF_TOKEN=${HF_TOKEN}
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: [gpu]
count: 1
ports:
- "11434:11434"
restart: always
volumes:
ollama: