RADVのGPUハング修正とSGLangのRDNA3対応、VulkanバックエンドのFP8・ログ改善

ローカルLLMAMDVulkaniGPULLM最適化

目次
  1. 今回の要点
  2. RADV: BVHビルド時のGPUハングをPFP_SYNC_MEで修正
  3. SGLang: RDNA3(gfx1100)でfused RoPE/KV-cache pathを無効化
  4. Qualcomm AdrenoドライバーでのVulkan強制終了問題をログ出力で改善
  5. VulkanバックエンドにFP8量子化とscaled matmul対応追加
  6. Samsung GPU向けVulkan large matmul tileの無効化
  7. 出典

今回の要点

  • Mesa RADVのBVHビルド時にGPUハングを引き起こしていた問題を、PFP_SYNC_MEの追加で修正するコミットがマージされた。
  • SGLangはRDNA3 (gfx1100) 環境におけるTritonのBF16命令低下問題を回避するため、fused RoPE/KV-cache pathを無効化する対応を行った。
  • llama.cppはVulkanバックエンドにFP8量子化とscaled matmulの対応を追加するPRを公開した。
  • Qualcomm AdrenoドライバーでのVulkan強制終了問題に対し、パイプラインコンパイル時のエラーログ出力が追加された。
  • Samsung GPU (32KB共有メモリ) 向けに、prefill速度低下を招くlarge matmul tileの無効化がマージされた。

RADV: BVHビルド時のGPUハングをPFP_SYNC_MEで修正

Mesa RADVにおいて、BVH (Bounded Volume Hierarchy) のビルド処理中にGPUがハングする事象が報告されていた。この問題は、Marek Olšák により PFP_SYNC_ME を追加することで修正された。この修正により、Vulkanアプリケーションの予期せぬハングが防止される。

利用者の報告

Rizzo-AI-Academy/rizzo-flow において、giovannimanzoni 氏は Linux + NVIDIA 環境でのテストレポートを公開している。同レポートでは、Vulkan 構成 (4B Q8_0) における動作確認が含まれており、約 9.7 時間のテスト期間中に 141 回のランが完了したと報告されている。また、0xSero/local-ai-registry において Vmarcelo49 氏は、RX 9070 XT 16 GB 環境でのベンチマーク結果を公開している。Vulkan バックエンド (llama.cpp:server-vulkan b11176) は、65536 コンテキストで 43.7 tok/s、131072 コンテキストで 37.4 tok/s のデコード速度を記録した。ROCm バックエンドと比較して、Vulkan は 65536 コンテキストにおいて 33.5 tok/s を記録した ROCm バックエンドよりも高速な結果を示した。

SGLang: RDNA3(gfx1100)でfused RoPE/KV-cache pathを無効化

SGLang は、RDNA3 アーキテクチャ (gfx1100) において、Triton が BF16 の tl.flip 命令を無効命令に低下させる問題を発見した。この問題により推論品質が低下するため、fused RoPE/KV-cache path を無効化する対応が行われた。この対応は 780M (gfx1103) とは別の問題であるため、互換性に注意が必要である。

利用者の報告

Rizzo-AI-Academy/rizzo-flow において、giovannimanzoni 氏は Linux + NVIDIA 環境でのテストレポートを公開している。同レポートでは、Vulkan 構成 (4B Q8_0) における動作確認が含まれており、約 9.7 時間のテスト期間中に 141 回のランが完了したと報告されている。また、0xSero/local-ai-registry において Vmarcelo49 氏は、RX 9070 XT 16 GB 環境でのベンチマーク結果を公開している。Vulkan バックエンド (llama.cpp:server-vulkan b11176) は、65536 コンテキストで 43.7 tok/s、131072 コンテキストで 37.4 tok/s のデコード速度を記録した。ROCm バックエンドと比較して、Vulkan は 65536 コンテキストにおいて 33.5 tok/s を記録した ROCm バックエンドよりも高速な結果を示した。

Qualcomm AdrenoドライバーでのVulkan強制終了問題をログ出力で改善

Qualcomm Adreno ドライバーを使用している環境において、Vulkan バックエンドを指すと llama.cpp が SIGABRT (exit 134) で強制終了し、エラー出力が一切ない状態になる問題が報告されていた。この問題に対し、パイプラインコンパイル時に vk::SystemError が投げられた場合のログ出力が追加された。これにより、根本解決への道が開かれると期待される。

利用者の報告

ArborPopuli 氏は、Snapdragon 8 Elite (SM8750) 搭載の Qualcomm Adreno 830 環境において、Vulkan バックエンドを指すと llama.cpp が SIGABRT (exit 134) で強制終了し、エラー出力が一切ない状態になる事象を報告した。0cc4m 氏は、ドライバーが内部でクラッシュしている場合、仕様から外れていない限り対応できないため、Qualcomm への報告が必要だと指摘した。

VulkanバックエンドにFP8量子化とscaled matmul対応追加

llama.cpp は、Vulkan バックエンドに FP8 量子化と scaled matrix multiplication の対応を追加する PR を公開した。これにより、AMD Radeon iGPU (gfx1103) での FP8 推論速度の改善が期待される。

Samsung GPU向けVulkan large matmul tileの無効化

Samsung GPU (32KB 共有メモリ) において、n_ubatch オプションを 128 以上に設定すると prefill 速度が想定より低くなる問題が報告されていた。この問題は、large tile mat_mul によりスレッドあたりのアキュムレータ数が 4 倍になり、レジスタースパイルが発生することが原因と推測された。この問題に対し、共有メモリが足りない場合に large mat_mul tile を無効化する対応がマージされた。

利用者の報告

jwsong98 氏は、Samsung Exynos 2400 搭載のモバイルデバイスにおいて、n_ubatch オプションを 128 以上に設定すると prefill 速度が想定より低くなる事象を報告し、この対応が適用されたことを確認した。

出典

【宣伝】SwitchBot 購入はこちらから

SwitchBot公式ページ
クーポン「AF-4903」で5%引き(アフィリエイトクーポンになりますのでご協力お願いします)
割引の詳しい仕組みに関してはこちらのページを参照ください。
製品ごとの特徴・紹介動画は SwitchBot 製品ガイド にまとめています。