auto-round: Estado da Arte em quantização para CPU/XPU/GPU NVIDIA

O AutoRound (https://github.com/intel/auto-round) é uma ferramenta de quantização para LLMs e VLMs desenvolvida pela Intel. A ideia central é reduzir o modelo para 2, 3, 4 ou 8 bits, mantendo boa precisão, principalmente em cenários de low-bit weight-only quantization (converte os pesos mas manter a inferência), como W4A16, W3A16 e W2A16. O próprio repositório descreve o AutoRound como um toolkit para LLMs/VLMs que usa signed gradient descent para obter alta acurácia em 2–4 bits com baixo custo de ajuste.

Como Intel Innovator, tenho a missão mostrar o compromisso sério da Intel neste vertical tecnológica. A tecnologia beneficia GPU NVIDIA, CPU e XPU

Em termos simples: ele não apenas “arredonda” os pesos para 4 bits como um método ingênuo faria. Ele aprende a melhor forma de arredondar os pesos e também ajusta os limites de clipping para reduzir o erro entre a saída do bloco original e a saída do bloco quantizado. O paper do SignRound (https://arxiv.org/html/2309.05516v3) explica que o método adiciona parâmetros treináveis para ajustar o rounding e dois parâmetros extras para ajustar o clipping dos pesos; depois usa reconstrução por bloco e otimização com SignSGD.

Como ele funciona

O fluxo é mais ou menos assim:

  1. Você passa um modelo Hugging Face, por exemplo Qwen/Qwen3-0.6B, Llama, Mistral, etc.
  2. Ele usa um dataset de calibração. Por padrão, usa NeelNanda/pile-10k, mas aceita datasets customizados, JSON local, lista de strings, input ids, concatenação de datasets e aplicação de chat template.
  3. Para cada bloco/camada, ele compara a saída do modelo original com a saída do modelo quantizado.
  4. Ele otimiza o rounding dos pesos e o range de clipping usando signed gradient descent.
  5. No final, salva o modelo em um formato escolhido: auto_round, auto_gptq, auto_awq, gguf, llm_compressor, mlx, entre outros.

Como usar?

Para exportar para GGUF:

O repositório mostra instalação via pip install auto-round, suporte a CPU/GPU CUDA, Intel XPU e Gaudi/HPU, além de exemplos com Qwen/Qwen3-0.6B

O que significa W4A16, W3A16, W2A16

W4A16 significa:

CampoSignificado
W4pesos em 4 bits
A16ativações em 16 bits, normalmente FP16/BF16
group_size=128quantização por grupos de pesos
sym=Truequantização simétrica

O AutoRound documenta esquemas como W4A16, W8A16, W3A16, W2A16, mixed bits, GGUF, NVFP4, MXFP4, FP8 e outros.

Na prática, W4A16 costuma ser o ponto mais seguro: boa redução de memória com perda pequena. W2A16 é muito mais agressivo: pode reduzir muito mais o tamanho dos pesos, mas exige algoritmo melhor, calibração melhor e validação forte.

Diferença para GPTQ, AWQ, SmoothQuant, bitsandbytes e GGUF

TecnologiaO que fazDiferença principal em relação ao AutoRound
AutoRound / SignRoundPTQ weight-only com otimização de rounding e clipping por SignSGDMais focado em otimizar o arredondamento dos pesos, bom para 2–4 bits, com exportação para vários formatos
GPTQQuantização weight-only baseada em informação de segunda ordem/HessianGPTQ é “one-shot” e muito usado para 3/4 bits; AutoRound usa otimização de rounding/clipping e pode inclusive exportar em formato GPTQ
AWQActivation-aware weight quantizationAWQ identifica canais importantes pelas ativações e protege pesos salientes; não depende de backprop/reconstrução, enquanto AutoRound otimiza com calibração e SignSGD
SmoothQuantQuantização W8A8, pesos e ativações em INT8SmoothQuant é mais voltado para INT8 completo, migrando dificuldade das ativações para os pesos; AutoRound é mais focado em weight-only low-bit, como W4A16/W2A16
bitsandbytes / QLoRAQuantização 8-bit/4-bit prática para carregar e fine-tunar modelosbitsandbytes é ótimo para fine-tuning com LoRA/QLoRA e carregamento simples; AutoRound é mais um pipeline offline de quantização calibrada/exportável
GGUF / llama.cppFormato/ecossistema de arquivo e kernels para CPU/GPUGGUF não é apenas algoritmo; é formato + tipos de quantização. AutoRound pode exportar para GGUF, inclusive q4_k_m, q2_k_s, etc.

GPTQ se baseia em quantização weight-only com informação aproximada de segunda ordem e mostrou bons resultados em 3/4 bits em modelos grandes. AWQ usa estatísticas de ativação para proteger canais salientes e evitar quantização mista ineficiente, sem backpropagation ou reconstrução. SmoothQuant é uma abordagem PTQ para W8A8, suavizando outliers de ativação por uma transformação matematicamente equivalente entre ativações e pesos. bitsandbytes fornece camadas quantizadas 8-bit/4-bit, otimizadores 8-bit, LLM.int8() e QLoRA com NF4 para reduzir uso de memória.

Vantagens do AutoRound

A grande vantagem é que ele tenta entregar mais qualidade em baixa precisão, principalmente em 2, 3, 4 e 8 bits, onde métodos simples como RTN geralmente degradam bastante. No paper original, os autores comparam com GPTQ, AWQ, HQQ, OmniQuant e RTN, e relatam ganhos maiores conforme os bits diminuem, especialmente em W2G128, com melhorias absolutas de acurácia média entre 6,91% e 33,22% em 11 tarefas zero-shot.

Outra vantagem é a compatibilidade de ecossistema: o AutoRound suporta exportação para auto_round, auto_gptq, auto_awq, gguf, llm_compressor e mlx, além de integração com Transformers, vLLM e SGLang.

Dicas:

A documentação recomenda auto-round como bom equilíbrio geral, auto-round-best para melhor acurácia — especialmente 2-bit — e auto-round-light para velocidade, mais indicado em 4-bit e modelos maiores que 3B.

O AutoRound não elimina a necessidade de benchmark real. Quantização muda o comportamento do modelo, e a perda pode aparecer em raciocínio, código, português, instruções longas ou domínios específicos. Para um modelo que você usa em produção, eu validaria pelo menos:

Também é importante entender que W4A16 quantiza principalmente os pesos, mantendo ativações em 16 bits. Isso reduz muito o tamanho do modelo, mas não resolve sozinho todos os gargalos, por exemplo KV-cache em contextos longos. O paper original deixa claro que o foco experimental era weight-only quantization em camadas lineares dos blocos transformer.

Outro ponto: alguns esquemas novos, como MXFP4/MXINT4/MXFP8, aparecem na documentação como recursos de pesquisa ou sem kernel real em certos casos; então o formato escolhido precisa casar com o runtime que você vai usar.

Minha leitura particular: AutoRound é uma das opções mais interessantes hoje para quantização low-bit de LLMs quando qualidade importa mais do que apenas velocidade de conversão. Para W4A16, eu testaria como alternativa séria a GPTQ/AWQ. Para W2A16, eu priorizaria AutoRound/SignRound, mas sempre com avaliação no seu conjunto de tarefas.

Código fonte: https://github.com/intel/auto-round

Deixe um comentário

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.