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?

Radeon 890M (gfx1150) iGPU で ROCm を動かして LLM推論を 11 倍高速化した記録

0
Posted at

推論速度 44 秒 → 4 秒、スループット 6.0 tok/s → 67.5 tok/s。
Minisforum のミニ PC に搭載された AMD Radeon 890M iGPU を ROCm 10.0.0 で有効化し、Unsloth Desktop のローカル LLM推論を GPUオフロードするまでの作業ログ。

実機環境

項目 値
マシン Minisforum
CPU AMD Ryzen AI 9 HX 370 (12C/24T, 最大 5157 MHz)
iGPU AMD Radeon 890M Graphics (RDNA 3.5, gfx1150, PCI ID 1002:150e)
CU 数 16 CU, 2 SIMDs/CU, Wavefront Size 32
NPU RyzenAI-npu4 (aie2p)
メモリ 91 GB DDR5(CPU/GPU 共有、帯域 128 GB/s)
OS Ubuntu 24.04.4 LTS (Noble Numbat)
初期カーネル 6.x 系(amdgpu が gfx1150 を認識しないバージョン)
最終カーネル 7.2.5-070205-generic (2026-09-11 ビルド)

作業ログ

1. 初期状態の確認

$ lspci | grep -i display
c5:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Device 150e (rev c1)

PCIデバイスとしては見えているが、DRMデバイス(/dev/dri/card*, /dev/dri/renderD*)が存在しない状態。iGPUが使われていない。

dmesg を確認すると、amdgpuドライバがgfx1150のprobeに失敗して -22(EINVAL)エラーを出していた。

$ dmesg | grep -i amdgpu
amdgpu: probe of 0000:c5:00.0 failed with error -22

2. カーネルのアップグレード

初期カーネルのamdgpuドライバはgfx1150(Radeon 890M)をサポートしていない可能性があったため、まずカーネルをアップグレードした。Ubuntu Mainline Kernel PPAからカーネル7.2.5をインストール。

$ sudo dpkg -i linux-headers-7.2.5-070205_7.2.5-070205.202609111348_all.deb \
               linux-headers-7.2.5-070205-generic_7.2.5-070205.202609111348_amd64.deb \
               linux-image-unsigned-7.2.5-070205-generic_7.2.5-070205.202609111348_amd64.deb \
               linux-modules-7.2.5-070205-generic_7.2.5-070205.202609111348_amd64.deb

再起動後も依然として -22 エラーが出ていた。カーネルは新しくなったが、別の原因でamdgpuドライバのprobeが失敗している。

3. dpkg状態の修復

カーネルパッケージのインストール後、linux-image-unsigned-7.2.5-070205-generic が iHR(half-installed)状態で残った。/var/lib/dpkg/status を直接編集して ii(正常インストール済み)に修復。

$ sudo sed -i 's/^Status: install reinstreq half-installed$/Status: install ok installed/' /var/lib/dpkg/status

修復後もDescriptionとMaintainerフィールドの欠落に関する警告が出るが、動作上は無害。

dpkg-query: 警告: parsing file '/var/lib/dpkg/status' near line 40117 package 'linux-image-unsigned-7.2.5-070205-generic':
 missing 'Description' field
dpkg-query: 警告: parsing file '/var/lib/dpkg/status' near line 40117 package 'linux-image-unsigned-7.2.5-070205-generic':
 missing 'Maintainer' field

4. nomodesetの除去

原因を調べると、GRUBに nomodeset カーネルパラメータが設定されていた。これがamdgpuドライバのロードを妨げていた。

/etc/default/grub から nomodeset を削除。

$ sudo vi /etc/default/grub

変更前:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"

変更後:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
$ sudo update-grub

再起動後、amdgpuドライバがprobeに成功し、DRMデバイスが出現した。

$ ls -la /dev/dri/
crw-rw----+ 1 root video  226,   1 ... card1
crw-rw----+ 1 root render 226, 128 ... renderD128

5. ROCm 10.0.0のインストール

amdgpu-installを使い、ROCmユースケースでインストール。カーネル7.2.5に同梱のamdgpuドライバをそのまま使用するため、DKMSはスキップ。

$ sudo amdgpu-install --usecase=rocm --no-dkms

インストールされたパッケージ:

$ dpkg -l | grep amdrocm | wc -l
235

$ apt list --installed 2>/dev/null | grep amdgpu-install
amdgpu-install/noble,noble,noble,noble,now 31.50.0.0.31500000-2390945.24.04 all [インストール済み]

ROCmのバージョン確認:

$ /opt/rocm/bin/hipconfig --full
HIP version: 7.15.26333-0000000

==hipconfig
HIP_PATH           :/opt/rocm/core-10.0
ROCM_PATH          :/opt/rocm/core-10.0
HIP_COMPILER       :clang
HIP_PLATFORM       :amd
HIP_RUNTIME        :rocclr

gfx1150向けのBLASライブラリもインストールされている:

$ dpkg -l | grep amdrocm-blas10.0-gfx1150
ii  amdrocm-blas10.0-gfx1150  10.0.0~pre4-32424980240  amd64  AMD library for BLAS in ROCm

6. ユーザーをrender/videoグループに追加

ROCmがGPUデバイスにアクセスするには、ユーザーが render および video グループに所属している必要がある。

$ sudo usermod -aG render,video hirotaka

確認(再起動後に有効):

$ id hirotaka
uid=1000(hirotaka) gid=1000(hirotaka) groups=...,44(video),...,110(render),...

7. GTTサイズの拡大

APUではGPUが使用するGTT(Graphics Translation Table)メモリがデフォルトでは小さい。LLMのモデルを載せるために64 GBに拡大。

$ sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.gttsize=65536"
$ sudo update-grub

反映確認(再起動後):

$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-7.2.5-070205-generic root=UUID=... ro quiet splash amdgpu.gttsize=65536 vt.handoff=7

最終的なカーネル:

$ uname -r
7.2.5-070205-generic

$ uname -v
#202609111348 SMP PREEMPT_DYNAMIC Fri Sep 11 14:13:33 UTC 2026

8. 環境変数の設定

~/.bashrc に以下を追加:

export PATH=$PATH:/opt/rocm/bin
export LD_LIBRARY_PATH=/opt/rocm/lib:${LD_LIBRARY_PATH:-}
export HSA_ENABLE_SDMA=0
export GPU_MAX_HW_QUEUES=4
export ROCBLAS_USE_HIPBLASLT=1
export HIP_FORCE_DEV_KERNARG=1

各環境変数の役割:

変数 値 目的
HSA_ENABLE_SDMA 0 APU の UMAアーキテクチャで発生する SDMA DMAタイムアウトを回避。iGPU 環境では必須
GPU_MAX_HW_QUEUES 4 高負荷時のハングを防止
ROCBLAS_USE_HIPBLASLT 1 hipBLASLt を使用しスループットを約 15% 改善
HIP_FORCE_DEV_KERNARG 1 カーネル引数をデバイスメモリ側に配置しレイテンシを削減

9. 再起動と動作確認

再起動後、以下を順に確認。

rocminfo

$ rocminfo
ROCk module is loaded
=====================
HSA System Attributes
=====================
Runtime Version:         1.21
Runtime Ext Version:     1.30
...

==========
HSA Agents
==========
*******
Agent 1
*******
  Name:                    AMD Ryzen AI 9 HX 370 w/ Radeon 890M
  Device Type:             CPU
  Compute Unit:            24

*******
Agent 2
*******
  Name:                    gfx1150
  Marketing Name:          AMD Radeon 890M Graphics
  Vendor Name:             AMD
  Feature:                 KERNEL_DISPATCH
  Device Type:             GPU
  Compute Unit:            16
  SIMDs per CU:            2
  Shader Engines:          1
  Wavefront Size:          32
  Max Clock Freq. (MHz):   2900
  Chip ID:                 5390(0x150e)
  ASIC Revision:           4(0x4)
  Memory Properties:       APU
  Fast F16 Operation:      TRUE
  ISA Info:
    ISA 1
      Name:                amdgcn-amd-amdhsa--gfx1150
    ISA 2
      Name:                amdgcn-amd-amdhsa--gfx11-generic

*******
Agent 3
*******
  Name:                    aie2p
  Marketing Name:          RyzenAI-npu4
  Device Type:             DSP

GPU Agentとして gfx1150 が認識されている。HSA_OVERRIDE_GFX_VERSION の設定は不要だった(ROCm 10.0.0 が gfx1150 をネイティブサポート)。

NPU(RyzenAI-npu4)も Agent 3 として見えている。

rocm-smi

$ rocm-smi
======================================== ROCm System Management Interface ========================================
================================================== Concise Info ==================================================
Device  Node  IDs              Temp    Power     Partitions          SCLK  MCLK  Fan  Perf  PwrCap  VRAM%  GPU%
==================================================================================================================
0       1     0x150e,   58458  38.0°C  6.847W    N/A, N/A, 0         N/A   N/A   0%   auto  N/A     42%    2%
==================================================================================================================

VRAM% 42% — モデルが GPUメモリ上にロードされていることを示す。

amd-smi

$ amd-smi monitor -putm
GPU  XCP  POWER  PWR_CAP   GPU_T   MEM_T   GFX_CLK   GFX%   MEM%  MEM_CLOCK
  0    0    6 W      N/A   37 °C     N/A   725 MHz    1 %    N/A   1475 MHz

10. 推論テスト結果

Unsloth Desktop でのローカル LLM推論:

指標 変更前(CPU のみ) 変更後(iGPU + ROCm) 改善率
応答時間 44 秒 4 秒 11 倍高速
スループット 6.0 tok/s 67.5 tok/s 11.25 倍高速

注意事項

  • 帯域幅がボトルネック: Radeon 890M は CPU とメモリを共有する APU。メモリ帯域は 128 GB/s 共有であり、ディスクリート GPU(例: RTX 4090 の 1 TB/s)と比較すると大きく劣る。モデルサイズが大きくなると帯域幅律速になる
  • BIOS UMA設定: "Auto" だと GPU が検出に失敗することがある。固定値(例: 32 GB)に設定することを推奨
  • PyTorch ROCm: gfx1150サポートはまだ不安定。Ollama や llama.cpp のバックエンドの方が安定動作する
  • Ollama 0.30.x+: gfx1150 をネイティブサポートしている
  • dpkg警告: カーネル 7.2.5 のパッケージに Description/Maintainer フィールドが欠落しているため dpkg-query 実行時に警告が出るが、実害はない
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?