Pular para o conteúdo principal

Treinamento GRPO

Treine modelos de linguagem usando Group Relative Policy Optimization (GRPO) com ambientes de recompensa personalizados. Em vez de um modelo de recompensa, você fornece um módulo Python com uma classe de ambiente que executa episódios multi-turno e retorna pontuações.

Visão Geral

GRPO se diferencia do PPO de uma forma importante:
  • PPO requer um modelo de recompensa pré-treinado para pontuar respostas
  • GRPO usa um ambiente personalizado que você escreve — ele gera múltiplas completações por prompt, pontua-as através do seu ambiente, e otimiza a política relativa ao grupo
Isso torna o GRPO ideal para treinamento agêntico onde as recompensas vêm da execução de tarefas (uso de ferramentas, execução de código, interações multi-turno) em vez de um modelo de recompensa estático.

Início Rápido

Python API

Interface do Ambiente

Você implementa uma classe Python com 3 métodos:

Ambiente com Configuração

Passe configuração JSON para seu ambiente via --rl-env-config:
O JSON é parseado e passado como **kwargs para o construtor do seu ambiente:

Requisitos

O treinamento GRPO requer que --rl-env-module e --rl-env-class sejam especificados. Eles são validados na inicialização — se qualquer um estiver faltando, o treinamento falhará com uma mensagem de erro clara.
GRPO usa o GRPOTrainer do TRL (requer TRL >= 0.28.0). O lado de padding do tokenizador é automaticamente definido como left, conforme exigido pelo GRPO.

Parâmetros

Parâmetros Específicos do GRPO

Parâmetros RL Compartilhados (PPO + GRPO)

Aceleração com vLLM

Use vLLM para geração de completações significativamente mais rápida durante o treinamento GRPO:
Dois modos disponíveis:
  • colocate (padrão) — vLLM compartilha a GPU com o treinamento. Ajuste --vllm-gpu-memory-utilization (padrão 0.3) para controlar a divisão de memória.
  • server — vLLM roda em GPUs dedicadas. Os processos de treinamento são automaticamente reduzidos por --vllm-server-gpus.
vLLM requer instalação separada: pip install aitraining[vllm] (requer vllm>=0.14.0).
GRPO não requer --data-path — o dataset é construído pelo método build_dataset() do seu ambiente.

Como Funciona

  1. Ambiente carrega — Seu módulo é importado via importlib.import_module(), classe instanciada com config opcional
  2. Dataset construídoenv.build_dataset(tokenizer) retorna prompts
  3. Modelo gera — GRPO gera rl_num_generations completações por prompt
  4. Ambiente pontuaenv.score_episode() é chamado para cada completação, retornando 0.0-1.0
  5. GRPO otimiza — A política é atualizada relativa às pontuações do grupo (melhores completações recebem maior peso)

GRPO vs PPO

Melhores Práticas

  1. Comece com ambientes simples — Valide que a pontuação funciona antes de lógica multi-turno complexa
  2. Use rl_num_generations pequeno — Comece com 4, aumente se precisar de mais diversidade
  3. Pontue entre 0 e 1 — Use o intervalo completo; evite sempre retornar 0 ou 1
  4. Teste seu ambiente independentemente — Certifique-se de que build_dataset() e score_episode() funcionam antes de treinar
  5. Use LoRA — GRPO com fine-tuning completo requer memória significativa; LoRA torna prático
  6. Taxas de aprendizado pequenas — Comece com 1e-5, mesma orientação do PPO

Próximos Passos

Treinamento PPO

RLHF com modelos de recompensa

Módulo RL

Blocos de construção RL de baixo nível

Treinamento DPO

Alternativa mais simples com dados de preferência

LoRA/PEFT

Fine-tuning eficiente