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?

vLLMをRadeon 890M(iGPU)で動かす事前調査

0
Posted at

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ホイールのみ提供)

残っている課題

  1. VRAM 2GB問題: BIOSのUMA設定を16〜32GBに変更する必要がある
  2. APU OOM対策: カーネルパラメータttm.pages_limit=12582912の追加を検討
  3. 帯域幅の制約: 共有メモリ128 GB/sがボトルネック。ディスクリートGPUより低速になる
  4. RDNAサポートはexperimental: MI250/MI300ほどの安定性はない
  5. 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変更が必要かを決める

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?