【780M向け】llama.cpp Vulkanバックエンドの修正:ワークグループオーバーフロー回避とFlash Attentionの最適化

目次
  1. 今回の要点
  2. Vulkan RMS Normのワークグループオーバーフロー修正
  3. Vulkan Flash Attentionの行分割とGQA統合最適化
  4. Windows NVIDIA環境でVulkanバンドル推奨へ変更
  5. Vulkan: DGX Spark向けL2スケジューリングとTiled Concat追加
  6. 出典

この記事はAIによって編集・作成されています。

llama.cpp は ggml-org が開発する C/C++ の LLM 推論エンジン。Vulkan バックエンドで AMD iGPU でも動く。

今回の要点

  • RMS Norm 演算時のワークグループ数オーバーフローを修正し、大規模バッチ処理時のクラッシュを回避した。
  • Flash Attention において、クエリ行の分割と GQA ヘッドの統合により、メモリ効率と速度を改善した。
  • Windows 環境で NVIDIA ドライバーが CUDA 12.4 未満の場合、CPU バンドルではなく Vulkan バンドルを推奨する設定変更があった。
  • DGX Spark 向けに L2 キャッシュに優しいスケジューリングが追加された。

Vulkan RMS Normのワークグループオーバーフロー修正

Vulkan における RMS Norm 演算では、ワークグループの数を計算する際に整数オーバーフローが発生するケースがあった。この問題は、ワークグループ数が上限を超えた際に予期せぬ動作を引き起こす原因となっていた。

今回の修正では、CUDA 実装で採用されているのと同じ戦略、つまり余分な部分をループ処理することでこのオーバーフローを回避している。これにより、大規模なバッチ処理を行ってもクラッシュせずに処理を継続できるようになる。

この修正は、ワークグループ数を制限するのではなく、処理を分割して実行することで安定性を確保するアプローチであり、AMD Ryzen 内蔵 GPU ユーザーにとっても、より安定した推論環境を提供するものとなる。

詳細: vulkan: fix rms_norm workgroup count overflow (#30145)

Vulkan Flash Attentionの行分割とGQA統合最適化

Flash Attention 演算において、大規模バッチ処理時に KV キャッシュが深くなると、メモリ使用量が増加する問題があった。今回の変更では、クエリ行の分割(query-row slicing)を導入し、深い KV キャッシュ環境でのメモリ効率を改善した。

さらに、検証トークン(verify tokens)と GQA(Grouped Query Attention)ヘッドを 1 つの Flash Attention 行に統合する変更も含まれている。これにより、演算のオーバーヘッドを削減し、処理速度の向上が期待できる。

これらの最適化は、大規模なバッチ処理を行うユーザーにとって、メモリ使用量の削減と推論速度の向上に寄与する。

詳細: vulkan: query-row slicing for large-batch flash attention at deep KV (issue #30191)

詳細: vulkan: fold verify tokens and GQA heads into one flash-attention row (PR #30190)

Windows NVIDIA環境でVulkanバンドル推奨へ変更

Windows 環境において、NVIDIA ドライバーの CUDA バージョンが 12.4 未満の場合、CPU バンドルではなく Vulkan バンドルを使用することが推奨されるようになった。これは、Unsloth Studio の設定変更によるもので、特定の環境でのパフォーマンス向上を目的としている。

この変更は、CUDA 12.4 未満の環境にいる Windows ユーザーにとって、Vulkan バックエンドの利用がより現実的な選択肢となることを示している。AMD iGPU ユーザーにとっても、Vulkan バックエンドの重要性が高まる変更と言える。

詳細: Studio: use the Vulkan llama.cpp bundle, not CPU, on Windows NVIDIA drivers below CUDA 12.4 (#13129)

Vulkan: DGX Spark向けL2スケジューリングとTiled Concat追加

DGX Spark 向けに、L2 キャッシュに優しいワークグループスケジューリングが追加された。これは、特定のハードウェア向けのパフォーマンス最適化であり、cm2 mulmat 演算の効率を改善する。

また、転置入力に対するタイル化された連結(tiled concat)も追加された。これにより、転置入力を含む演算のパフォーマンスが向上する可能性がある。

これらの最適化は、DGX Spark を含む特定のハードウェア環境でのパフォーマンス向上に寄与する。

詳細: vulkan: Use L2-friendly workgroup scheduling for cm2 mulmat on DGX Spark (#30215)

詳細: vulkan: add tiled concat for transposed inputs (PR #30149)

出典

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

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