Formatos de Quantização: GGUF vs GPTQ vs AWQ — Qual Arquivo?
Formatos de Quantização: GGUF vs GPTQ vs AWQ — Qual Arquivo Escolher?
Se você já baixou um modelo de linguagem de grande porte (LLM) no Hugging Face ou usou o Ollama, provavelmente já se deparou com uma sopa de letrinhas: Q4_K_M, Q8_0, GPTQ, AWQ, EXL2. Para quem está começando — e até para veteranos — a sensação é de estar diante de um quebra-cabeça sem manual. Afinal, qual desses formatos é o melhor? Qual deles roda na minha placa de vídeo? E por que tantos arquivos diferentes para o "mesmo" modelo?
Este guia definitivo vai desmistificar a quantização de LLMs. Você vai entender o que esses nomes significam, por que eles existem, como escolher o arquivo certo para o seu hardware e como a qualidade do modelo é afetada por essa escolha. Ao final, você nunca mais vai olhar para uma pasta de downloads com medo.
1. Por que os arquivos quantizados confundem?
A raiz da confusão é simples: existem múltiplas técnicas de quantização, criadas por grupos diferentes, para runtimes diferentes. Um modelo como o Llama 3 ou o Mistral começa sua vida com pesos em precisão total (16 bits ou 32 bits). Isso exige uma quantidade absurda de memória — uma placa de vídeo high-end dificilmente comporta um modelo de 70 bilhões de parâmetros sem otimizações.
A quantização entra nesse cenário como uma técnica de compressão que reduz a precisão numérica desses pesos. Em vez de armazenar cada peso com 16 bits (precisão suficiente para treinamento), armazenamos com 4 bits ou 8 bits, cortando o tamanho do modelo em até 4x ou mais. O resultado é que um modelo que precisaria de 24 GB de VRAM pode rodar em uma placa de 12 GB. Esse é o principal apelo, e é por isso que esses arquivos multiplicam-se.
O problema é que cada framework de inferência criou seu próprio formato padrão. A comunidade adotou soluções diferentes: o llama.cpp popularizou o GGUF, o ExLlama e o AutoGPTQ usam GPTQ, e assim por diante. Portanto, antes de escolher um arquivo, você precisa saber qual software vai executá-lo.
2. A regra central: o formato é definido pelo runtime
Entenda isso agora para poupar horas de frustração: a escolha do formato não é sobre "qual arquivo é melhor no vácuo", mas sim sobre "qual arquivo seu runtime suporta". Não adianta baixar o GGUF mais otimizado se você vai rodar no ExLlama. Não adianta baixar um GPTQ se você vai usar o Ollama. O primeiro passo é sempre definir a ferramenta de inferência.
- Ollama / llama.cpp / LM Studio: Use sempre arquivos GGUF. O formato foi desenhado para esses runtimes e oferece suporte a CPU, GPU ou uso híbrido, com várias opções de quantização.
- ExLlama / AutoGPTQ: Prefira arquivos GPTQ ou EXL2. Esses formatos foram otimizados para rodar em GPUs NVIDIA e em bibliotecas específicas de inferência com alta performance.
- vLLM / TensorRT-LLM / SGLang: Arquivos AWQ e GPTQ são comuns, e muitos ainda aceitam FP16. AWQ em particular ganhou popularidade por seu fluxo de trabalho de calibração mais simples em produção.
Essa regra elimina 90% da dúvida. Você escolhe o software, depois a forma de quantização. E é exatamente por isso que gerenciadores como o Ollama escondem a complexidade: eles baixam automaticamente o GGUF correto para o seu hardware.
3. Decifrando os nomes GGUF (Q4_K_M e outros)
Entre todos os formatos, o GGUF é o que tem a nomenclatura mais enigmática. Vamos decodificá-la de uma vez por todas.
GGUF significa "GPT-Generated Unified Format", um sucessor do antigo GGML. Ele foi criado para ser autocontido: o arquivo contém não só os pesos quantizados, mas também metadados, tokenizer e até alguns parâmetros de arquitetura. Isso o torna extremamente portável entre sistemas.
Os sufixos que você vê, como Q4_K_M, obedecem a uma lógica. A letra Q significa "quantizado". O número seguinte (4, 5, 6, 8...) é a quantidade de bits usados para representar a maioria dos pesos. Depois vem a variante de esquema de quantização:
- Q8_0: 8 bits uniforme, a mais alta qualidade entre as quantizações GGUF comuns. O tamanho do arquivo é cerca de metade do FP16, com perda de qualidade quase imperceptível.
- Q6_K: Um bom equilíbrio entre tamanho e qualidade para arquivos maiores. Para muitos, é o ponto ideal em modelos de 70B+.
- Q5_K_M / Q5_K_S: 5 bits, com variação "M" (meio) e "S" (pequeno). O sufixo K refere-se a um esquema que trata tensores de atenção e feed-forward de forma diferente. O "_M" usa uma mistura de tamanhos de bloco, otimizando a relação qualidade/tamanho.
- Q4_K_M / Q4_K_S: O queridinho da comunidade. 4 bits com esquema K, oferecendo um equilíbrio notável entre qualidade e uso de VRAM. É o mais recomendado para quem quer rodar modelos grandes em GPUs de médio porte.
- Q3_K / Q2_K: Quantização agressiva. O modelo fica pequeno, mas a qualidade cai visivelmente. Use apenas em testes extremos ou quando a VRAM for muito limitada.
A diferença entre Q4_K_M e Q8_0 parece óbvia — 4 bits vs 8 bits — mas não se engane: a qualidade não dobra. Medições de perplexidade mostram que a diferença entre Q8_0 e FP16 é mínima, enquanto Q4_K_M adiciona um pouco mais de "ruído". Na prática, para muitas tarefas do dia a dia, a diferença entre Q4_K_M e Q8_0 é quase imperceptível para olhos humanos. O que muda drasticamente é o uso de VRAM e a velocidade de inferência.
4. Os 4 formatos comparados (GGUF / GPTQ / AWQ / EXL2)
Vamos colocar lado a lado os principais formatos que você encontrará na selva de modelos:
| Formato | Runtime principal | Precisão típica | Vantagens | Limitações |
|---|---|---|---|---|
| GGUF | llama.cpp, Ollama, LM Studio | 2 a 8 bits (Q2_K a Q8_0) | Funciona em CPU e GPU; aceleração híbrida; enorme variedade de níveis; portátil e autocontido. | Menos eficiente em GPUs NVIDIA do que formatos otimizados para CUDA. |
| GPTQ | ExLlama, AutoGPTQ, vLLM | 3 a 8 bits (usualmente 4 bits) | Rápido em GPUs NVIDIA; bem estabelecido; boa documentação. | Foco em GPU; calibração pode causar perda de qualidade se mal feita; não roda em CPU (na prática). |
| AWQ | vLLM, TensorRT-LLM, SGLang | 4 bits | Melhor preservação de qualidade por bit em muitos benchmarks; otimizado para produção. | Menor variedade de arquivos pré-quantizados; compatibilidade restrita a alguns runtimes. |
| EXL2 | ExLlama v2 | 2.5 a 8 bits (taxa variável) | Foco extremo em velocidade e qualidade em GPUs NVIDIA; permite tamanhos de bits fracionados. | Exclusivo do ExLlama; sem suporte oficial em outros frameworks. |
Observe que GGUF é o único formato verdadeiramente multiplataforma. Enquanto GPTQ e AWQ exigem GPU CUDA (ou implementações específicas de hardware), o GGUF pode rodar até mesmo em um notebook sem placa de vídeo dedicada, pois o llama.cpp faz a computação com CPU e despacha alguma camadas para GPU se houver memória. Essa é a razão de sua popularidade avassaladora na comunidade open-source.
Já o EXL2 é o formato "das antigas" que nunca morreu e que ganhou novo fôlego. Ele permite quantizações com taxas de bits não inteiras, como 3.25 ou 4.5 bits, o que dá aos usuários um controle fino sobre trade-offs de tamanho e qualidade. Mas, por ser limitado ao ExLlama, fica restrito a um nicho.
5. Qual arquivo / profundidade de bits escolher?
A pergunta de um milhão de dólares. A resposta depende de três fatores: hardware disponível, modelo usado e objetivo final. Aqui está uma heurística que funciona bem:
Passo 1: Descubra quanto de VRAM você tem
Faça o cálculo aproximado: o tamanho do arquivo GGUF é quase igual à memória necessária para carregá-lo. Um arquivo de 8 GB precisa de cerca de 8 GB de VRAM ou RAM (se for usar CPU). Você pode usar ferramentas como lmstudio, ollama ou simplesmente olhar o tamanho do download.
Passo 2: Escolha a maior quantização que couber
A regra prática é: comece do maior (ex: Q8_0) e desça até caber no seu hardware. Veja um exemplo prático para um modelo de 70B:
- Q8_0: ~70 GB. Só em GPUs de 80GB ou com muita RAM.
- Q6_K: ~55 GB. Ideal para RTX A6000 ou configurações multi-GPU.
- Q5_K_M: ~48 GB. Bom para RTX 3090/4090 (24GB) com ajuda de CPU, ou em dual-GPU.
- Q4_K_M: ~40 GB. O ponto ideal para uma RTX 4090 com algumas camadas na CPU.
- Q3_K_S: ~30 GB. Para placas de 24GB, mas prepare-se para perda de qualidade.
Se a sua placa tem 12 GB, um Q4_K_M de um modelo 13B/14B é a escolha certa. Para 8 GB, procure por modelos 7B/8B em Q4_K_M ou Q5_K_S. O segredo não é buscar "o melhor formato" e sim "a melhor qualidade que cabe nos seus recursos".
Passo 3: Entenda onde a qualidade é realmente perdida
Muita gente acha que a quantização é um processo "mágico". Não é. Ela causa uma perda de informação real, medida por métricas como perplexidade. Em termos práticos, a perda de qualidade é mais perceptível em:
- Raciocínio lógico complexo e matemática com múltiplas etapas.
- Geração de código extenso com sintaxe precisa.
- Tarefas que exigem seguir instruções negativas ou nuances de contexto longo.
Ao mesmo tempo, a maior parte da "perda" é ruído de baixa magnitude. Em conversas casuais, resumos e geração criativa, um Q4_K_M se comporta de forma quase idêntica ao FP16. Por isso, a recomendação de uso geral é: Q4_K_M para GPUs limitadas, Q6_K para GPUs folgadas, e Q8_0 para quem quer máxima fidelidade.
6. Encontrando arquivos no Hugging Face e no Ollama
Agora que você sabe o que procurar, veja onde baixar.
Hugging Face
O repositório padrão da comunidade. Quando você abre uma página de modelo, vá até a seção Files and versions. Se o modelo tiver suporte oficial aos formatos, você verá pastas separadas como gguf/, gptq/ ou awq/. Fique atento a organizações famosas como TheBloke (que publicou milhares de quantizações), bartowski ou os repositórios oficiais do Llama e Mistral.
Dica importante: leia o arquivo README do modelo. Ele quase sempre indica qual combinação de VRAM é necessária e qual formato é recomendado para cada caso de uso. É o seu melhor aliado.
Ollama
No Ollama, o processo é transparente. Ao executar ollama run llama3 ou ollama run phi3, você não precisa escolher o arquivo. O Ollama baixa a versão do GGUF que julga adequada para o seu hardware. Se quiser controlar, use tags como llama3:8b-instruct-q4_K_M ou phi3:14b-q4_K_M. Isso é especialmente útil em servidores com múltiplas configurações de GPU.
A vantagem do Hugging Face é a flexibilidade; a vantagem do Ollama é a simplicidade. Em um ambiente de produção, você pode usar o Ollama com modelos GGUF personalizados, enquanto o Hugging Face é ideal para os que querem experimentar novos formatos de quantização.
Conclusão: o formato certo é o que funciona para o seu caso
GGUF, GPTQ, AWQ e EXL2 não são inimigos. São ferramentas criadas para contextos diferentes. Se você quer rodar um LLM em uma CPU ou em um notebook modesto, GGUF é a escolha óbvia. Se você tem uma NVIDIA GPU e quer velocidade máxima com menor uso de memória, GPTQ ou AWQ são mais indicados. Para um controle fino e performance extrema no ExLlama, EXL2 pode ser o seu formato hidden-gem.
A boa notícia: para a maioria dos usuários, a diferença entre Q4_K_M, Q5_K_M e Q8_0 é pequena em qualidade e grande em requisitos de hardware. Comece com a regra do "maior que couber", aplique testes práticos com suas próprias tarefas e, acima de tudo, experimente. Baixar um GGUF Q4_K_M de um modelo de 7B e usá-lo no LM Studio leva menos de cinco minutos e pode ser a porta de entrada para um novo mundo de IA local.
Resumo rápido para não esquecer: o formato é definido pelo runtime, o nome do arquivo GGUF é um código que revela a profundidade de bits, e a escolha final é uma conversa entre qualidade, tamanho e hardware.
FAQ
1. Qual a diferença entre Q4_K_M e GPTQ?
Q4_K_M é um nível de quantização dentro do formato GGUF, usado em llama.cpp e Ollama. GPTQ é um formato inteiro de quantização, com seu próprio esquema de calibração, usado principalmente em GPUs NVIDIA via ExLlama ou vLLM. Não são diretamente comparáveis, pois rodam em runtimes diferentes.
2. Posso rodar arquivos GPTQ no Ollama?
Não. O Ollama suporta somente GGUF. Se você quer usar GPTQ, precisa de um runtime como ExLlama, AutoGPTQ ou vLLM.
3. Quantos gigabytes de VRAM preciso para um modelo de 13B em Q4_K_M?
Um arquivo Q4_K_M de 13B possui tipicamente cerca de 7-8 GB. Com overhead de contexto e KV cache, recomenda-se uma GPU com 10-12 GB de VRAM para uso confortável. Sem contexto longo, uma RTX 3060 12GB dá conta.
4. Q4_K_M é "ruim" comparado ao Q8_0?
Não. É a quantização mais equilibrada da família GGUF para uso geral. A diferença de perplexidade entre Q4_K_M e Q8_0 é pequena na maioria dos casos, mas cresce em tarefas de raciocínio lógico extenuante. Se você tem VRAM de sobra, use Q6_K ou Q8_0.
5. O que significa o "_K" nos arquivos GGUF?
O "_K" é uma homenagem ao autor original do esquema de quantização de tensores, Kawrak (do usuário do GitHub "ikawrakow"). Ele criou um método mais inteligente que distribui os bits com base na importância dos tensores, reduzindo a perda de qualidade. É por isso que Q4_K_M é melhor que um Q4 simples.
6. AWQ é sempre melhor que GPTQ?
Em muitos benchmarks, AWQ preserva mais qualidade que GPTQ com a mesma taxa de bits, especialmente em modelos menores. Mas a diferença é pequena e depende do runtime. Na prática, a melhor escolha é a que funciona no seu software de inferência.
7. Como escolho entre Q5_K_M e Q6_K?
Se couber na VRAM, escolha Q6_K. Se não couber, Q5_K_M é um excelente segundo lugar. Não vale a pena sacrificar outro aspecto do seu sistema (como contexto longo) só para passar para 6 bits.