最近買ったEVO X2でローカルLLMを動かそうと色々試してみていました。
- ollama
- LM Studio
- llama.cpp
などがよく聞く手段でしょうか。NVIDIA製のGPUであれば上記のどれでも安定して動くと思います。
しかしEVO X2はAMD製のGPUなため微妙に安定しません。特にrocmというNVIDIAでいうところのCUDA相当のライブラリはまだryzen ai max+ 395のGPUには対応していないようで、うまく認識されないようです。
結論: llama-cppのllama-serverが安定
- GPUアクセスの方法は2種類ある
- rocmはまだ安定しているといえない
- vulkanは安定している
- ollamaのrocmで色々動かそうとすると安定しない
- LM Studioは安定して動作するがGUIを起動していないといけないので外部からアクセスさせたりする場合には不便。waypipeなどを使っても良いが自分の求めているものとは少し違う
- llama.cppのllama-serverのvulkanを使うようにビルドしたものが安定している
環境
- 計算機 EVO X2
- メモリ128GBモデル
- OS Ubuntu 24.04
ちなみに、Ubuntu 25.10などを入れるとamdのgpuインストールに失敗したりするので、Ubuntu 24.04をインストールするのがおすすめです。
rocmかvulkanか
現在GPGPUを実現する方法として、AMDのGPU用のrocmというライブラリと、vulkanという汎用のGPU向けのAPIを利用する2種類があります。
rocmの方がAMDが自身のGPU向けに提供しているものなので性能なども期待できますが、まだryzen ai max+ 395には対応していません。
vulkanは汎用のAPIのため、GPUが使えるマシンであれば多くのマシンで動作します。IntelのArcなどではこちらを使ったりしているらしいです。(手持ちのマシンにArcが載っているものがないので未検証です)
ollamaで試してみる
ollamaを以下のようなdocker-composeを使って動作させて様子を見てみました。
これは、rocmを使ってollamaを動かすものになっています。
services:
ollama:
image: ollama/ollama:rocm
container_name: ollama
volumes:
- ollama:/root/.ollama
ports:
- "11434:11434"
restart: always
environment:
- HSA_OVERRIDE_GFX_VERSION=11.5.1
devices:
- "/dev/kfd:/dev/kfd"
- "/dev/dri:/dev/dri"
volumes:
ollama:
上記の設定で起動してくれましたが、VRAMのサイズが適切になったりならなかったり、動いていたと思ったらGPUの扱いが適切でない箇所でシステムごと停止してしまったり、安定して動作してくれませんでした。
このあたりは、rocm6系ではまだryzen ai max+ 395の対応がないため発生している問題だと思われます。rocmのバージョン7がそろそろ出ると思うので、ryzen ai max+ 395に正式に対応していることを期待したいですね。
ollamaはvulkanサポートについてあまり積極的ではないらしく存在していません。
LM Studioで試してみる
LM StudioはGUIが付いているローカルLLMを動作させるようなアプリになっています。
これにopenai互換のサーバを稼働させる機能がありそれを動かすことで検証してみました。
現状では
- vulkan互換のGPUとして動作
- rocmとしてはGPUが認識されない
というような状況になるようで、LM Studio上だとvulkanを使って動作検証をしてみました。
結果としては安定して動作し、常用できそうな雰囲気です。
このサーバだけ常に起動できるとサーバで常時起動しているような形で宅内にLLMサーバを提供できてうれしいと思ったのですが、そういうことはできないようです。LM Studioは起動するためにどうしてもGUIが必要なようです。cliツールもついてくるのですがこれはGUIで起動しているLM Studioを操作するという形のモノのようです。
llama.cppのllama-server
最後にllama.cppを試すことにしました。前者2つのollamaとLM Studioもライブラリとしてこのllama.cppを利用している形になっています。機能的には最もプリミティブなものとなっていてモデルの管理機能など便利な機能は全然ないものとなっています。
手動でコンパイルなどを行って環境を作っていきます。
まずは llama.cpp のリポジトリをクローンしていきます。
$ git clone https://github.com/ggml-org/llama.cpp.git
そしてコンパイルします
$ sudo apt install libvulkan-dev glslc cmake build-essential libcurlpp-dev
$ mkdir build-vulkan
$ cmake -B build-vulkan -DGGML_VULKAN=ON
$ cmake --build build-vulkan --config Release -j
build-vulkan ディレクトリに成果物が出来ています。
$ ls -l build-vulkan
合計 324K
drwxrwxr-x 34 sakura sakura 4096 8月 14 13:02 CMakeFiles/
drwxrwxr-x 2 sakura sakura 4096 8月 14 13:00 Release/
drwxrwxr-x 3 sakura sakura 4096 8月 14 13:00 Testing/
drwxrwxr-x 2 sakura sakura 4096 8月 14 13:02 bin/
drwxrwxr-x 3 sakura sakura 4096 8月 14 13:02 common/
drwxrwxr-x 23 sakura sakura 4096 8月 14 13:00 examples/
drwxrwxr-x 4 sakura sakura 4096 8月 14 13:00 ggml/
drwxrwxr-x 4 sakura sakura 4096 8月 14 13:00 pocs/
drwxrwxr-x 3 sakura sakura 4096 8月 14 13:00 src/
drwxrwxr-x 3 sakura sakura 4096 8月 14 13:00 tests/
drwxrwxr-x 17 sakura sakura 4096 8月 14 13:00 tools/
-rw-rw-r-- 1 sakura sakura 33951 8月 14 13:00 CMakeCache.txt
-rw-rw-r-- 1 sakura sakura 445 8月 14 13:00 CTestTestfile.cmake
-rw-r--r-- 1 sakura sakura 2562 8月 14 13:00 DartConfiguration.tcl
-rw-rw-r-- 1 sakura sakura 64249 8月 14 13:00 Makefile
-rw-rw-r-- 1 sakura sakura 5471 8月 14 13:00 cmake_install.cmake
-rw-rw-r-- 1 sakura sakura 154741 8月 14 13:00 compile_commands.json
-rw-rw-r-- 1 sakura sakura 1765 8月 14 13:00 llama-config.cmake
-rw-r--r-- 1 sakura sakura 2771 8月 14 13:00 llama-version.cmake
-rw-rw-r-- 1 sakura sakura 246 8月 14 13:00 llama.pc
binディレクトリの下に、色々バイナリが作られていて llama-server もその中にあります。
さっそく実行してみましょう。
$ cd llama.cppをcloneしたディレクトリ
$ ./build-vulkan/llama-server -hf unsloth/gpt-oss-20b-GGUF \
--ctx-size 1000000 \
--jinja \
--cpu-moe \
--n-gpu-layers 999 \
-fa --host 0.0.0.0 --api-key dummy
これで、vulkan対応のllama-serverが起動します。使うモデルは最近公開された gpt-ossの20bのモデルになります。
http://localhost:8080/ にアクセスすると簡易なチャットのUIが表示されます。

問題なく動いてくれそうです。また、clineやほかのシステムと合わせて動作させてみたところ安定して動作しているようです。
rocmを使ったものもあるようなのですが、ollamaやLM Studioの状況を鑑みるにrocmの環境で安定すると思えなかったので検証はしないことにしました。rocmの7が出たら検証してみようかと思います。
最後にsystemdのユニットファイルを作成して常時起動させるようにしてみます。
このファイルを ~/.config/systemd/user/llama-server.service
という名前で作成します。
[Unit]
Description=LLama-Server (unsloth/gpt-oss-20b-GGUF)
After=network.target
[Service]
WorkingDirectory=<llama.cppをチェックアウトしたディレクトリ>
ExecStart=<llama-serverのバイナリのフルパス> -hf unsloth/gpt-oss-20b-GGUF --ctx-size 1000000 --jinja --cpu-moe --n-gpu-layers 999 -fa --host 0.0.0.0 --api-key dummy
# 再起動の設定
Restart=always
RestartSec=5
StartLimitInterval=60
StartLimitBurst=5
[Install]
WantedBy=multi-user.target
そして、以下のコマンドを実行して常時起動するようにします。
systemctl --user daemon-reload
systemctl --user enable llama-server.service
systemctl --user start llama-server.service
systemctl --user status llama-server.service
起動してくれないようなら、 journal --user -u llama-server
などでログを見て設定を調整します。
まとめ
EVO X2(というより、ryzen ai max+ 395)で、ローカルLLMを動作させる環境についてまとめてみました。
定番っぽいollamaとLM Studioでは安定しなかったり、自分の用途には合わなかったので最終的にllama.cppをコンパイルして環境構築するということになってしまいました。
rocmの7が公開されたら状況が変わるかと思いますが、それまでのつなぎの環境としては悪くない環境かなと思います。
2025/08/24 追記
gpt-oss-20b の場合だと、cpu-moeのオプションは不要で、色々試行錯誤した結果、以下のオプションの方が高速で動作しました。
ExecStart=<llama-serverのパス> \
-hf unsloth/gpt-oss-20b-GGUF \
--jinja \
--n-gpu-layers 999 \
-c 262144 \
-fa \
--host 0.0.0.0 \
--api-key dummy
この設定だと
llama-server[7220]: prompt eval time = 259.17 ms / 70 tokens ( 3.70 ms per token, 270.09 tokens per second)
llama-server[7220]: eval time = 5324.22 ms / 372 tokens ( 14.31 ms per token, 69.87 tokens per second)
llama-server[7220]: total time = 5583.39 ms / 442 tokens
これくらいの生成速度が出るようです。