Quantização
A quantização reduz o uso de memória usando precisão menor para pesos do modelo.
Início Rápido
aitraining llm --train \
--model meta-llama/Llama-3.2-8B \
--data-path ./data.jsonl \
--project-name quantized-model \
--peft \
--quantization int4
Python API
from autotrain.trainers.clm.params import LLMTrainingParams
params = LLMTrainingParams(
model="meta-llama/Llama-3.2-8B",
data_path="./data.jsonl",
project_name="quantized-model",
peft=True,
quantization="int4", # or "int8"
lora_r=16,
)
Opções de Quantização
| Opção | Redução de Memória | Qualidade |
|---|
| None | 0% | Melhor |
| int8 | ~50% | Muito Boa |
| int4 | ~75% | Boa |
Tarefas Suportadas
A quantização está disponível para:
| Tarefa | Classe Params | Notas |
|---|
| LLM | LLMTrainingParams | Suporte completo |
| VLM | VLMTrainingParams | Suporte completo |
| Seq2Seq | Seq2SeqParams | Suporte completo |
4-bit (QLoRA)
Máxima economia de memória:
params = LLMTrainingParams(
...
quantization="int4",
)
8-bit
Melhor qualidade, menos economia:
params = LLMTrainingParams(
...
quantization="int8",
)
Requisitos de Memória
Llama 3.2 8B
| Config | VRAM Necessário |
|---|
| Precisão completa | ~64 GB |
| LoRA (fp16) | ~18 GB |
| LoRA + 8bit | ~12 GB |
| LoRA + 4bit | ~8 GB |
Gemma 2 27B
| Config | VRAM Necessário |
|---|
| Precisão completa | ~108 GB |
| LoRA + 4bit | ~20 GB |
Melhores Práticas
A quantização requer que PEFT/LoRA esteja habilitado:
params = LLMTrainingParams(
...
peft=True, # Required for quantized training
quantization="int4",
)
A quantização só funciona quando peft=True. Sem PEFT habilitado, a configuração de quantização será ignorada.
Ajuste a Taxa de Aprendizado
O treinamento quantizado geralmente se beneficia de uma taxa de aprendizado maior que o padrão (3e-5):
params = LLMTrainingParams(
...
peft=True,
quantization="int4",
lr=2e-4, # Higher LR works well with QLoRA
)
Use Flash Attention
Combine com Flash Attention para velocidade:
params = LLMTrainingParams(
...
quantization="int4",
use_flash_attention_2=True, # Requires Linux + CUDA + flash-attn package
)
Carregue modelos quantizados para inferência:
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
# 4-bit config (matches AITraining defaults)
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=False,
)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-3.2-8B",
quantization_config=bnb_config,
)
A quantização só funciona no Linux. A biblioteca bitsandbytes necessária para quantização int4/int8 está disponível apenas em sistemas Linux.
Nota sobre Apple Silicon (MPS)
A quantização não é compatível com Apple Silicon MPS. Quando você usa quantização em um Mac com M1/M2/M3:
- O treinamento automaticamente volta para CPU
- Você verá uma mensagem de aviso explicando isso
- Para treinamento mais rápido no Mac, pule a quantização e use apenas LoRA
# No Apple Silicon - use LoRA sem quantização para aceleração MPS
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data.jsonl \
--project-name mac-training \
--peft \
--lora-r 16
Variáveis de ambiente para controle manual:
AUTOTRAIN_DISABLE_MPS=1 - Forçar treinamento em CPU
AUTOTRAIN_ENABLE_MPS=1 - Forçar MPS mesmo com quantização (pode travar)
Considerações de Qualidade
A quantização reduz ligeiramente a qualidade. Para aplicações críticas:
- Teste em sua tarefa específica
- Compare com baseline de precisão completa
- Considere 8-bit se qualidade importar mais
Próximos Passos