はじめに
AMD Ryzen AI MAX+ 395(Strix Halo / XDNA2 NPU)搭載の Ubuntu マシンで、FastFlowLM (FLM) を使って NPU 上で LLM を動かすまでの最短手順をまとめます。ポイントは、カーネルを 7.0 へ上げずに、現行 6.x のまま PPA + DKMS で導入することです。
本記事は AMD Ryzen AI MAX+ 395 (Strix Halo) の XDNA2 NPU を Ubuntu 24.04 で動かす — Lemonade + FastFlowLM で Qwen3.5-9B 推論 のアップデート版です。前記事では Lemonade Server 経由のセットアップを扱いましたが、本記事ではより軽量に FLM 単体を Ollama 感覚で直接叩くルートと、手順を整理した最短インストールに焦点を当てています。
検証環境: NucBox EVO X2 / Ryzen AI MAX+ 395 / Ubuntu / kernel
6.17.0-35-generic
0. 前提と対応状況
- FLM (FastFlowLM) = AMD Ryzen AI NPU 専用の軽量 LLM ランタイム。Ollama ライクな CLI で使える。
- Linux ネイティブ対応は 2026年3月(FLM 0.9.35〜) から。
- 必須条件は XDNA2 NPU。Strix Halo(Ryzen AI MAX 300-series)は対応。
- ⚠️ XDNA1(Ryzen AI 7000 / 8000 / 200-series)は Linux 非対応。
- ドライバ
amdxdnaはカーネル 7.0+ で in-tree。6.x ではamdxdna-dkmsで入れるので 7.0 へ上げる必要はない。
| 項目 | 要件 |
|---|---|
| NPU ファームウェア | 1.1.0.0 以降 |
| カーネル + ドライバ | 7.0+ の in-tree、または amdxdna-dkms
|
| ランタイム | FastFlowLM |
| Memlock | NPU 実行に十分な値(サービス運用なら自動で infinity) |
1. インストール手順(Ubuntu 24.04 / 6.x カーネル)
1-1. カーネルヘッダを入れる(DKMS ビルド用)
sudo apt install linux-headers-$(uname -r)
1-2. PPA を追加して XRT + DKMS ドライバを導入
sudo add-apt-repository ppa:lemonade-team/stable
sudo apt update
sudo apt install libxrt-npu2 amdxdna-dkms
1-3. 再起動
sudo reboot
1-4. FLM 本体を導入
FastFlowLM GitHub releases から .deb を取得して:
sudo apt install ./<flm_package.deb>
2. 検証
flm validate
成功例(実機での確認値):
[Linux] Kernel: 6.17.0-35-generic
[Linux] NPU: /dev/accel/accel0 with 8 columns
[Linux] NPU FW Version: 1.1.2.65
[Linux] amdxdna version: 0.6
[Linux] Memlock Limit: 7991 MB
ドライバのロード確認:
lsmod | grep amdxdna # amdxdna が出ればOK
ls -l /dev/accel/ # accel0 が存在すればOK
lspci | grep -i signal # "Signal processing controller ... 17f0" = NPU
3. ハマりどころと対処(このセットアップで実際に遭遇した順)
⭐ ① render グループ未所属 ← 最頻出・本命
症状: sudo なしだと [ERROR] No NPU device found.、sudo flm validate だと正常認識。
原因: /dev/accel/accel0 の所有が root:render(crw-rw---- root render)。
ユーザが render グループに居ないとデバイスを開けない。
対処:
groups # render が無いか確認
sudo usermod -aG render $USER
# 一度ログアウト→ログインし直す(再ログイン必須。確実を期すなら再起動)
groups # render が含まれていればOK
flm validate # sudo なしで通るはず
② amd_iommu=off が付いていないか
症状: ドライバはロード済みなのに No NPU device found(IOMMU 由来の場合)。
原因: IOMMU 無効化で NPU が検出されない。Strix Halo では llama.cpp の GPU 性能が
わずかに上がるとして amd_iommu=off を付けている人が多いが、これは NPU を殺す。
確認・対処:
cat /proc/cmdline # amd_iommu=off / iommu=off が無いか
dmesg | grep -i -e amdxdna -e iommu
付いていたら /etc/default/grub の GRUB_CMDLINE_LINUX_DEFAULT から削除 →
sudo update-grub → 再起動。cmdline がクリーンなのに検出されないなら BIOS で IOMMU / AMD-Vi を Enabled に。
正常時の dmesg では
AMD-Vi: IOMMU performance counters supportedや
[drm] Initialized amdxdna_accel_driver 0.6.0 ...が出る。
loading out-of-tree module taints kernel/signature ... missingは
DKMS(未署名モジュール)の定型警告で無害。
③ Memlock が低い
サービス(systemd)運用なら LimitMEMLOCK=infinity が自動設定される。
FLM を直接叩いて大きめモデル/長コンテキストを回すなら手動で上げる:
sudo nano /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
→ ログインし直して反映。
④ 6.17 系での XRT ミスマッチ(保険)
sudo flm validate でも NPU が出ない場合、PPA 同梱 XRT(2.20.0)が
新しめのカーネル(6.17+)で噛み合っていない可能性。
xrt-smi examine # NPU を列挙できるか
cat /sys/bus/pci/drivers/amdxdna/*/fw_version # FW 1.1.0.0 以降か
ダメなら libxrt-npu2 を更新、または最終手段で
amd/xdna-driver をソースビルドして XRT ごと合わせる。
Docker 回避策(hpenedones/fastflowlm-docker)もあり、ホスト側 amdxdna さえ通っていれば
--device=/dev/accel/accel0 で NPU を渡せる。
4. トラブルシュート早見(フローチャート)
flm validate が "No NPU device found"
│
├─ sudo flm validate で認識する?
│ ├─ YES → render グループ未所属 → ①で解決
│ └─ NO ↓
│
├─ /dev/accel/accel0 はある? (ls -l /dev/accel/)
│ ├─ NO → IOMMU 無効を疑う → ②(cmdline / BIOS)
│ └─ YES ↓
│
├─ lspci に "Signal processing controller 17f0" が出る?
│ ├─ NO → BIOS の IOMMU / NPU 設定 → ②
│ └─ YES → XRT ユーザ空間ミスマッチ → ④
5. 動かす(Ollama 感覚)
再ログイン後:
flm list # 利用可能モデル一覧
flm run llama3.2:1b # NPU で実行(まず軽量モデルで確認)
- 推論中に
/verboseで性能レポートをトグル。 - NPU 使用率はシステムモニタの NPU 項目で確認。
- 自作の Q4NX 変換モデル(
FLM_Q4NX_Converterで GGUF→Q4NX 変換したもの)も、
NPU が通ったこの状態ならflmに登録して同様に実行できる。
おわりに
前記事では Lemonade Server 経由で Qwen3.5-9B を NPU 上に載せるまでを扱いましたが、
本記事のように FLM 単体 + PPA + DKMS に絞れば、カーネルを 7.0 へ上げることなく
現行 6.x のまま最短で NPU 推論まで辿り着けます。詰まったときは 4 章のフローチャートから
原因を切り分けてみてください。
参考リンク
- FastFlowLM: https://github.com/FastFlowLM/FastFlowLM
- Lemonade(Linux NPU ガイド): https://lemonade-server.ai/flm_npu_linux.html
- GGUF→Q4NX 変換: https://github.com/FastFlowLM/FLM_Q4NX_Converter
- xdna-driver(ソースビルド用): https://github.com/amd/xdna-driver/
- 前記事(Lemonade + FastFlowLM 版): https://qiita.com/kotetsu_yama/items/5f388a77bceb8ddda41d