この記事はLLM・LLM活用 Advent Calendar 2025の16日目の記事です。
qiita.com
環境
- Ubuntu 24.04
- カーネル: 6.17.0-1008-oem
- llama.cpp build: 6ce863c80 (7508)
はじめに
RTX4090では乗らないようなLLMモデルを動かしたかったので、先日Minisforum MS-S1 MAXを購入した。メモリ爆上がり前のギリギリで購入できてよかった。
blog.turai.work
kyuz0氏が作成してくれたDockerfileを使ってllama.cpp用イメージをビルド、運用している。
github.com
モデルはQwenのQwen3-235B-A22B-Instruct-2507をUD-Q3_K_XL量子化モデルで使用している。
実用的な速度(15t/s)で生成されるので悪くない。
しかし生成が速いに越したことはない。色々考えた結果、 Dockerがボトルネックになって遅くなってしまっているんじゃないか と考えた。
コンテナで仮想化しているんだから必ずボトルネックは存在する。構築しやすいしメンテナンス性も高いのでDockerを使用していたが、
ホスト側にllama.cppをインストールして実行すれば最速になるんじゃないかと企てた。
同様のことを考えている方もいらっしゃった。
EVO-X2 (Ubuntu) で amd-strix-halo-toolboxes を使って高速推論
実際にベンチマーク取ってみたのが本記事の話。
ホスト環境構築
まずはLinuxカーネル。Dockerfile
を見てみると最新のカーネルを使用するためにfedoraを使っているらしい。
生まれてこの方Ubuntuしか使ったことがないのでUbuntuで 面倒な 自前ビルドせずに最新をインストールする。
標準カーネル(generic)ではなくoem版は、特定のハードウェアに最適化された特別なカーネルパッケージである。
sudo apt install linux-oem-24.04d
再起動すると6.17になっている。
❯ uname -r
6.17.0-1008-oem
余談だがMinisforum MS-S1 MAXでは10G NICを2つ積んでいるがデフォルトのカーネルではドライバーが対応していなくて使えてなかった。
oem最新版だと認識するようになった。
AMDVLKのインストール
GPUドライバー。amdvlk自体は開発終了して非推奨になっているので注意(私の環境だとrocmより安定しているので使用している)
wget https://github.com/GPUOpen-Drivers/AMDVLK/releases/download/v-2025.Q2.1/amdvlk_2025.Q2.1_amd64.deb
sudo apt install amdvlk_2025.Q2.1_amd64.deb
インストール後は再起動すること
依存パッケージのインストール
パッケージは、Dockerfileに書かれていたインストールパッケージをGeminiにapt向けに変換させたのが主である。
sudo apt-get install \
build-essential cmake ninja-build ccache \
clang lld mold libclang-dev libclang-rt-dev libomp-dev \
libcurl4-openssl-dev \
libvulkan-dev vulkan-tools mesa-vulkan-drivers \
radeontop glslc glslang-tools
llama.cppのビルド
ビルドオプションやコマンドはDockerfileを参考にしている。
export CC=clang
export CXX=clang++
export LDFLAGS="-fuse-ld=mold"
git clone --recursive https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
cmake -S . -B build -G Ninja \
-DGGML_VULKAN=ON \
-DCMAKE_BUILD_TYPE=Release \
-DGGML_RPC=ON \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLLAMA_BUILD_TESTS=OFF \
-DLLAMA_BUILD_EXAMPLES=ON \
-DLLAMA_BUILD_SERVER=ON
cmake --build build --config Release
sudo cmake --install build --config Release
確認
❯ llama-cli --version
ggml_vulkan: Found 1 Vulkan devices:
ggml_vulkan: 0 = AMD Radeon 8060S (AMD open-source driver) | uma: 1 | fp16: 1 | bf16: 0 | warp size: 64 | shared memory: 32768 | int dot: 0 | matrix cores: KHR_coopmat
version: 7508 (6ce863c80)
built with Clang 18.1.3 for Linux x86_64
最初、デバイスがないと言われてしまったが、
❯ llama-cli --version
ggml_vulkan: No devices found.
version: 7508 (6ce863c80)
built with Clang 18.1.3 for Linux x86_64
グループの追加が足りてなかった。
sudo usermod -aG video,render $USER
ログアウトして再ログインして llama-cli --version したら解決。
ベンチマークのコマンドは以下
❯ /usr/bin/llama-bench \
-m ~/.cache/llama.cpp/unsloth_Qwen3-235B-A22B-Instruct-2507-GGUF_UD-Q3_K_XL_Qwen3-235B-A22B-Instruct-2507-UD-Q3_K_XL-00001-of-00003.gguf \
-p 2048 \
-n 128 \
--repetitions 2 \
--flash-attn 1 -ngl 99 --threads 16 --cache-type-k q8_0 --cache-type-v q8_0 --batch-size 2048 --ubatch-size 1024
Docker版
| model |
size |
params |
backend |
ngl |
n_ubatch |
type_k |
type_v |
fa |
mmap |
test |
t/s |
| qwen3moe 235B.A22B Q3_K - Medium |
96.99 GiB |
235.09 B |
Vulkan |
99 |
1024 |
q8_0 |
q8_0 |
1 |
0 |
pp2048 |
137.79 ± 0.11 |
| qwen3moe 235B.A22B Q3_K - Medium |
96.99 GiB |
235.09 B |
Vulkan |
99 |
1024 |
q8_0 |
q8_0 |
1 |
0 |
tg128 |
17.65 ± 0.00 |
非Docker版
| model |
size |
params |
backend |
ngl |
n_ubatch |
type_k |
type_v |
fa |
test |
t/s |
| qwen3moe 235B.A22B Q3_K - Medium |
96.99 GiB |
235.09 B |
Vulkan |
99 |
1024 |
q8_0 |
q8_0 |
1 |
pp2048 |
136.08 ± 0.52 |
| qwen3moe 235B.A22B Q3_K - Medium |
96.99 GiB |
235.09 B |
Vulkan |
99 |
1024 |
q8_0 |
q8_0 |
1 |
tg128 |
17.71 ± 0.01 |
別に速くなってなくて草
まとめ
これからもDockerよろしくな!!!!!