【780M向け】llama.cpp Vulkan更新:RDNA2のFlash Attention速度改善と780M向け最適化
目次
llama.cpp は ggml-org が開発する C/C++ の LLM 推論エンジン。Vulkan バックエンドで AMD iGPU でも動く。
今回の要点
- RDNA2 (RX 6600 XT等) の Flash Attention が大幅に高速化:共有メモリの制限チェックを回避し、Wave32 実行を有効化。
- Radeon 780M 等の帯域幅制限 GPU で推論速度が向上:RMS Norm の処理を共有メモリ経由に変更し、メモリトラフィックを削減。
- 長文コンテキスト (YaRN) が Vulkan で利用可能に:切り捨て設定 (truncation config) のサポートが追加され、コンテキスト長の有効活用が可能に。
- マルチGPU構成時の注意:GPU の接続順序や優先度設定が、プロンプト処理速度 (PP) に深刻な影響を与える不具合が報告されている。
Vulkan RDNA2 Flash Attentionの重大なボトルネック解消とWave32有効化
前提
Flash Attention は、Attention 機構の計算効率を高める手法だが、GPU の共有メモリ (shmem) やレジスタ使用量に厳しい制約がある。特に AMD RDNA2 アーキテクチャでは、ドライバーの仕様チェックが最適化を阻害し、速度低下を招く場合があった。
何が変わったか
llama.cpp において、RDNA2 デバイスにおける Flash Attention のボトルネックを解消する修正が行われた。具体的には、共有メモリのサイズ制限チェックを回避し、ネイティブな Wave32 サブグループ実行を有効化する変更が適用された。これにより、レジスタ圧力の軽減とメモリスパイリングの削減が図られている。
なぜ重要か
RX 6600 XT などの RDNA2 アーキテクチャを搭載する AMD GPU ユーザーにとって、特にシーケンスコンテキストが長い場合 (n ≥ 4500 など) に顕著だった速度低下が解消される。これにより、iGPU でもより長いコンテキストを扱えるようになる。
根拠のリンク
- Vulkan: Fix severe RDNA2 Flash Attention bottleneck by bypassing strict shmem limits and enabling Wave32 (#30832)
- Vulkan RDNA2 Flash Attention bottleneck/slowdown fix (#30832)
利用者の報告
logankidd315-design 氏は、Windows 環境上の RX 6600 XT (RDNA2) で、Vulkan バックエンド使用時に Yue2 3b などのモデルで大きなコンテキスト処理時の深刻なパフォーマンス低下を報告し、本修正がその原因である特定と解決策を提示した。同氏は、厳格なドライバープロパティチェックの失敗によるキャッシュスラッシングと、大規模コンテキストでのレジスタ圧力による VGPR メモリスパイリングが主要因だと指摘している。
Vulkan RMS Normの共有メモリ最適化でiGPU帯域幅ボトルネックを緩和
前提
RMS Norm (Root Mean Square Layer Normalization) は LLM における正規化処理の一つ。通常、グローバルメモリ (VRAM) とのアクセスが発生するが、共有メモリ (高速だが容量が限られる) を経由することで処理効率を上げられる。
何が変わったか
RMS Norm の部分和計算 (partial sums) を、グローバルメモリではなく共有メモリを通じて行う最適化が Vulkan バックエンドに導入された。これにより、GPU 間のメモリトラフィックが削減される。
なぜ重要か
Radeon 780M などの iGPU は、独立型 GPU に比べてメモリ帯域幅が制限されている。この最適化により、帯域幅がボトルネックになりやすい環境でも、推論速度の向上が期待できる。
根拠のリンク
Vulkan Adreno互換コンパイル不具合修正とRADVへの波及
前提
llama.cpp の Vulkan バックエンドは、Qualcomm Adreno GPU 向けのコンパイル最適化を含んでいる。一部の Adreno GPU では、特定のビット幅のベクターパック/アンパック処理でコンパイル不具合 (miscompile) が発生していた。
何が変わったか
Adreno GPU でのコンパイル不具合を回避するため、大規模なヘッドを持つ場合のスカラー Flash Attention の行数制限 (8行まで) や、8-bit ベクターパック/アンパック処理の回避といった修正が行われた。
なぜ重要か
本来は Adreno 向けの修正だが、同様のコンパイラの問題が AMD の RADV ドライバー環境でも発生する可能性がある。この修正により、RADV 環境における安定性や互換性も間接的に改善する可能性がある。
根拠のリンク
- vulkan: cap scalar flash attention at 8 rows for large heads on Qualcomm Adreno GPUs (#30829)
- vulkan: avoid 8-bit vector pack/unpack miscompiles on Qualcomm Adreno GPUs (#30821)
VulkanバックエンドでYaRN切り捨て設定をサポートし長文コンテキスト対応
前提
YaRN (Yet another RoPE extensioN) は、LLM のコンテキスト長を拡張する技術。ただし、無限にコンテキストを延ばすと計算コストが増大するため、重要な情報を保持しつつ不要な部分を切り捨てる (truncation) 設定が有用な場合がある。
何が変わったか
Vulkan、OpenVINO、SYCL、WebGPU、RPC などのバックエンドにおいて、YaRN の切り捨て設定 (truncation config) のサポートが追加された。これにより、Vulkan 環境でもコンテキストの切り捨て制御が可能になった。
なぜ重要か
Radeon 780M などの iGPU ユーザーにとって、長文コンテキストを有効活用しつつ、メモリや計算リソースの制約を管理できるようになる。特に、VRAM が限られる環境での長文処理の柔軟性が向上する。
根拠のリンク
Vulkan環境でのGPUデバイス順序が推論性能に影響する不具合
前提
複数の GPU を搭載した PC では、どの GPU を推論に使用するかを指定する必要がある。Vulkan バックエンドでは、システム内の GPU デバイスの順序や優先度設定が、推論パフォーマンスに影響を与える可能性がある。
何が変わったか
GPU デバイスの順序が、プロンプト処理 (PP: Prompt Processing) のパフォーマンスに深刻な影響を与える不具合が報告されている。特に、メインの GPU 以外をディスプレイ出力用に設定した場合など、意図しない順序でデバイスが選択されると速度が大幅に低下する。
なぜ重要か
マルチ GPU 構成や、統合 GPU と独立 GPU を併用する環境において、意図した GPU が正しく選択されないまま推論が実行されると、パフォーマンスが著しく低下する可能性がある。ユーザーは、デバイス順序や指定方法に注意する必要がある。
根拠のリンク
利用者の報告
AlexGidarakos 氏は、Debian 13 環境で、メインの GPU 以外をプライマリディスプレイアダプタとして設定したところ、Vulkan を使用した Qwen MoE モデルの推論速度が深刻な低下を示したと報告している。この現象は、最新のビルド (b11738) および旧ビルド (v0.2.0) の両方で再現しており、明示的に強い GPU を指定しても、デバイス順序の影響でパフォーマンスが損なわれる可能性がある。
出典
- Vulkan: Fix severe RDNA2 Flash Attention bottleneck by bypassing strict shmem limits and enabling Wave32 (#30832)
- Vulkan RDNA2 Flash Attention bottleneck/slowdown fix (#30832)
- vulkan: reduce rms_norm partial sums through shared memory (#30826)
- vulkan: cap scalar flash attention at 8 rows for large heads on Qualcomm Adreno GPUs (#30829)
- vulkan: avoid 8-bit vector pack/unpack miscompiles on Qualcomm Adreno GPUs (#30821)
- ggml: support YaRN truncation config on openvino, sycl, vulkan, webgpu, rpc (#30802)
- Vulkan GPU device ordering affects PP performance (#30841)
SwitchBot公式ページ
クーポン「AF-4903」で5%引き(アフィリエイトクーポンになりますのでご協力お願いします)
割引の詳しい仕組みに関してはこちらのページを参照ください。