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
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.

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
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 length2048
--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
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.

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

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. O repositório será nomeado {username}/{project-name}.

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