Open5
EVO-X2 (Ubuntu) で amd-strix-halo-toolboxes を使って高速推論
AMD Strix Halo Llama.cpp Toolboxes は、EVO-X2 などの AMD Ryzen AI Max “Strix Halo” アーキテクチャのPC向けに、最新のバックエンドとビルド済み Llama.cppセットでコンテナにしたツールキット。
ベンチマークを見ると、かなりのスピードで推論できることがわかる。
【以下抜粋】
Prompt Processing (pp512) — tokens/second
Model | rocm6_4_3-rocwmma | vulkan_amdvlk | vulkan_radv |
---|---|---|---|
gpt-oss-120b | 732.72 | 540.81 | 255.50 |
gpt-oss-20b | 1480.28 | 1467.61 | 732.35 |
Text Generation (tg128) — tokens/second
Model | rocm6_4_3-rocwmma | vulkan_amdvlk | vulkan_radv |
---|---|---|---|
gpt-oss-120b | 45.14 | 48.25 | 50.41 |
gpt-oss-20b | 64.45 | 69.47 | 72.05 |
LM Studio のデフォルトが Vulkan llama.cpp なので、Text Generation の値はほぼ同じだと思われる(実際、大差ない)のだが、Prompt Processing の速度の差が大きい。
コーディングエージェントなどで使う場合はこの差は大きいはず。
前提
- GMKtec EVO-X2 128GB / Ubuntu 24.04.03 LTS / kernel: 6.11.0-29-generic
- AMDGPU driver と ROCm をインストール済み
使い方
# 依存をインストール
sudo apt update
sudo apt install podman podman-toolbox
# amdvlk(おすすめ)の toolbox を作成
toolbox create llama-vulkan-amdvlk \
--image docker.io/kyuz0/amd-strix-halo-toolboxes:vulkan-amdvlk \
-- --device /dev/dri --group-add video --security-opt seccomp=unconfined
# コンテナに入る
toolbox enter llama-vulkan-amdvlk
# llama-server を起動
llama-server \
-hf ggml-org/gpt-oss-120b-GGUF \
--alias gpt-oss-120b \
--n-gpu-layers 999 \
--flash-attn on \
--ctx-size 0 \
--threads -1 \
--jinja \
--no-mmap \
--temp 1.0 \
--min-p 0.0 \
--top-p 1.0 \
--top-k 0.0 \
--host 0.0.0.0 --port 8080
注意
- mxfp4のモデルを使う
- 推奨パラメーターはunslothのページを参照
ROCm系はさらに工夫がいる。
# ROCm 6.4.3 の toolbox を作成
toolbox create llama-rocm-6.4.3-rocwmma \
--image docker.io/kyuz0/amd-strix-halo-toolboxes:rocm-6.4.3-rocwmma \
-- --device /dev/dri --device /dev/kfd \
--group-add video --group-add render --group-add sudo --security-opt seccomp=unconfined
Ubuntu だと、これだけではGPUを掴めない。
toolbox enter llama-rocm-6.4.3-rocwmma
llama-server <options>
# ...
# ==> warning: no usable GPU found, --gpu-layers option will be ignored
# ... ^C
id
# uid=1000(me) gid=1000(me) groups=1000(me),10(wheel)
ls -l /dev/dri/renderD*
# crw-rw----+ 1 nobody nobody 226, 128 Sep 2 01:19 /dev/dri/renderD128
ls -l /dev/kfd
# crw-rw---- 1 nobody nobody 236, 0 Sep 2 01:19 /dev/kfd
どうやらFedora向けのツールなのでuser idが噛み合わず、下記のような状態になっている。
- 自分が
render
video
グループに入っていない -
/dev/dri
/dev/kfd
自体は見えているが、所有者がnobody
になっているのでアクセスできない(render
,video
グループに自分を追加しても効果がない)
これを修正する。
# 一度コンテナを出る
exit
下記のページに、「システム上のすべてのユーザーにGPUのアクセス権を付与する」設定があるので、これを適用する。
/etc/udev/rules.d/70-amdgpu.rule
を作成して以下を保存。
/etc/udev/rules.d/70-amdgpu.rule
KERNEL=="kfd", MODE="0666"
SUBSYSTEM=="drm", KERNEL=="renderD*", MODE="0666"
ルールをリロード(再起動もいるかも)
sudo udevadm control --reload-rules && sudo udevadm trigger
これでtoolboxコンテナ内のユーザーからもGPUが見えるようになる。
# もう一度コンテナに入る
toolbox enter llama-rocm-6.4.3-rocwmma
ls -l /dev/kfd
# crw-rw-rw-+ 1 nobody nobody 236, 0 Sep 7 20:37 /dev/kfd
ls -l /dev/dri/renderD128
# crw-rw-rw-+ 1 nobody nobody 236, 0 Sep 7 20:37 /dev/kfd
/opt/rocm/bin/rocminfo
# ==>GPU情報が表示されるはず
llama-server # オプションは先ほどと同じでOK
これでいけるはず。
参考ベンチマーク gpt-oss-120b llama-bench (token/second)
backend => | rocm6_4_3-rocwmma | rocm-7rc-rocwmma | vulkan-amdvlk | vulkan-radv |
---|---|---|---|---|
pp512 | 772.60 ± 4.71 | 767.49 ± 4.75 | 756.31 ± 5.30 | 418.15 ± 3.50 |
tg128 | 45.72 ± 0.12 | 45.56 ± 0.69 | 48.34 ± 0.04 | 50.58 ± 0.07 |
vulkan-amdvlk が総合的に優秀なので私はこれを使っています。
なぜか私の環境では kyuz0 氏の環境よりPPが大幅に速いです。