Qwen3.6-27B IQ4_XS Bloat: llama.cppコミットの巻き戻しで16GB VRAMを16GB節約(14.7GB vs 15.1GB)+KVCacheテスト
Qwen3.6-27Bのリリース後、3.5バージョン向けにmradermacherが作成した優れたIQ4_XS量子化(14.7GB)Qwen3.5-27B-i1-GGUF と比べて、今回の画像(モデル)が肥大化していることに気づきました。Qwen3.6相当(Qwen3.6-27B-i1-GGUF)は現在15.1GBあります。
IQ4_XSは本物の"ユニコーン"です――すべてのベンチマークで、サイズとモデル品質の比率が驚異的です。実際には、まともなコンテキストを確保して16GB VRAMで27Bモデルを動かすための、唯一の実行可能な選択肢です。これより下は、コーディング用途のタスクには適しません。残念ながら14.7GBから15.1GBへの増加は、16GBカードでの体験を壊してしまいました。
原因と解決策 犯人は特定のllama.cppコミット(1dab5f5a44)です:GitHubリンク。その影響は、attn_qkv層の量子化を最低でもQ5_Kに固定してしまうことです。
これを直すために、ソースコードを修正し、元のIQ4_XS層の量子化を1:1で再現しました。mradermacherのimatrix(Qwen3.6-27B-i1-GGUF)を使い、比較ベンチマークを実施しました。モデル品質の大きな低下は観察されませんでした。私の見解では、言及されたコミットはIQ4_XSフォーマットに対する純粋な後退(regression)です。
層を巻き戻した14.7GBの自作モデルはこちらで入手可能です: cHunter789/Qwen3.6-27B-i1-IQ4_XS-GGUF
パープレキシティ・ベンチマーク:65kコンテキスト(-c 65536)
テストパラメータ: pg19.txt (Project Gutenbergからここでダウンロード、 --chunks 32, -ngl 99 (特記がない限り)、 -fa 1, -b 512, -ub 128
| ID | モデルサイズ | モデルファイル / バージョン | -ctk | -ctv | 最終PPL |
|---|---|---|---|---|---|
| 1 | 15.1GB | Qwen3.6-27B.i1-IQ4_XS.gguf (標準) | q8_0 | q8_0 | 7.3765 ± 0.0276 |
| 2 | 14.7GB | ...-IQ4_XS-attn_qkv-IQ4_XS.gguf (カスタム) | q8_0 | q8_0 | 7.3804 ± 0.0276 |
| 3 | 14.7GB | ...-IQ4_XS-attn_qkv-IQ4_XS.gguf (カスタム) | q8_0 | turbo2 | 7.4260 ± 0.0277 |
| 4 | 15.1GB | Qwen3.6-27B.i1-IQ4_XS.gguf (標準) | q8_0 | turbo3 | 7.4069 ± 0.0277 |
| 5 | 14.7GB | ...-IQ4_XS-attn_qkv-IQ4_XS.gguf (カスタム) | q4_0 | q4_0 | 7.3964 ± 0.0277 |
| 6 | 14.7GB | ...-IQ4_XS-attn_qkv-IQ4_XS.gguf (カスタム) | turbo3 | turbo3 | 7.4317 ± 0.0279 |
65kコンテキスト用コマンドライン:
./llama-perplexity -m Qwen3.6-27B.i1-IQ4_XS.gguf -f pg19.txt -c 65536 --chunks 32 -ngl -1 -ctk q8_0 -ctv q8_0 -fa 1 -b 512 -ub 128./llama-perplexity -m Qwen3.6-27B.i1-IQ4_XS-attn_qkv-IQ4_XS.gguf -f pg19.txt -c 65536 --chunks 32 -ngl -1 -ctk q8_0 -ctv q8_0 -fa 1 -b 512 -ub 128./llama-perplexity -m Qwen3.6-27B.i1-IQ4_XS-attn_qkv-IQ4_XS.gguf -f pg19.txt -c 65536 --chunks 32 -ngl -1 -ctk q8_0 -ctv turbo2 -fa 1./llama-perplexity -m Qwen3.6-27B.i1-IQ4_XS.gguf -f pg19.txt -c 65536 --chunks 32 -ngl 99 -ctk q8_0 -ctv turbo3 -fa 1 -b 512 -ub 128./llama-perplexity -m Qwen3.6-27B.i1-IQ4_XS-attn_qkv-IQ4_XS.gguf -f pg19.txt -c 65536 --chunks 32 -ngl 99 -ctk q4_0 -ctv q4_0 -fa 1 -b 512 -ub 128./llama-perplexity -m Qwen3.6-27B.i1-IQ4_XS-attn_qkv-IQ4_XS.gguf -f pg19.txt -c 65536 --chunks 32 -ngl 99 -ctk turbo3 -ctv turbo3 -fa 1 -b 512 -ub 128
KVキャッシュの観察: これらのテストは、Qwen3.6-27Bに関してはturboquant_plusの結論が当てはまらないことを示しています。Vキャッシュを犠牲にしてKキャッシュを増やしても、目立った有益性はありません。実際、このモデルではVキャッシュのほうが同程度に重要であるように見えます。
パープレキシティ・ベンチマーク:110kコンテキスト(-c 110000)
上記を踏まえ、対称的なTurbo3量子化を使うことにしました。さらに、私のカスタム14.7GBモデルと組み合わせることで、110kコンテキストを16GB VRAM内で完全に実現できました。(テストにかなり時間がかかったので、データを評価してもらえると嬉しいです!)
| ID | モデルサイズ | モデルファイル / バージョン | -ctk | -ctv | 最終PPL |
|---|---|---|---|---|---|
| 7 | 14.7GB | ...-IQ4_XS-attn_qkv-IQ4_XS.gguf (カスタム) | q8_0 | q8_0 | 7.5205 ± 0.0285 |
| 8 | 14.7GB | 選択した最終設定 | turbo3 | turbo3 | 7.5758 ± 0.0287 |
| 9 | 15.1GB | Qwen3.6-27B.i1-IQ4_XS.gguf (標準) | turbo3 | turbo3 | 7.5727 ± 0.0287 |
110kコンテキスト用コマンドライン:
7. ./llama-perplexity -m Qwen3.6-27B.i1-IQ4_XS-attn_qkv-IQ4_XS.gguf -f pg19.txt -c 110000 --chunks 32 -ngl -1 -ctk q8_0 -ctv q8_0 -fa 1 -b 512 -ub 64
8. ./llama-perplexity -m Qwen3.6-27B.i1-IQ4_XS-attn_qkv-IQ4_XS.gguf -f pg19.txt -c 110000 --chunks 32 -ngl 99 -ctk turbo3 -ctv turbo3 -fa 1 -b 512 -ub 256
9. ./llama-perplexity -m Qwen3.6-27B.i1-IQ4_XS.gguf -f pg19.txt -c 110000 --chunks 32 -ngl -1 -ctk turbo3 -ctv turbo3 -fa 1 -b 512 -ub 256
Q3論争
Q3モデルは問題ない、という理論がいくつか出回っています。判断はあなたに任せます:
| ID | モデルサイズ | モデルファイル / バージョン | -ctk | -ctv | 最終PPL |
|---|---|---|---|---|---|
| 10 | Q3_K_L | Qwen3.6-27B.i1-Q3_K_L.gguf | q8_0 | q8_0 | 7.6538 ± 0.0292 |
| 11 | Q3_K_L | Qwen3.6-27B.i1-Q3_K_L.gguf | turbo3 | turbo3 | 7.7085 ± 0.0295 |
Q3テストのコマンドライン:
10. ./llama-perplexity -m Qwen3.6-27B.i1-Q3_K_L.gguf -f pg19.txt -c 110000 --chunks 32 -ngl -1 -ctk q8_0 -ctv q8_0 -fa 1 -b 512 -ub 128
11. ./llama-perplexity -m Qwen3.6-27B.i1-Q3_K_L.gguf -f pg19.txt -c 110000 --chunks 32 -ngl 99 -ctk turbo3 -ctv turbo3 -fa 1 -b 512 -ub 256
[リンク] [コメント]




