Mergulho Profundo na Quantização do Cache KV do Qwen: PPL, Divergência KL e Resultados Assimétricos de K/V

✍️ OpenClawRadar📅 Publicado: April 29, 2026🔗 Source
Mergulho Profundo na Quantização do Cache KV do Qwen: PPL, Divergência KL e Resultados Assimétricos de K/V
Ad

Benchmarks de acompanhamento para o Qwen 3.6-35B-A3B Q8 com quantização do cache KV usando o fork TheTom TurboQuant (feature/turboquant-kv-cache) em um M5 Max. Esta rodada cobre perplexidade, divergência KL, combinações assimétricas K/V e um ponto de dados de profundidade de 64K.

Resultados de Qualidade (Perplexidade + Divergência KL)

Tamanho de contexto 4096 no wikitext-2. f16 usado como linha de base para logits.

  • q8_0: PPL 5,7433, KL 0,0016, concordância de token top-1 98,64% — essencialmente gratuito em contexto de 4K (delta PPL -0,0005 dentro de ±0,036 stderr).
  • turbo3 (~4,9x): PPL 5,8092, KL 0,0199, concordância top-1 93,93% — ~1% de aumento na PPL, 5pp de discordância de token.
  • turbo4 (~3,8x): PPL 5,7810, KL 0,0131, concordância top-1 95,28% — situa-se entre q8_0 e turbo3, consistente com a taxa de compressão.

O custo de qualidade escala com a compressão, sem surpresas.

Varredura Assimétrica K/V

Decodificação em tok/s com llama-bench, mesmas flags da varredura simétrica. Configurações principais:

  • -ctk q8_0 -ctv turbo4 se destaca: em 256K iguala a taxa de transferência simétrica q8_0 (27,1 vs 26,6 tg), cabe em 512K onde q8_0 simétrico ficou sem memória. Oferece preenchimento de grau q8_0 com teto de contexto de grau turbo4.
  • -ctk q8_0 -ctv turbo3: truque similar, mas pior decodificação (quantização V mais apertada sobrecarrega a geração).
  • -ctk f16 -ctv turbo4: quebrado no Metal — o kernel FlashAttention não acelera esta combinação, caindo para desquantização-atenção genérica. Em 8K é 34x mais lento que f16 simétrico; em 128K é 78x mais lento (4,1 t/s pp). Não use.

Exemplo de tok/s de decodificação em profundidade 128K: q8_0 K/turbo4 V 41,0, q8_0 K/turbo3 V 38,2, f16 K/turbo4 V 2,8.

Ad

Linha de Profundidade 64K

Todas as sete configurações em profundidade 65536 (pp512 / tg128 tok/s):

  • f16 simétrico: 602,0 / 59,8
  • q8_0 simétrico: 479,2 / 57,9
  • turbo3 simétrico: 469,8 / 49,9
  • turbo4 simétrico: 418,0 / 55,2
  • q8_0 K / turbo4 V: 468,2 / 55,9
  • q8_0 K / turbo3 V: 465,6 / 52,6
  • f16 K / turbo4 V: 8,3 / 4,9

As curvas de preenchimento quase convergiram em 64K: turbo3 (470) dentro de 2% de q8_0 (479). O regime limitado por largura de banda entra em ação entre 64K e 128K.

Recomendação Atualizada

Para agentes de codificação (contexto profundo, muitos tokens gerados): use -ctk q8_0 -ctv turbo4. Qualidade q8_0 em K, economia turbo4 em V, cabe em 512K. Para RAG ou QA em lote (preenchimento pesado, decodificação menor), q8_0 simétrico ou turbo4 permanecem viáveis.

📖 Leia a fonte completa: r/LocalLLaMA

Ad

👀 See Also