GGUF vs AWQ vs GPTQ vs FP8 vs NF4: opções de quantização de LLM
Tradução automática
Este artigo foi traduzido automaticamente a partir da versão original em inglês.
Escolha a quantização de LLM com base no runtime, no hardware e na tarefa que precisa de executar. GGUF empacota os tensores do modelo e os metadados. AWQ e GPTQ reduzem a precisão dos pesos após o treino. FP8 utiliza valores de vírgula flutuante de oito bits. NF4 armazena os pesos em quatro bits e é habitualmente utilizado durante o treino de adaptadores QLoRA. Estes nomes descrevem diferentes partes do processo de carregamento e execução do modelo.
Escolha primeiro o runtime e o hardware. Em seguida, escolha uma representação suportada pelo runtime fixado para a arquitetura exata. Avalie com benchmarks a qualidade nas tarefas, a memória, o tempo até ao primeiro token, o débito e a concorrência antes de aceitar ficheiros de modelo mais pequenos.
Verifique a compatibilidade antes de comparar o tamanho dos ficheiros ou o número de bits.
Tabela de decisão
| Objetivo | Ponto de partida | Verificar antes de utilizar |
|---|---|---|
| Inferência local em CPU, Metal ou llama.cpp portátil | GGUF com uma quantização documentada | Suporte da arquitetura, modelo de conversa, comportamento do contexto, definições de quantização e revisão da origem. |
| Inferência em GPU com quantização calibrada dos pesos | AWQ ou GPTQ | O motor de serving, a GPU, a largura de bits, o tamanho do grupo, os kernels e a arquitetura do modelo. |
| Serving em GPU de centro de dados compatível | FP8 | Capacidade do hardware, implementação no runtime, modo de calibração e qualidade de ponta a ponta. |
| Treino eficiente em parâmetros com pesos congelados de 4 bits | NF4 através de bitsandbytes | Precisão aritmética, memória necessária para o treino e se a implementação usa um adaptador ou pesos fundidos. |
| Protótipo simples com Transformers | bitsandbytes de 8 ou 4 bits | Suporte do backend e se o caminho do protótipo corresponde ao servidor de produção. |
GGUF não especifica uma única quantização
Uma extensão .gguf indica como os tensores e os metadados são empacotados, não a precisão de todos os tensores. Nomes como Q4_K_M identificam receitas de quantização do llama.cpp, e essas receitas podem tratar grupos de tensores de forma diferente. Registe o checkpoint original, a versão do conversor, o comando de quantização e os hashes dos ficheiros. A calibração utiliza dados de entrada representativos para escolher os parâmetros de quantização. Se a conversão tiver utilizado esses dados de entrada, registe também o dataset.
AWQ e GPTQ precisam de um caminho de serving compatível
Os ficheiros de modelo AWQ e GPTQ utilizam normalmente Safetensors, juntamente com definições que descrevem o método de quantização. Um modelo pode ser descarregado com sucesso e, ainda assim, recorrer a um kernel lento ou falhar devido a uma arquitetura não suportada. Consulte a matriz de suporte atual do Transformers, do vLLM ou da versão efetiva do servidor antes de selecionar os ficheiros do modelo.
FP8 e NF4 resolvem problemas diferentes
FP8 é uma opção apelativa quando o acelerador e o conjunto de componentes de serving o implementam de forma eficiente. NF4 é utilizado sobretudo para armazenar pesos de modelo congelados durante o treino de adaptadores pequenos através de fluxos de trabalho do tipo QLoRA. Em bitsandbytes, o dtype de computação define a precisão utilizada na aritmética; pode ser diferente dos pesos armazenados em quatro bits. A quantização aninhada opcional também comprime as constantes utilizadas para representar esses pesos. Nenhuma destas designações garante a mesma qualidade, velocidade ou utilização de memória em diferentes modelos e hardware.
Lista de verificação para avaliação
O armazenamento em quatro bits não significa que todo o processo utilize quatro bits por parâmetro. Os metadados de quantização, os tensores de maior precisão, os buffers temporários e a cache de atenção exigem mais memória. Teste o comprimento dos prompts e os pedidos concorrentes que planeia servir.
- compare o mesmo checkpoint de origem e o mesmo conjunto de prompts
- inclua pedidos com contexto longo e pedidos concorrentes
- meça a conformidade com os esquemas e a correção dos tool calls juntamente com a perplexidade
- registe o pico de memória do dispositivo e do host
- verifique o tempo até ao primeiro token e o débito de geração
- analise subconjuntos de avaliação da qualidade raros ou de elevado custo
- mantenha a licença, a revisão da origem, o conversor, a receita e o hash juntamente com os ficheiros do modelo
Leitura adicional
- Guia de engenharia de LLM: quantização situa estas opções em relação à memória, aos kernels de serving e à seleção de GPU.
- Guia de quantização de modelos aborda algoritmos, calibração, kernels e compromissos de implementação.
- Variantes de LLMs com pesos abertos distingue o papel do checkpoint, a arquitetura, o contentor, a quantização, o runtime e o hardware.
- LLMs locais no macOS aplica estas escolhas ao Apple Silicon.