0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ryzen AI MAX+ 395 の NPU を Ubuntu で最速インストール — FastFlowLM をカーネル 7.0 なしで動かす

0
Posted at

はじめに

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:rendercrw-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/grubGRUB_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 章のフローチャートから
原因を切り分けてみてください。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?