うちではEVO-X2にUbuntuを入れてローカルLLMを運用している。
いっときLlama.cpp Serverで動かしていたが、色々なモデルを試すにはOllamaが手軽なんだよなあってことで今はOllamaを使う方向に戻っている。
昨晩サーバ環境をアプデをしていたら思いのほか沼ってしまって、最初スルッといけたのが幸運だっただけで意外とバージョンまわりの相性があるものなのかもなと思ったので、今時点での環境を記録に残しておこうと思う。
OS・カーネル
LTSなUbuntu24.04.4を使用。
$ cat /etc/os-release PRETTY_NAME="Ubuntu 24.04.4 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.4 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=noble LOGO=ubuntu-logo
カーネルは6.14。
$ uname -r 6.14.0-24-generic
ROCm・ドライバ
昨日の沼りどころは結果的にいえばここで、僕の今時点での運用では最新ではない7.1.1で動かす感じになる。
$ apt list --installed rocm 一覧表示... 完了 rocm/noble,now 7.1.1.70101-38~24.04 amd64 [インストール済み]
$ modinfo amdgpu | grep ^version version: 6.16.6
Docker
Dockerは29.3.0。
$ docker version Client: Docker Engine - Community Version: 29.3.0 API version: 1.54 Go version: go1.25.7 Git commit: 5927d80 Built: Thu Mar 5 14:25:48 2026 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 29.3.0 API version: 1.54 (minimum version 1.40) Go version: go1.25.7 Git commit: 83bca51 Built: Thu Mar 5 14:25:48 2026 OS/Arch: linux/amd64 Experimental: false containerd: Version: v2.2.2 GitCommit: 301b2dac98f15c27117da5c8af12118a041a31d9 runc: Version: 1.3.4 GitCommit: v1.3.4-0-gd6d73eb8 docker-init: Version: 0.19.0 GitCommit: de40ad0
Ollama
Ollamaはこれまた直近で動きが怪しくて、うちの環境では0.17.7がちゃんと動く最新バージョンになっている。
ホストはROCm7.1.1なのにDockerfileは7.2ベースでよくよく考えると変な感じはするが、実際問題今のところこれで動いてるんだよなあ。
外部からOLLAMA_VERSION変数によりインストールバージョンを指定できるようなものを用意しておいて・・・
FROM rocm/dev-ubuntu-24.04:7.2
SHELL ["/bin/bash", "-lc"]
ARG OLLAMA_VERSION
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates curl zstd \
&& rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://ollama.com/install.sh | sh
VOLUME ["/root/.ollama"]
ENV OLLAMA_HOST=0.0.0.0:11434
EXPOSE 11434
CMD ["ollama", "serve"]
以下のようなdocker-compose.ymlで0.17.7を指定している。
services: ollama: restart: always build: context: . args: - OLLAMA_VERSION=0.17.7 environment: - OLLAMA_ORIGINS=* - HSA_OVERRIDE_GFX_VERSION=11.5.1 - HIP_VISIBLE_DEVICES=0 - ROCR_VISIBLE_DEVICES=0 group_add: - video - render security_opt: - seccomp=unconfined - label=disable cap_add: - SYS_PTRACE ports: - "11434:11434" devices: - /dev/kfd:/dev/kfd - /dev/dri:/dev/dri volumes: - /opt/amdgpu/share/:/opt/amdgpu/share/:ro - ollama:/root/.ollama
Ollamaの方を0.17.8以降にしようとするとどうもOllamaが上手くGPU動作せず、Ollamaのリポジトリを眺めるに直近でのビルドはROCm7.2ベースになったりしてて、一方で自分の環境はROCm7.1.1だったので「じゃあ上げとくか」という軽いノリで昨晩いじってたんだけど、そうすると既存で動いていたイメージすらVRAMのアロケートエラーが生じてOllamaがGPUを見つけてくれずCPUでの激重動作になってしまうという状態に陥っちゃったんだよなあ・・・
長期的には解決して最新版を追いたいとこではあるが、Dockerを挟んでるのがもしかすると難しさの一因かもしれない。
ついでの機会なんでローカルモデルについて語ると、色々と大きな動きがあった去年後半と打って変わって今年に入ってからは個人的にはそこまで心躍るニュースは乏しいかな。
というのも今のところのローカルLLM体感としては~20bは用途を特化すればなんとか、20~30bとかのサイズでギリ汎用用途で使えそうって肌感を持っていて、だからこそグラボでなんとか動かしていた時期は色々な特色あるモデルを試したりファインチューニングを試みる価値を感じていた。
でもそれがgpt-oss:120bが実用ラインの速度で動いてくれる環境を持ってしまうと、大体の用途でそれなりに上手く働いてくれるので、「まあ、gpt-oss:120b使っとけば良いか」って気分になってしまうのだ。
Qwen3.5はすごく評価する意見と否定する意見の両方を目にするんだけど、単純にあえて切り替えて使うだけのモチベが沸いてないとこはある。
あまりにサイズに見合わない高評価はベンチマークリーク的なやつなんじゃないかって警戒心が湧いてしまうわけでして、変な落とし穴を恐れて積極的には使いたくないなと思ってしまう面がある。
画像認識できるんで局所的な用途では普通に便利なんだけどね。
追記: ROCm7.2にして公式イメージollama/ollama:0.18.2-rocm動かせた!
記事書くだけ書いちゃったけど、やっぱ最新が動かないの気持ち悪いよねってことでGeminiパイセン片手に試行錯誤して上手いこと動かせたっぽい!
既存のROCmまわりのものをキッチリ消した上で
# 既存のインストーラーを削除 sudo apt purge amdgpu-install -y sudo apt autoremove -y # リポジトリ設定ファイルのバックアップ(または削除) sudo rm /etc/apt/sources.list.d/amdgpu.list sudo rm /etc/apt/sources.list.d/rocm.list sudo apt update
現時点でのlatestであるROCm7.2に入れ替えて・・・ rocm.docs.amd.com
以下のyamlに書き換え。
services:
ollama:
image: ollama/ollama:0.18.2-rocm
container_name: ollama
restart: always
environment:
# APIへの外部アクセスを許可する場合に設定(CORS対策)
- OLLAMA_ORIGINS=*
# 【重要】iGPU (APU) での初期化失敗やフリーズを防ぐための設定
- HSA_ENABLE_SDMA=0
# 【重要】Strix Point (gfx1151) を認識させるための環境変数
- HSA_OVERRIDE_GFX_VERSION=11.5.1
# GPUデバイスへのアクセス権限設定
group_add:
- video
# デバッグやプロファイリングに必要な権限
cap_add:
- SYS_PTRACE
# SELinux環境下などで権限エラーが出る場合の回避策
security_opt:
- label:disable
ports:
- "11434:11434"
devices:
# AMD GPUの計算およびレンダリングに必要なデバイスファイル
- /dev/kfd:/dev/kfd
- /dev/dri:/dev/dri
volumes:
# モデルデータの永続化
- ollama_data:/root/.ollama
volumes:
ollama_data:
昨晩とサーバ環境が変わったか、はたまた取り除いた環境変数や設定要素のどれかが効いたのかは定かではないが、ひとまずこれで最低限WebUIでの応答はできてることは確認。
思いの外スムーズにいけて拍子抜け。やっぱりPCまわりのトラブルは(許されるなら)一晩置いて落ち着いてから取り掛かるのが良いなあ。
これまでの経験的にollama:rocmはcudaと比べてシェアが低くてテストされずらいせいか、不意のアプデで急に挙動が怪しくなることがあるので、都度バージョンタグを明記しての運用がおすすめ。
ベンチマーク
記録ついでなんでROCm7.2・Ollama0.18.2環境でのベンチマークも残してみた。
計測コマンド
# 基本プロンプト
PROMPT="量子コンピュータの仕組みを500文字程度で解説してください。"
# 計測用ワンライナー
curl -s http://localhost:11434/api/generate -d "{
\"model\": \"<model_name>\",
\"prompt\": \"$PROMPT\",
\"stream\": false
}" | jq -r '"Tokens/s: \(.eval_count / (.eval_duration / 1000000000))"'
モデル
| モデル名 | 平均速度 (Tokens/s) | 評価 |
|---|---|---|
| nemotron-3-nano:30b | 60.03 | 最速。思考の速度を完全に上回る書き込み。 |
| gpt-oss:20b | 48.78 | 爆速。ほぼ瞬時に出力完了。 |
| qwen3.5:35b | 43.12 | 極めて快適。30b帯としては非常に優秀な数値。 |
| gpt-oss:120b | 35.43 | 驚異的。巨大モデルながら並のモデルより速い。 |
| qwen3.5:122b | 19.90 | 実用的。人間が読む速度より速い。 |
| nemotron-3-super:120b | 19.18 | 実用的。Qwen122bと同等の体感。 |
| gemma3:27b | 12.04 | 標準的。音読〜速読の間くらいの流体感。 |
| qwen3.5:27b | 11.04 | 標準的。今回の計測環境ではサイズに対して伸び悩む。 |
計測データ
nemotron-3-nano:30b
今回の計測でトップの数値を記録。30bクラスながら最適化が凄まじい。
Trial 1: 60.89 T/s
Trial 2: 59.52 T/s
Trial 3: 59.67 T/s
gpt-oss:20b
Trial 1: 48.43 T/s
Trial 2: 49.29 T/s
Trial 3: 48.64 T/s
qwen3.5:35b
Trial 1: 42.90 T/s
Trial 2: 43.24 T/s
Trial 3: 43.22 T/s
gpt-oss:120b
Trial 1: 35.48 T/s
Trial 2: 35.22 T/s
Trial 3: 35.60 T/s
qwen3.5:122b
Trial 1: 19.79 T/s
Trial 2: 19.84 T/s
Trial 3: 20.07 T/s
nemotron-3-super:latest
Trial 1: 19.12 T/s
Trial 2: 19.18 T/s
Trial 3: 19.27 T/s
gemma3:27b
Trial 1: 12.05 T/s
Trial 2: 12.04 T/s
Trial 3: 12.04 T/s
qwen3.5:27b
Trial 1: 11.15 T/s
Trial 2: 10.95 T/s
Trial 3: 11.01 T/s
こう並べてみると、gpt-oss:120bがやっぱり「ちょうど良い」感あるなあ。
念の為に以前のllama.cpp serverのvulkanの構成を引っ張り出してきてgpt-oss:120bで同内容を計測してみたけど、平均35.34T/sと現行のollama:rocmとであれば速度は変わらなそう。
これで心置きなくOllamaで運用できるってもんだ。
あと個人的にローカルLLM関連で気になるところといえば、そろそろGemmaの後継モデルが欲しいとこだけど、Googleさんどうでしょう?
