【CUDA 16GB向け】llama.cpp新PR: 低ビット量子化の高速化、16GB GPUのOOM解消、MTPとGLU最適化

目次
  1. 今回の要点
  2. 低ビット量子化MMVQカーネル高速化で推論速度向上
  3. CUDA VMM予約サイズ削減で16GB GPUのOOM解消
  4. MTP推論時のウォームアップ再実行バグ修正
  5. MMQパスでのGLU融合でFFN演算のオーバーヘッド削減
  6. 出典

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

llama.cpp は ggml-org が開発する C/C++ の LLM 推論エンジン。GGUF 形式の量子化モデルを CPU/GPU で動かす。

今回の要点

  • 低ビット量子化 (q2_K/q3_K/q6_K) における MMVQ カーネルの高速化により、最大 1.67 倍の速度向上を確認 (PR #30517)。
  • VRAM 不足 (OOM) 対策として、16GB などの限られたメモリ環境向けに VMM 予約サイズを 32GB から 8GB に削減 (PR #30542)。
  • MTP (Multi-Token Prediction) 利用時の推論速度低下を招くウォームアップ再実行バグを修正 (PR #30511)。
  • FFN 演算のオーバーヘッド削減のため、MMQ パスでの GLU 融合を実現 (PR #30489)。

低ビット量子化MMVQカーネル高速化で推論速度向上

llama.cpp では、マルチモーダルベクトル量子化 (MMVQ) を低ビットタイプで実行する際のパフォーマンスが最適化された。これは 60 段階の蒸留ステップで評価された結果、RTX 3090 において q2_K で 1.59 倍、q3_K で 1.67 倍、q6_K で 1.06 倍の速度向上を確認している。RTX PRO 6000、5090、4090 でも 1〜13% の改善が見られた。この最適化は sm_80/86/87/89 (RTX 3080/4080/5060Ti 等) を含むすべての CUDA GPU 対象であり、特に 16GB クラスの GPU に恩恵が大きい。

低ビット量子化モデルを推論する際、速度が大幅に向上するため、RTX 3080 や 4080、5060 Ti などの 16GB VRAM を搭載した環境でも、より高速に推論を実行できるようになる。

根拠: CUDA: faster MMVQ for low-bit types (PR #30517)

CUDA VMM予約サイズ削減で16GB GPUのOOM解消

VRAM が限られた GPU 環境で発生する CUDA out-of-memory (OOM) エラーを解消するため、VMM (Virtual Memory Management) プールの予約サイズが変更された。従来 32GB だった予約サイズが、統合メモリを持つ GPU で 8GB に引き下げられた。これにより、VRAM が限られた 16GB 搭載の RTX カードでも、OOM に陥りにくくなり、安定した動作が期待できる。

VRAM 不足に悩まされていた 16GB GPU ユーザーにとって、メモリ不足による推論失敗が解消される決定版的な改善となる。

根拠: cuda: Lowering VMM pool reservation size to 8 GB on GPUs with combined memory (PR #30542)

MTP推論時のウォームアップ再実行バグ修正

speculative decoding (推論加速技術) の一種である MTP (Multi-Token Prediction) を使用する場合、ターゲットグラフが変更された後にウォームアップが再実行されないバグがあった。この修正により、MTP グラフ変更後のウォームアップ不足が解消され、推論速度の低下や不安定さが改善される。CUDA 環境での speculative decoding 利用時に、より安定したパフォーマンスが得られるようになる。

MTP を利用しているユーザーにとって、推論速度の低下や不安定さが解消され、よりスムーズな推論が可能になる。

根拠: spec: re-run warmup after MTP changes the target graph (PR #30511)

MMQパスでのGLU融合でFFN演算のオーバーヘッド削減

MoE (Mixture of Experts) モデルのデコード速度改善のため、MMQ パスでの GLU (Gated Linear Unit) 融合が実装された。従来、batched (MMQ) パスでは GLU が独立したカーネルとして実行されていたが、SWIGLU/GEGLU/SWIGLU_OAI/SWIGLU_CLAMP が Q8_1 quantize カーネル内で registers に融合された。これにより、FFN 毎の ubatch での write/read が不要になり、MoE (MUL_MAT_ID) を含む FFN 演算のオーバーヘッドが削減される。VRAM 消費も抑制される可能性がある。

MoE モデルを推論する際、FFN 演算のオーバーヘッドが削減されるため、デコード速度が改善される。VRAM 消費も抑制される可能性があるため、16GB GPU での MoE モデル利用にも寄与する。

根拠: llama.cpp PR #30489: fuse GLU into MMQ Q8_1 activation quantization — eliminate extra kernel launch

出典

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

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