ローカルLLMをEVO X2でホストする方法まとめ

投稿者: | 2025年8月23日

最近買った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

これくらいの生成速度が出るようです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です