Radeon 890M(gfx1150, RDNA 3.5)搭載のMinisforumマシンで、vLLMをローカル実行するための調査記録。
環境
| 項目 | 値 |
|---|---|
| CPU/GPU | AMD Ryzen AI 9 HX 370 / Radeon 890M (gfx1150, RDNA 3.5) |
| OS | Ubuntu 24.04.4 LTS |
| カーネル | 7.2.5-070205-generic |
| ROCm | 10.0.0 |
| RAM | 91GB |
| Python | 3.12.3 |
調査内容
1. GPUアーキテクチャの確認
rocminfoでGPUがどのアーキテクチャとして認識されているか確認する。
$ rocminfo | grep -E '(Name:|Marketing Name:|gfx)'
Name: AMD Ryzen AI 9 HX 370 w/ Radeon 890M
Marketing Name: AMD Ryzen AI 9 HX 370 w/ Radeon 890M
Vendor Name: CPU
Name: gfx1100
Marketing Name: AMD Radeon 890M Graphics
Vendor Name: AMD
Name: amdgcn-amd-amdhsa--gfx1100
Name: amdgcn-amd-amdhsa--gfx11-generic
Name: aie2p
Marketing Name: RyzenAI-npu4
本来gfx1150のはずがgfx1100として認識されている。これは~/.bashrcに設定されたHSA_OVERRIDE_GFX_VERSION=11.0.0による。
2. GPU状態の確認
rocm-smiでGPUの温度、電力、VRAM使用率を確認する。
$ rocm-smi
======================================== ROCm System Management Interface ========================================
================================================== Concise Info ==================================================
Device Node IDs Temp Power Partitions SCLK MCLK Fan Perf PwrCap VRAM% GPU%
(DID, GUID) (Edge) (Socket) (Mem, Compute, ID)
==================================================================================================================
0 1 0x150e, 49535 36.0°C 5.516W N/A, N/A, 0 N/A N/A 0% auto N/A 27% 1%
==================================================================================================================
3. VRAM割り当ての確認
rocm-smi --showmeminfo vramでVRAMの総量と使用量を確認する。
$ rocm-smi --showmeminfo vram
GPU[0] : VRAM Total Memory (B): 2147483648
GPU[0] : VRAM Total Used Memory (B): 595288064
VRAMは2GBしか割り当てられていない。iGPUなのでシステムRAMと共有だが、BIOS側のUMA設定で制限されている。vLLMはこの値を見てKVキャッシュを確保するため、最低16GB以上に増やす必要がある。
4. システムメモリの確認
free -hでシステムRAMの空き状況を確認する。
$ free -h
total used free shared buff/cache available
Mem: 91Gi 3.9Gi 83Gi 51Mi 4.8Gi 88Gi
Swap: 2.0Gi 0B 2.0Gi
91GB中83GB空き。UMAを32GBに増やしても十分余裕がある。
5. カーネルパラメータの確認
/proc/cmdlineでGPU関連のカーネルパラメータを確認する。
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-7.2.5-070205-generic root=UUID=25bef23f-40e8-4a5c-aa81-aa5cfa6bf703 ro quiet splash amdgpu.gttsize=65536 vt.handoff=7
amdgpu.gttsize=65536でGTT(GPU Translation Table)を64GBに設定済み。APUでのOOM対策としてttm.pages_limit=12582912(48GB)の追加も検討が必要。
6. ROCm環境変数の確認
~/.bashrcに設定されたROCm関連の環境変数を確認する。
$ grep -E 'HSA_|GPU_|ROCBLAS_|HIP_' ~/.bashrc
export HSA_OVERRIDE_GFX_VERSION=11.0.0
export HSA_ENABLE_SDMA=0
export GPU_MAX_HW_QUEUES=4
export ROCBLAS_USE_HIPBLASLT=1
export HIP_FORCE_DEV_KERNARG=1
| 変数 | 役割 |
|---|---|
HSA_OVERRIDE_GFX_VERSION=11.0.0 |
gfx1150をgfx1100として認識させる |
HSA_ENABLE_SDMA=0 |
APU UMAでのDMAタイムアウト防止 |
GPU_MAX_HW_QUEUES=4 |
高負荷時のハング防止 |
ROCBLAS_USE_HIPBLASLT=1 |
スループット改善(約15%) |
HIP_FORCE_DEV_KERNARG=1 |
カーネル引数をデバイスメモリに配置 |
7. Python/パッケージ状況の確認
vLLMとPyTorchのインストール状況を確認する。
$ python3 --version
Python 3.12.3
$ uv --version
uv 0.12.7 (x86_64-unknown-linux-gnu)
$ pip show vllm
vLLM: not installed
$ pip show torch
PyTorch: not installed
調査結果
vLLMのgfx1150サポート状況
vLLMはPR #25908 でgfx1150を公式サポートしている。ROCm 10.0.0ではgfx1150をネイティブ認識できるため、HSA_OVERRIDE_GFX_VERSIONは不要になる可能性がある。
インストール方法
3つの方法がある。
方法1: Docker(最も手軽)
docker pull rocm/vllm-dev:rocm7.2.1_navi_ubuntu24.04_py3.12_pytorch_2.9_vllm_0.16.0
docker run -it --privileged --device=/dev/kfd --device=/dev/dri --network=host \
-w /app/vllm/ <image> /bin/bash
- ROCm 7.2.1 / vLLM 0.16.0 / Python 3.12
- Pythonバージョンの互換性問題なし
方法2: Lemonade SDK
lemonade-sdk/vllm-rocmから自己完結型バンドルを取得。
- vLLM 0.25.2 / ROCm 7.15.0 / Python同梱
- Docker不要
方法3: ネイティブpip(最新、ただしPython 3.14が必要)
# Python 3.14をuvで導入
uv python install 3.14
# PyTorch(gfx1150用)
pip install --index-url https://stable.repo.amd.com/rocm/whl-next/ \
"torch[device-gfx1150]==2.12.0+rocm10.0.0" \
"torchvision[device-gfx1150]==0.27.0+rocm10.0.0"
# Flash Attention + AITER
pip install --extra-index-url https://rocm.frameworks.amd.com/whl-multi-arch/vllm/ \
"flash-attn==2.8.3" "amd-aiter==0.1.20.post1"
# vLLM 0.27.1(cp314ホイール)
uv pip install https://rocm.frameworks.amd.com/whl-multi-arch/vllm/vllm/vllm-0.27.1.dev5+rocm10.0.0.gf46a9dfe2.d20260826-cp314-cp314-linux_x86_64.whl
- ROCm 10.0.0 / vLLM 0.27.1 / PyTorch 2.12.0
- Python 3.12では動かない(cp314ホイールのみ提供)
残っている課題
- VRAM 2GB問題: BIOSのUMA設定を16〜32GBに変更する必要がある
-
APU OOM対策: カーネルパラメータ
ttm.pages_limit=12582912の追加を検討 - 帯域幅の制約: 共有メモリ128 GB/sがボトルネック。ディスクリートGPUより低速になる
- RDNAサポートはexperimental: MI250/MI300ほどの安定性はない
- HSA_OVERRIDE_GFX_VERSION: vLLMでネイティブgfx1150を使う場合、このオーバーライドを外す必要があるかもしれない(Ollamaとの共存に注意)
HSA_OVERRIDE_GFX_VERSIONの除去とgfx1150ネイティブ認識の確認
1. HSA_OVERRIDE_GFX_VERSIONをコメントアウト
~/.bashrcのHSA_OVERRIDE_GFX_VERSION=11.0.0を無効化し、ROCm 10.0.0のネイティブgfx1150認識を試す。
$ grep HSA_OVERRIDE_GFX_VERSION ~/.bashrc
# export HSA_OVERRIDE_GFX_VERSION=11.0.0 # gfx1150ネイティブ認識を試すため無効化
現在のシェルからも変数を除去する。
$ unset HSA_OVERRIDE_GFX_VERSION
2. rocminfoでgfx1150の認識を確認
$ rocminfo | grep -E '(Name:|Marketing Name:|gfx|ISA)'
Name: AMD Ryzen AI 9 HX 370 w/ Radeon 890M
Marketing Name: AMD Ryzen AI 9 HX 370 w/ Radeon 890M
Vendor Name: CPU
ISA Info:
Name: gfx1150
Marketing Name: AMD Radeon 890M Graphics
Vendor Name: AMD
ISA Info:
ISA 1
Name: amdgcn-amd-amdhsa--gfx1150
ISA 2
Name: amdgcn-amd-amdhsa--gfx11-generic
gfx1150がネイティブ認識された。 オーバーライド不要。
3. rocm-smiで動作確認
$ rocm-smi
Device Node IDs Temp Power Partitions SCLK MCLK Fan Perf PwrCap VRAM% GPU%
0 1 0x150e, 49535 38.0°C 7.744W N/A, N/A, 0 N/A N/A 0% auto N/A 33% 2%
正常動作。
4. メモリプールの確認
rocm-smi --showmeminfo allでVRAM/GTT両方のプールサイズを確認する。
$ rocm-smi --showmeminfo all
GPU[0] : VRAM Total Memory (B): 2147483648
GPU[0] : VRAM Total Used Memory (B): 719437824
GPU[0] : VIS_VRAM Total Memory (B): 2147483648
GPU[0] : VIS_VRAM Total Used Memory (B): 719437824
GPU[0] : GTT Total Memory (B): 68719476736
GPU[0] : GTT Total Used Memory (B): 97406976
| プール | 総量 | 説明 |
|---|---|---|
| VRAM | 2GB | BIOSのUMA設定で確保された専用領域 |
| VIS_VRAM | 2GB | CPU側から可視なVRAM(iGPUではVRAMと同じ) |
| GTT | 64GB |
amdgpu.gttsize=65536で設定。GPUがオンデマンドで使えるシステムRAM |
iGPUではVRAMもGTTも実体はシステムRAM。vLLMがGTTプールを活用できるかどうかが、BIOSのUMA変更が必要かを決める