Transformers documentation
Escolha um método
Escolha um método
Se o seu checkpoint já estiver quantizado, o checkpoint determina o método. Carregue-o conforme mostrado em Carregar um checkpoint pré-quantizado. Caso contrário, escolha um método com base no seu hardware e no que você precisa fazer com o modelo após carregá-lo.
Comece pelo seu objetivo
Cada linha recomenda um primeiro método para tentar. Consulte a tabela de comparação completa antes de se comprometer com um.
| Objetivo | Comece com | Por quê |
|---|---|---|
| Treine um modelo com menos memória e a configuração mínima | bitsandbytes | Quantiza para 4 ou 8 bits durante o carregamento, sem calibração, executa em CUDA, XPU, HPU e CPU, e suporta salvamento e ajuste fino. |
| Ajuste fino com QLoRA | bitsandbytes | Suporta 4-bit NF4 com PEFT. HQQ, EETQ, GPTQ, SINQ e Quanto também suportam fine-tuning. |
Acelere a inferência com torch.compile | torchao | generate compila modelos torchao automaticamente com um cache estático, e o torchao possui esquemas int4, int8 e FP8 para CUDA, XPU e CPU. |
| Obtenha a melhor precisão de 4 bits | GPTQ | Calibra em um conjunto de dados durante o carregamento. Para usar AWQ ou AutoRound em vez disso, quantize com as respectivas bibliotecas e carregue o checkpoint. |
| Execute FP8 em Ada, Hopper ou Intel XPU | FP8 de granularidade fina | Exige capacidade de computação CUDA 8.9 ou superior, ou um XPU. FBGEMM FP8 exige capacidade de computação 9.0 ou superior, ou um XPU. |
| Executar FP4 no Blackwell | NVFP4 | Quantiza para o formato de ponto flutuante de 4 bits da NVIDIA durante o carregamento. MXFP4 é executado em capacidade de computação 7.5 ou superior, XPU e CPU. |
| Executar em Apple silicon | Metal | Quantiza para 2, 4 ou 8 bits no MPS durante o carregamento. Arquivos GGUF também são carregados no MPS. |
| Carregar checkpoints criados com llm-compressor | compressed-tensors | Carrega checkpoints FP8, int4 e int8 no formato compressed-tensors. |
| Comprimir abaixo de 4 bits | HQQ ou SINQ | Quantize para 2 ou 3 bits durante o carregamento, sem calibração. Os checkpoints de AQLM, VPTQ e SpQR alcançam valores ainda menores, mas precisam ser quantizados com suas próprias bibliotecas. |
Show the full comparison table
| Método | quant_method | Fluxo de trabalho | Bits | Hardware | Salvar | Ajuste fino | Compilação automática |
|---|---|---|---|---|---|---|---|
| AQLM | aqlm | Somente pré-quantizado | 1–2 | CUDA, CPU | ✅ | ✅ com aqlm>=1.0.2 | ❌ |
| AutoRound | auto-round | Somente pré-quantizado | 2–8 | CUDA, XPU, CPU | ✅ | ❌ | ❌ |
| AWQ | awq | Somente pré-quantizado | 4 | CUDA, ROCm, XPU, CPU | ✅ exceto os backends ExLlama | ✅ com gptqmodel>=5.0.0 | ❌ |
| BitNet | bitnet | Somente pré-quantizado | 1.58 | CUDA | ✅ | Apenas autobitlinear no modo online | ❌ |
| bitsandbytes | bitsandbytes | Durante o carregamento | 4, 8 | CUDA, XPU, HPU, CPU | ✅ | ✅ | ❌ |
| compressed-tensors | compressed-tensors | Somente pré-quantizado | Definido por checkpoint | CUDA, XPU, MPS, CPU | ✅ | ✅ exceto com kernels FP8 | ✅ |
| EETQ | eetq | Durante o carregamento | 8 | CUDA | ✅ | ✅ | ❌ |
| FBGEMM FP8 | fbgemm_fp8 | Durante o carregamento | 8 | CUDA (capacidade de computação 9.0+), XPU | ✅ | ❌ | ❌ |
| FP8 de granularidade fina | fp8, mxfp8 | Durante o carregamento | 8 | CUDA (capacidade de computação 8.9+), XPU | ✅ | ❌ | ✅ |
| Quatro sobre seis | fouroversix | Durante o carregamento | 4 | CUDA (mais rápido no Blackwell), CPU | ✅ | Somente com keep_master_weights=True | ❌ |
| FP-Quant | fp_quant | Durante o carregamento | 4 | CUDA, XPU | ✅ | Somente com store_master_weights=True | ❌ |
| GGUF | gguf | Somente pré-quantizado | 1–8 | CUDA, MPS, XPU, CPU | ❌ | ❌ | ✅ |
| GPTQ | gptq | Durante o carregamento, com calibração | 2, 3, 4, 8 | CUDA, ROCm, XPU, CPU | ✅ | ✅ | ❌ |
| HIGGS | higgs | Durante o carregamento | 2, 3, 4 | CUDA | ✅ | ❌ | ❌ |
| HQQ | hqq | Durante o carregamento | 1, 2, 3, 4, 8 | CUDA, XPU | ✅ | ✅ | ❌ |
| Metal | metal | Durante o carregamento | 2, 4, 8 | MPS | ✅ | ❌ | ❌ |
| MXFP4 | mxfp4 | Durante o carregamento | 4 | CUDA (capacidade de computação 7.5+), XPU, CPU | ✅ | ❌ | ❌ |
| NVFP4 | nvfp4 | Durante o carregamento | 4 | Uma GPU Blackwell | ❌ | ❌ | ✅ |
| Quanto | quanto | Durante o carregamento | 2, 4, 8 | CUDA, MPS, XPU, CPU | ❌ | ✅ | ❌ |
| Quark | quark | Somente pré-quantizado | Definido por checkpoint | CUDA, ROCm, CPU | ❌ | ❌ | ❌ |
| SINQ | sinq | Durante o carregamento | 2, 3, 4, 6, 8 | Uma GPU CUDA, CPU | ✅ | ✅ | ❌ |
| SpQR | spqr | Somente pré-quantizado | 3 | CUDA | ✅ | ❌ | ❌ |
| torchao | torchao | Durante o carregamento | 4, 8 | CUDA, XPU, CPU | ✅ | Somente esquemas de 8 bits | ✅ |
| VPTQ | vptq | Somente pré-quantizado | 1–8 | CUDA | ✅ | ❌ | ❌ |
Verifique a memória com o seletor de quantização
O seletor de quantização estima se um modelo cabe no seu hardware em cada precisão, incluindo o cache de KV. Escolha um modelo, o seu hardware e o que você precisa que o método faça, e a visão Comparar lista os métodos que correspondem.
Benchmarks
Os benchmarks abaixo comparam vários métodos em Llama 3.1 8B e 70B. Eles relatam a precisão, o throughput em tokens por segundo, a memória de pico em GB e o tempo de quantização.
O Llama 3.1 70B em bf16 foi executado em 2 GPUs NVIDIA A100 80GB. Os métodos FP8 foram executados em 1 GPU NVIDIA H100 80GB, e todos os outros métodos foram executados em 1 GPU NVIDIA A100 80GB. O throughput foi medido com batch size 1, gerando 64 tokens. Os resultados incluem torch.compile e kernels Marlin quando um método os suporta.
Os resultados se agrupam em três faixas de bits.
| Bits | Métodos benchmarked | Memória vs. bf16 | Precisão |
|---|---|---|---|
| 8 | bitsandbytes int8, HQQ, Quanto, torchao, FP8 | Aproximadamente 2x menor | Muito próximo de bf16 |
| 4 | AWQ, GPTQ, HQQ, bitsandbytes NF4, SINQ | Aproximadamente 4x menor | Alto. AWQ e GPTQ frequentemente lideram, mas exigem calibração. |
| Abaixo de 4 | VPTQ, AQLM, 2-bit GPTQ | Mais de 4x menor | Queda perceptível, especialmente em 2 bits. AQLM e VPTQ levam muito tempo para quantizar. |
Update on GitHubMeça a precisão e a velocidade em sua própria tarefa e hardware antes de escolher um método para produção.