🚀 ik_llama.cpp
imatrixによるQwen/Qwen3-30B-A3Bの量子化
この量子化コレクションは、高度な非線形の最先端量子化をサポートするために、ik_llama.cpp のフォーク版が必要です。これらの大きなファイルをダウンロードして、メインラインのバニラllama.cpp、ollama、LM Studio、KoboldCppなどで実行できると期待しないでください!
これらの量子化は、与えられたメモリ使用量に対して最高の品質を提供します。
大きな感謝
WendellとLevel1Techsのチーム、コミュニティのフォーラム、YouTubeチャンネルに感謝します! これらの実験を実行し、これらの素晴らしい量子化をコミュニティに提供するための大きなハードウェアの専門知識とアクセスを提供してくれたことに大きな感謝です!
また、ここと r/LocalLLaMA
の量子化と推論のコミュニティの皆さんにも感謝します。新しい面白いモデルを実行するためのアドバイスやコツを共有し合ってくれています!
一緒に共有し、学ぶことが楽しみです。ありがとう!
量子化コレクション
これまでのところ、これらはメモリ使用量のブレークポイントにおいて高品質を提供する最良のレシピです。
ubergarm/Qwen3-30B-A3B-mix-IQ4_K
この量子化は、高速性能を提供しながら、クラス最高の品質を提供します。この量子化は、24GB未満のVRAM GPUでGPU対応のf16 KV-Cacheを使用して32kを超えるコンテキストで実行するように設計されています。 -nkvo -ctk q8_0 -ctv q8_0
を使用してCPUにオフロードし、起動時に -rtr
を使用してRAM最適化されたテンソルパッキングを行うこともできます(mmap()
サポートなし)。これにより、繰り返しのレイヤーをCPUにオフロードすることで、速度は低下しますが、VRAMを約18396MiB以下に抑えることができます。
17.679 GiB (4.974 BPW)
f32: 241 tensors
q8_0: 6 tensors
iq4_k: 96 tensors
iq5_k: 48 tensors
iq6_k: 188 tensors
Final estimate: PPL = 9.1184 +/- 0.07278 (wiki-test.raw, compare to BF16 at 9.0703 +/- 0.07223)
*NOTE*: Benchmarks including PPL with `wiki.test.raw` and KLD with `ubergarm-kld-test-corpus.txt` are looking interesting! Will publish soon!
🚀 クイックスタート
ik_llama.cpp
APIサーバーによるGPU推論
./build/bin/llama-server
--model ubergarm/Qwen3-30B-A3B-GGUF/Qwen3-30B-A3B-mix-IQ4_K \
--alias ubergarm/Qwen3-30B-A3B-mix-IQ4_K \
-fa \
-ctk f16 -ctv f16 \
-c 32768 \
-fmoe \
-ngl 99 \
--threads 1
--host 127.0.0.1 \
--port 8080
より多くのコンテキストや少ないVRAM使用量が必要な場合は、以下を試すことができます。
- より小さいKVキャッシュ量子化
-ctk q4_0 -ctv q4_0
より高いスループットが必要な場合は、以下を試すことができます。
- VRAMの最大制限までコンテキストを増やす
--parallel N
を使用して、各スロットに (コンテキスト / N) を使用する
- asyncioクライアントを使用してキューをいっぱいに保つ
量子化
👆秘密のレシピ
#!/usr/bin/env bash
custom="
# Attention (give Layer 0 a little extra as it scores lowest on cosine-similarity score)
blk\.0\.attn_k.*=q8_0
blk\.0\.attn_q.*=q8_0
blk\.0\.attn_v.*=q8_0
blk\.0\.attn_output.*=q8_0
blk\..*\.attn_k.*=iq6_k
blk\..*\.attn_q.*=iq6_k
blk\..*\.attn_v.*=iq6_k
blk\..*\.attn_output.*=iq6_k
# Token Embedding (put these second so attn_output regex doesn catch too early)
token_embd\.weight=q8_0
output\.weight=q8_0
# Experts
blk\..*\.ffn_down_exps\.weight=iq5_k
blk\..*\.ffn_(gate|up)_exps\.weight=iq4_k
"
custom=$(
echo "$custom" | grep -v '^#' | \
sed -Ez 's:\n+:,:g;s:,$::;s:^,::'
)
./build/bin/llama-quantize \
--custom-q "$custom" \
--imatrix /mnt/raid/models/ubergarm/Qwen3-30B-A3B-GGUF/imatrix-Qwen3-30B-A3B.dat \
/mnt/raid/models/Qwen/Qwen3-30B-A3B/Qwen3-30B-A3B-BF16-00001-of-00002.gguf \
/mnt/raid/models/ubergarm/Qwen3-30B-A3B-GGUF/Qwen3-30B-A3B-mix-IQ4_K.gguf \
IQ4_K \
24
議論
TODO: bartowski、unsloth、mradermacherなどの量子化を比較することについて、「品質」と「速度」を含めて議論します。
ベンチマーク
llama-sweep-bench
を使用した最初のテストでは、私の3090TI FE 24GB VRAMでPPで1600 tok/secを超え、TGで105 tok/secを達成しています。もちろん、32kの完全なコンテキストに入るにつれて速度は低下します。これは現在まだ新しいものなので、リンクされたベンチマークの議論をチェックして最新情報を確認してください。このサイズのモデルにとって、生成品質と速度の両方で非常に素晴らしいパフォーマンスです!


参考文献
📄 ライセンス