Pular para o conteúdo principal

Treinamento LLM

O comando aitraining llm treina modelos de linguagem grandes com suporte para múltiplos trainers e técnicas.

Início Rápido

aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name my-model \
  --trainer sft

Trainers Disponíveis

TrainerDescrição
default / sft / genericFine-tuning supervisionado
dpoOtimização Direta de Preferências
orpoOtimização de Razão de Chances de Preferências
ppoOtimização de Política Proximal
grpoOtimização de Política Relativa de Grupo (ambientes personalizados)
rewardTreinamento de modelo de recompensa
distillationDistilação de conhecimento
generic é um alias para default. Todos os três (default, sft, generic) produzem o mesmo comportamento.
Requisitos do Trainer PPO: PPO requer --rl-reward-model-path (caminho para um modelo de recompensa treinado) ou --model-ref (modelo de referência para divergência KL). Veja Treinamento PPO para documentação completa.
Requisitos do Trainer GRPO: GRPO requer --rl-env-module (caminho do módulo Python) e --rl-env-class (nome da classe) para o ambiente personalizado. Veja Treinamento GRPO para documentação completa.

Grupos de Parâmetros

Os parâmetros são organizados em grupos lógicos:

Parâmetros Básicos

ParameterDescriptionDefault
--modelBase model to fine-tunegoogle/gemma-3-270m
--data-pathPath to training datadata
--project-nameOutput directory nameproject-name
--train-splitTraining data splittrain
--valid-splitValidation data splitNone
Sempre especifique esses parâmetros: Embora --model, --data-path e --project-name tenham padrões, você deve sempre defini-los explicitamente para seu caso de uso. O parâmetro --project-name define a pasta de saída - use um caminho como --project-name ./models/my-experiment para controlar onde o modelo treinado é salvo.

Configuração de Treinamento

ParameterDescriptionDefault
--trainerTraining methoddefault
--epochsNumber of training epochs1
--batch-sizeTraining batch size2
--lrLearning rate3e-5
--mixed-precisionfp16/bf16/NoneNone
--gradient-accumulationAccumulation steps4
--warmup-ratioWarmup ratio0.1
--optimizerOptimizeradamw_torch
--schedulerLR schedulerlinear
--weight-decayWeight decay0.0
--max-grad-normMax gradient norm1.0
--seedRandom seed42

Checkpointing e Avaliação

ParameterDescriptionDefault
--eval-strategyWhen to evaluate (epoch, steps, no)epoch
--save-strategyWhen to save (epoch, steps, no)epoch
--save-stepsSave every N steps (if save-strategy=steps)500
--save-total-limitMax checkpoints to keep1
--logging-stepsLog every N steps (-1 for auto)-1

Performance e Memória

ParameterDescriptionDefault
--auto-find-batch-sizeAutomatically find optimal batch sizeFalse
--disable-gradient-checkpointingDisable memory optimizationFalse
--unslothUse Unsloth for faster training (SFT only, llama/mistral/gemma/qwen2)False
--use-sharegpt-mappingUse Unsloth’s ShareGPT mappingFalse
--use-flash-attention-2Use Flash Attention 2 for faster trainingFalse
--attn-implementationAttention implementation (eager, sdpa, flash_attention_2)None
Requisitos do Unsloth: Unsloth funciona apenas com trainers sft/default e arquiteturas de modelo específicas (llama, mistral, gemma, qwen2). Veja Integração Unsloth para detalhes.

Backend e Distribuição

ParameterDescriptionDefault
--backendWhere to run (local, spaces)local
--distributed-backendDistribution backend (ddp, deepspeed)None
--ddp-timeoutDDP/NCCL timeout in seconds7200
Comportamento Multi-GPU: Com múltiplas GPUs e --distributed-backend não definido, DDP é usado automaticamente. Defina --distributed-backend deepspeed para otimização DeepSpeed Zero-3. O treinamento é iniciado via Accelerate.
Checkpointing DeepSpeed: Ao usar DeepSpeed, o salvamento do modelo usa accelerator.get_state_dict() e desempacota o modelo. O salvamento do adaptador PEFT é tratado de forma diferente sob DeepSpeed.

Parâmetros PEFT/LoRA

ParameterDescriptionDefault
--peftEnable LoRA trainingFalse
--lora-rLoRA rank16
--lora-alphaLoRA alpha32
--lora-dropoutLoRA dropout0.05
--target-modulesModules to targetall-linear
--quantizationint4/int8 quantizationNone
--merge-adapterMerge LoRA after trainingTrue

Processamento de Dados

ParameterDescriptionDefault
--text-columnText column nametext
--block-sizeMax sequence length-1 (model default)
--model-max-lengthMaximum model input lengthAuto-detect from model
--paddingPadding side (left or right)right
--add-eos-tokenAppend EOS tokenTrue
--chat-templateChat template to useAuto by trainer
--packingEnable sequence packing (requires flash attention)None
--auto-convert-datasetAuto-detect and convert dataset formatFalse
--max-samplesLimit dataset size for testingNone
--save-processed-dataSave processed data: auto, local, hub, both, noneauto
Seleção Automática de Template de Chat: Trainers SFT/DPO/ORPO/Reward usam tokenizer (template integrado do modelo) por padrão. Use --chat-template none para treinamento de texto simples.
Salvamento de Dados Processados: Por padrão (auto), dados processados são salvos localmente em {project}/data_processed/. Se o dataset fonte era do Hub, também é enviado como dataset privado. Colunas originais são renomeadas para _original_* para prevenir conflitos.

Exemplos de Treinamento

SFT with LoRA

aitraining llm --train \
  --model meta-llama/Llama-3.2-1B \
  --data-path ./conversations.jsonl \
  --project-name llama-sft \
  --trainer sft \
  --peft \
  --lora-r 16 \
  --lora-alpha 32 \
  --epochs 3 \
  --batch-size 4

Treinamento DPO

Para DPO, você deve especificar os nomes das colunas para prompt, resposta escolhida e resposta rejeitada:
aitraining llm --train \
  --model meta-llama/Llama-3.2-1B \
  --data-path ./preferences.jsonl \
  --project-name llama-dpo \
  --trainer dpo \
  --prompt-text-column prompt \
  --text-column chosen \
  --rejected-text-column rejected \
  --dpo-beta 0.1 \
  --peft \
  --lora-r 16
DPO e ORPO requerem que --prompt-text-column e --rejected-text-column sejam especificados.

Treinamento ORPO

ORPO combina SFT e otimização de preferências:
aitraining llm --train \
  --model google/gemma-2-2b \
  --data-path ./preferences.jsonl \
  --project-name gemma-orpo \
  --trainer orpo \
  --prompt-text-column prompt \
  --text-column chosen \
  --rejected-text-column rejected \
  --peft

Treinamento GRPO

Treine com Group Relative Policy Optimization usando seu próprio ambiente de recompensa:
aitraining llm --train \
  --model deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B \
  --trainer grpo \
  --rl-env-module my_envs.hotel_env \
  --rl-env-class HotelEnv \
  --rl-num-generations 4 \
  --rl-max-new-tokens 256 \
  --peft \
  --lr 1e-5
GRPO gera múltiplas completações por prompt, pontua-as através do seu ambiente (0-1), e otimiza a política. Veja Treinamento GRPO para detalhes da interface do ambiente.

Distilação de Conhecimento

Treine um modelo menor para imitar um maior:
aitraining llm --train \
  --model google/gemma-3-270m \
  --teacher-model google/gemma-2-2b \
  --data-path ./prompts.jsonl \
  --project-name distilled-model \
  --use-distillation \
  --distill-temperature 3.0
Padrões de distilação: --distill-temperature 3.0, --distill-alpha 0.7, --distill-max-teacher-length 512

Logging e Monitoramento

Weights & Biases (Padrão)

O logging W&B com visualizador LEET está habilitado por padrão. O visualizador LEET mostra métricas de treinamento em tempo real diretamente no seu terminal.
# W&B is on by default - just run training
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name my-model
Para desabilitar W&B ou o visualizador:
# Disable W&B logging entirely
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name my-model \
  --log none

# Keep W&B but disable terminal visualizer
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name my-model \
  --no-wandb-visualizer

TensorBoard

aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name my-model \
  --log tensorboard

Push para Hugging Face Hub

Faça upload do seu modelo treinado:
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name my-model \
  --push-to-hub \
  --username your-username \
  --token $HF_TOKEN
O repositório é criado como privado por padrão. Por padrão, o repositório será nomeado {username}/{project-name}.

Nome de Repositório Personalizado ou Organização

Use --repo-id para fazer upload para um repositório específico, útil para:
  • Fazer upload para uma organização em vez da sua conta pessoal
  • Usar um nome de repo diferente do seu project-name local
# Upload para uma organização
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name ./local-training-output \
  --push-to-hub \
  --repo-id my-organization/my-custom-model-name \
  --token $HF_TOKEN

# Upload para conta pessoal com nome diferente
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name ./experiment-v3 \
  --push-to-hub \
  --repo-id your-username/production-model \
  --token $HF_TOKEN
ParâmetroDescriçãoPadrão
--push-to-hubHabilitar upload para o HubFalse
--usernameUsuário HF (para nomeação padrão do repo)None
--tokenToken de API do HFNone
--repo-idID completo do repo (ex: org/model-name){username}/{project-name}
Ao usar --repo-id, você não precisa de --username já que o ID do repo já especifica o destino. No entanto, você ainda precisa de --token para autenticação.

Opções Avançadas

Varreduras de Hiperparâmetros

aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name sweep-experiment \
  --use-sweep \
  --sweep-backend optuna \
  --sweep-n-trials 10

Avaliação Aprimorada

aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name my-model \
  --use-enhanced-eval \
  --eval-metrics "perplexity,bleu"

Ver Todos os Parâmetros

Veja todos os parâmetros para um trainer específico:
aitraining llm --trainer sft --help
aitraining llm --trainer dpo --help

Próximos Passos