← Resources
By Ren Sugaya
— Performance Engineer, GPU & Inference
·
· INSIGHT
Quantização de LLM explicada: GGUF, Q4 vs Q8 e qualidade
A quantização reduz o tamanho de um LLM armazenando seus pesos com menor precisão, cortando a VRAM em cerca de quatro vezes a 4 bits. Este guia explica o cálculo de VRAM, decodifica os nomes de quantização GGUF como Q4_K_M, compara GGUF com GPTQ e AWQ, e mostra onde a qualidade realmente se deteriora.
O que é quantização e por que ela importa
A quantização reduz a precisão numérica usada para armazenar os pesos do modelo — normalmente de FP16 (16 bits, 2 bytes por peso) para 8 bits ou 4 bits. Como a memória escala linearmente com os bits por peso, 4 bits usa cerca de quatro vezes menos VRAM que FP16. Isso também acelera a inferência, já que a geração de tokens é limitada pela largura de banda da memória, não apenas pelo poder de processamento.
O cálculo de tamanho é simples: bytes ≈ (parâmetros × bits-por-peso) ÷ 8. Um modelo de 8B em FP16 tem cerca de 16 GB; a 4 bits, aproximadamente 4,5 GB. Essa diferença é o que transforma um modelo que precisa de uma GPU de data center em um que roda em um laptop.
GGUF é um formato de arquivo, não um método
GGUF é um formato de arquivo único que armazena os pesos quantizados junto com os metadados do modelo (tokenizador, arquitetura, hiperparâmetros). É o sucessor do GGML do projeto llama.cpp, otimizado para CPU, Apple Silicon (Metal) e inferência mista CPU/GPU — motivo pelo qual domina a inferência local e em laptops por meio de llama.cpp, Ollama e LM Studio.
O nível de quantização fica no nome do arquivo. O número é a média de bits por peso; `_K` significa k-quants (o moderno método de superbloco com fatores de escala duplamente quantizados e alocação de bits sensível à camada); `_S`, `_M`, `_L` são as variantes pequena, média e grande. `_M` mantém seletivamente as camadas sensíveis — atenção e saída — em maior precisão, razão pela qual Q4_K_M supera uma quantização plana de 4 bits.
Q4 vs Q5 vs Q8: tamanho e qualidade, com números
Uma avaliação revisada por pares no Llama-3.1-8B torna os compromissos concretos (os tamanhos são para esse modelo; as proporções se generalizam). Em relação a uma perplexidade de base FP16 de cerca de 7,32 (quanto menor, melhor):
- Q8_0 — 8,5 bits/peso, ~7,95 GiB, perplexidade 7,33: praticamente sem perdas.
- Q6_K — 6,56 bpw, ~6,14 GiB, perplexidade 7,35.
- Q5_K_M — 5,70 bpw, ~5,33 GiB, perplexidade 7,40.
- Q4_K_M — 4,89 bpw, ~4,58 GiB, perplexidade 7,56: o ponto ideal prático, a menos de meio por cento da linha de base.
- Q3 e abaixo — degradação acentuada e consistente, especialmente em tarefas de raciocínio.
A faixa de 4 a 5 bits é a zona segura. Abaixo de 3 bits você precisa de quantizações por matriz de importância (IQ), que usam dados de calibração para concentrar a precisão onde mais importa — utilizáveis, mas como último recurso quando a memória é muito limitada.
GGUF vs GPTQ vs AWQ
GGUF não é a única opção; a certa depende de onde você executa o modelo.
- GGUF: desenvolvido para CPU, Mac e offload misto. Escolha-o para inferência local e em desktop.
- GPTQ: pós-treinamento, baseado em calibração, usa informações de segunda ordem para minimizar o erro por camada. O mais preciso peso por peso para uma dada largura de bits, mas lento de produzir e voltado para o serviço em GPU (vLLM, TGI, TensorRT-LLM).
- AWQ: protege cerca de 1% dos pesos mais relevantes com base nas magnitudes de ativação; mais rápido de produzir que o GPTQ e otimizado para GPU a 4 bits.
- bitsandbytes: quantiza em tempo real no carregamento, sem checkpoint pré-quantizado nem calibração — o caminho mais fácil, muito usado para o ajuste fino com QLoRA.
A divisão prática: GGUF para local e laptop, AWQ ou GPTQ para throughput em servidor GPU.
Quanta qualidade você realmente perde?
Menos do que a maioria teme a 4 bits, e mais do que esperam abaixo de 3 bits. Na avaliação do Llama-3.1-8B, Q8 ficou dentro da margem de arredondamento da precisão completa, Q4_K_M perdeu menos de meio por cento nos benchmarks médios, e a queda brusca apareceu a 3 bits, com a degradação mais clara em avaliações de raciocínio intensivo como matemática do ensino fundamental. Lembre-se de que os valores absolutos de perplexidade e tamanho são específicos de cada modelo — as porcentagens se generalizam, mas verifique sempre os números do seu modelo base. E reserve VRAM além do tamanho do arquivo: o cache KV e cerca de 10–15% de sobrecarga do framework também precisam de margem.
Quantização no osFoundry
Escolher uma quantização normalmente significa entender bits por peso, deixar espaço para o cache KV e vasculhar uma parede de sufixos GGUF crípticos para encontrar o único arquivo que cabe sem travar. A inferência local do osFoundry elimina essa etapa: detecta sua memória disponível e seleciona automaticamente a quantização certa — Q4_K_M para VRAM limitada, Q5_K_M ou Q8_0 quando há margem — para que o modelo rode com a melhor qualidade que seu hardware suporta. O catálogo exibe apenas as versões compatíveis em vez de todas as variantes, e recorre com elegância a uma quantização mais leve se uma mais pesada não couber. Você obtém o ponto ideal entre tamanho e qualidade de escolher um GGUF manualmente, sem precisar saber o que significa Q4_K_M.
Frequently asked questions
- O que é quantização de LLM em termos simples?
- É armazenar os pesos de um modelo com menor precisão numérica — por exemplo, 4 bits em vez de 16 — para reduzir seu tamanho. Como a memória escala com os bits por peso, a quantização a 4 bits usa cerca de quatro vezes menos VRAM que FP16 e é mais rápida, com um custo de qualidade pequeno e geralmente aceitável.
- O que significa GGUF e o que é?
- GGUF é o formato de modelo de arquivo único do projeto llama.cpp (o sucessor do GGML) que agrupa os pesos quantizados com os metadados do modelo. É otimizado para CPU, Apple Silicon e inferência mista CPU/GPU, razão pela qual é o padrão de ferramentas locais como llama.cpp, Ollama e LM Studio. É um formato de arquivo, não um algoritmo de quantização.
- Qual é a diferença entre Q4, Q5 e Q8?
- O número é a média de bits por peso, portanto Q8 é maior e de maior fidelidade que Q5, que por sua vez é maior que Q4. Em um modelo típico de 8B, Q8 é quase sem perdas com cerca de 8 GB, Q5_K_M fica um pouco abaixo com cerca de 5,3 GB, e Q4_K_M é o ponto ideal entre tamanho e qualidade com cerca de 4,6 GB e menos de meio por cento de perda.
- Qual quantização GGUF devo usar?
- Q4_K_M na maioria dos casos — é o melhor equilíbrio entre tamanho e qualidade e o ponto de partida padrão. Suba para Q5_K_M ou Q8_0 se tiver VRAM sobrando e quiser maior fidelidade, e só desça abaixo de Q4 (usando quantizações IQ por matriz de importância) quando a memória for realmente limitada, pois a qualidade cai drasticamente a 3 bits e abaixo.
- Quanta qualidade se perde com a quantização a 4 bits?
- Surpreendentemente pouca. Em uma avaliação revisada por pares do Llama-3.1-8B, Q4_K_M ficou a menos de meio por cento da linha de base de precisão completa nos benchmarks médios. A degradação perceptível começa a 3 bits, especialmente em tarefas de raciocínio e matemática. Os números exatos variam por modelo, mas a faixa de 4 a 5 bits é amplamente considerada a zona segura.
- GGUF vs GPTQ vs AWQ — qual devo escolher?
- GGUF para inferência local, em laptop e Apple Silicon via llama.cpp ou Ollama. GPTQ e AWQ armazenam um layout otimizado para GPU e são a melhor escolha para throughput em servidor GPU com vLLM ou TGI — AWQ é mais rápido de produzir, GPTQ geralmente é o mais preciso peso por peso. bitsandbytes é o mais fácil, pois quantiza no carregamento sem calibração.
- Como calculo a VRAM que um modelo quantizado precisa?
- Use bytes ≈ (parâmetros × bits-por-peso) ÷ 8. A 4 bits são aproximadamente 0,5 a 0,6 GB por bilhão de parâmetros, portanto um modelo de 8B tem cerca de 4,5 GB. Depois adicione margem para o cache KV e cerca de 10 a 15% de sobrecarga do framework — a pegada em execução é sempre maior que o arquivo em disco.
Sources