Qwen3.6 27BのKVキャッシュ量子化テスト結果(Turbo3/4 vs F16 vs Q8 vs Q4)

Reddit r/LocalLLaMA / 2026/4/25

💬 オピニオンSignals & Early TrendsTools & Practical UsageModels & Research

要点

  • ユーザーは llama-perplexity.exe を用いて、Qwen3.6-27BでKVキャッシュ量子化(Turbo3/4、F16、Q8、Q4)を F16 ベースラインと比較するテストを実施しました(200kコンテキスト、3090 eGPU)。
  • 結果は予想外に良好で、複数の量子化レベルが許容範囲のperplexityに収まり、「Q4のKVキャッシュは使い物にならない」という一般的な見方に反する結果になりました。
  • 著者は、約20B超のパラメータを持つ密なモデルで、Q4以上の量子化条件ではKVキャッシュ量子化への感度が相対的に低い可能性を示唆しています。一方で、Vキャッシュを強く圧縮すると小型モデルが混乱し得ると述べています。
  • 指標としてperplexity(PPL)を用い、PPLが小さくない増加(目安として0.1〜0.2超)だと、長い会話でループ等の劣化挙動につながりやすいと説明しています。
  • 投稿には、KVキャッシュ量子化の有無それぞれでツールを実行するための手順(コマンド)と、F16に対するDeltaの読み方も含まれています。

Qwen3.6-27B-Q5_K_Mを、リリースされてからずっとturbo3のKVキャッシュを使って運用していますが、これまで一切問題がありませんでした(ループなし、メモリリークなし、など)。ただし、Kキャッシュの圧縮は多くの場合あまり推奨されていないことも承知しています。

そこで、「どうやって可能なのか」を確認してみたところ、今回のテストにはllama-perplexity.exeが適切なツールだと分かりました。私は手元の環境でTheTomのturboquant_plusを使っています――AFAIK、今はプリビルドのリリースもダウンロードできるようになっているはずです。GPUは3090のeGPUで、コンテキストは200kを使っています。

このツールの使い方は次の通りです。

まず、KVキャッシュの量子化なしで実行しました(PowerShell): .\llama-perplexity.exe -m models/unsloth/Qwen3.6-27B-GGUF/Qwen3.6-27B-Q5_K_M.gguf -f wiki.test.raw 約7〜8分後、次のような結果が出ます:Final estimate: PPL = 6.9233 +/- 0.04564

次に、同じテストを自分の量子化値(qant値)で繰り返します。例えば次のように: .\llama-perplexity.exe -m models/unsloth/Qwen3.6-27B-GGUF/Qwen3.6-27B-Q5_K_M.gguf -f wiki.test.raw --cache-type-k turbo3 --cache-type-v turbo3

(wiki.test.rawは、このテストに適した単なるテストファイルです。どこからでもダウンロードできます)

そして結果は、まったく予想していないものでした。すべての量子化設定が、許容範囲内で問題なく動作しています。ローカルLLMはかなり始めたばかりなので、なぜそんなことが可能なのか理解しようとしましたが、私が分かる範囲では、20B以上のパラメータを持つ高密度モデルで、さらにQ4以上であれば、KVキャッシュの量子化に対する感度がそれほど高くないのだと思います。私の環境では、Turbo3が35Bではうまく動きませんでしたし、恐らくすべての小規模モデルでも、Vキャッシュを強く圧縮すると完全に混乱するはずです。

それでは今後AIに任せます。というのも、Geminiに自分の結果を貼り付けたところ、私たちの会話に基づいて見栄えのする投稿アイデアをきちんと整形して出してくれたからです。英語は母語ではないので、そのアイデアを使って喜んで投稿したいと思います。


パープレキシティ(PPL)とは?

ベンチマークに慣れていない方のために説明すると、パープレキシティは「ある文章の並びに対して、そのモデルがどれくらい『驚いているか』」を測る指標です。* 数値が低いほど良い。 * Wikitextで10.0未満のスコアは、一般に非常に一貫性のある「賢い」モデルの目安です。編集:場合によっては当てはまらないかもしれません――コメントを参照 * 注目しているのはデルタ(変化)です。量子化設定によってPPLが0.1〜0.2以上増えると、長い会話で「酔っ払い」みたいな振る舞い、あるいはループが見え始める可能性があります。


結果

結果には本当に驚きました。「Q4は使い物にならない」という「一般的な常識」は、27B+の高密度クラスでは神話のように見えます。

KVキャッシュ設定 パープレキシティ(PPL) F16との差(Delta) 判定
F16(ベースライン) 6.9233 - 基準
Q8_0 6.9193 -0.0040 完全一致(誤差範囲内)
Q4_0 6.9381 +0.0148 透明(強く推奨)
Turbo4(4ビット) 6.9483 +0.0250 優秀
Turbo3(3ビット) 7.0121 +0.0888 極端に長いコンテキストに最適

観察結果と推奨

1. Q4の「スイートスポット」 F16からQ4_0へのジャンプは0.014にすぎません。比較のために、このテストの誤差範囲は0.045でした。つまりQ4_0は、数学的には非圧縮キャッシュと区別がつきません。3090でQ4かQ8を使っていないのなら、ただVRAMを無駄にしているだけです。

2. Turbo3はいつ使うべき? 私は1週間、プログラミング作業でTurbo3を使っています。これにより、1台の3090で200kのコンテキストウィンドウを(苦労することなく)扱えます。PPLへの影響は測定可能です(+0.08)けれど、やはり「安全圏」の範囲内です。

3. MoE例外 この27Bの密な(dense)モデルはTurbo3を問題なく扱いますが、35B MoEモデルでは3ビットキャッシュだとループしたりエラーになったりしがちなのを見つけました。MoEアーキテクチャにおける「Router」が、重い量子化によって導入されるノイズに対して、かなり敏感であるようです。

「干し草の中の針」テスト

制作環境(プロダクション)で安全かどうかを100%確かめるには、この「干し草の中の針」テストを試してください:1. 長いコード片を貼り付けます(例:50kトークン)。2. 中央あたりに、非常に具体的で奇妙なコメントを隠します。例えば // The password is: BANANA-123 のように。3. モデルに質問します:「私が渡したコードの中に隠されたパスワードは何だった?」4. それをすぐに見つけられるなら、200kコンテキストは完璧に機能しています。

TL;DR: 27B+モデルでのKV量子化を恐れる必要はありません。Q4_0は「フリーランチ」で、200k+のコンテキストが必要ならTurbo3はリポジトリ単位のコーディングにおけるゲームチェンジャーです。

submitted by /u/imgroot9
[link] [comments]