前回の記事でComfyUIが動くところまで確認できたので、次のステップはLLM推論を動かしてみることにしました。96GBのUMAメモリがある環境なので、それなりのサイズのモデルも余裕で乗るはずです。
lemonadeのPodを立ち上げて推論リクエストを投げてみると、こんなエラーで落ちました。
Memory access fault by GPU node-1 (Agent 1, Process 5, Thread 5) on address 0x7f0000000000. Reason: Page not presentAborted (core dumped)「なんかメモリアクセスでこけてる」とは分かりますが、原因の見当がつきません。ここから紆余曲折あり、解決までこぎつけた話を書こうと思います。
まずROCmのバージョンを疑う
エラーメッセージで検索していると、ROCm 7.2.1にgfx1151(Strix Halo)固有の既知バグがあるという情報を見つけました。
[gfx1151] Page Fault on hipMemcpy() in ROCm 7.2.1 Hardware Configuration GPU: AMD Radeon 8060S (0x1586, gfx1151) Architecture: RDNA 3 (Strix Halo, iGPU) CPU: AMD Ryzen AI MAX+ 395 w/ Radeon 8060S S...
確認するとまさに7.2.1だったので、7.2.3にアップグレードします。
apt-mark showhold # amdgpu-dkms がホールドされていることを確認sudo apt update && sudo apt install --only-upgrade rocm -ydpkg -l rocm-core # 7.2.3 になっていることを確認再起動して再試行。
同じエラーが出ます。
ROCmの問題ではありませんでした。
MESファームウェアのバージョン確認
AMDのGPUにはMES(Micro Engine Scheduler)というコンポーネントがあり、専用のファームウェアが乗っています。
redditを巡回していたところ、MESにおいて以下でrevertされているcommitが悪さをしているとの情報を入手。
The 0x83 MES SCH firmware causes problems with ROCm on GC 11.5.0. This reverts commit 1c5716794ac6bb25c20852f7cbb2d56aae43f301. Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4751 Signed-off-by: Mario Limonciello (AMD)
revert前のバージョンかを確認してみました。
sudo cat /sys/kernel/debug/dri/0/amdgpu_firmware_info | grep MES手元の出力はこうでした。
MES ... version: 0x830x83。これが犯人でした。
amdgpu-dkms-firmwareパッケージが/lib/firmware/updates/amdgpu/gc_11_5_1_mes_2.binというファイルを展開するのですが、この版にバグが含まれています。gc_11_5_1はgfx1151、つまりStrix Haloのことです。一瞬、ハードウェアを壊してしまったのかと焦りましたが、ソフト側のバグで良かった。
ファームウェアを差し替える
修正済みのファームウェアはlinux-firmwareのgitから取得できます。0x5dを持つコミットa54ce0ffのファイルを使います。
ひとつ注意点があります。修正コミットとしてよく参照されるのがこちらです。
The 0x83 MES SCH firmware causes problems with ROCm on GC 11.5.0. This reverts commit 1c5716794ac6bb25c20852f7cbb2d56aae43f301. Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4751 Signed-off-by: Mario Limonciello (AMD)
このコミットはgc_11_5_0_mes_2.bin(GC 11.5.0向け)の修正であり、gc_11_5_1_mes_2.bin(GC 11.5.1 / gfx1151)は含まれていません。Strix Haloで引っかかっている場合はa54ce0ffを指定する必要があります。
cd ~git clone --filter=blob:none --no-checkout \ https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git lf-gitcd lf-gitgit checkout a54ce0ff -- amdgpu/gc_11_5_1_mes_2.bin次に置き換え先のパスを確認します。
dpkg -L amdgpu-dkms-firmware | grep gc_11_5_1_mes_2/lib/firmware/updates/amdgpu/gc_11_5_1_mes_2.bin/lib/firmware/amdgpu/ではなく/lib/firmware/updates/amdgpu/です。Linuxのファームウェア読み込みではupdates/配下の方が優先されるため、/lib/firmware/amdgpu/を書き換えても意味がありません。最初これを知らずに何度も空振りしました。dpkg -Lを実行してようやく正しいパスに気づきました。
確認
再起動後にMESバージョンを確認します。
sudo cat /sys/kernel/debug/dri/0/amdgpu_firmware_info | grep MESMES(GFX) version: 0x5dMES(COMP) version: 0x5d0x5dになりました。
lemonadeのPodを再デプロイして推論リクエストを投げると、今度は正常に動きました。3日間悩み続けたエラーがあっさり消えたときの達成感は最高でした。
まとめ
gfx1151(Strix Halo)でLLM推論がMemory access faultでこける場合のチェックリストをまとめておきます。
- ROCmバージョンを確認する(7.2.1にはgfx1151の既知バグあり → 7.2.3にアップグレード)
- MESファームウェアのバージョンを確認する:
sudo cat /sys/kernel/debug/dri/0/amdgpu_firmware_info | grep MES 0x83ならamdgpu-dkms-firmwareが壊れたファームウェアを展開しています- 置き換え先は
/lib/firmware/updates/amdgpu/(dpkg -L amdgpu-dkms-firmwareで確認)。/lib/firmware/amdgpu/ではありません gc_11_5_1_mes_2.binはlinux-firmwareのa54ce0ffコミットから取得します(3d5c8135はgc_11_5_0向けで無効)
公式Issueに情報が少なく、調査に時間がかかりました。同じ構成で詰まっている方の参考になれば幸いです。
もしかするとすでにapt側のpackageも更新されているかもなので、普通にupgradeも試してみると良いかもしれません。
また、再起動時にGPUがbusyのままになってしまい、incus経由ではなくベアメタルでk3sを起動することにした話もあるのですが、これはまた別の記事で…
参考
[gfx1151] Page Fault on hipMemcpy() in ROCm 7.2.1 Hardware Configuration GPU: AMD Radeon 8060S (0x1586, gfx1151) Architecture: RDNA 3 (Strix Halo, iGPU) CPU: AMD Ryzen AI MAX+ 395 w/ Radeon 8060S S...
The 0x83 MES SCH firmware causes problems with ROCm on GC 11.5.0. This reverts commit 1c5716794ac6bb25c20852f7cbb2d56aae43f301. Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4751 Signed-off-by: Mario Limonciello (AMD)









