Treinamento PPO
Treine modelos de linguagem usando Proximal Policy Optimization (PPO) para aprendizado por reforço com feedback humano (RLHF).
Visão Geral
O treinamento PPO é um processo de 2 etapas:
- Treinar um Modelo de Recompensa - Treine um modelo para pontuar respostas (veja Reward Modeling)
- Executar Treinamento PPO - Use o modelo de recompensa para guiar a otimização da política
Início Rápido
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./prompts.jsonl \
--project-name ppo-model \
--trainer ppo \
--rl-reward-model-path ./reward-model
Python API
from autotrain.trainers.clm.params import LLMTrainingParams
from autotrain.project import AutoTrainProject
params = LLMTrainingParams(
model="google/gemma-3-270m",
data_path="./prompts.jsonl",
project_name="ppo-model",
trainer="ppo",
rl_reward_model_path="./reward-model",
# PPO hyperparameters
rl_gamma=0.99,
rl_gae_lambda=0.95,
rl_kl_coef=0.1,
rl_clip_range=0.2,
rl_num_ppo_epochs=4,
epochs=1,
batch_size=4,
lr=1e-5,
)
project = AutoTrainProject(params=params, backend="local", process=True)
project.create()
Requisitos
O treinamento PPO requer --rl-reward-model-path (caminho para um modelo de recompensa treinado) ou --model-ref (modelo de referência para divergência KL). Pelo menos um deve ser especificado.
Parâmetros
Parâmetros Principais do PPO
| Parâmetro | Flag CLI | Padrão | Descrição |
|---|
rl_reward_model_path | --rl-reward-model-path | None | Caminho para modelo de recompensa (obrigatório) |
rl_gamma | --rl-gamma | 0.99 | Fator de desconto (0.9-0.99) |
rl_gae_lambda | --rl-gae-lambda | 0.95 | Lambda GAE para estimativa de vantagem (0.9-0.99) |
rl_kl_coef | --rl-kl-coef | 0.1 | Coeficiente de divergência KL (0.01-0.5) |
rl_value_loss_coef | --rl-value-loss-coef | 1.0 | Coeficiente de perda de valor (0.5-2.0) |
rl_clip_range | --rl-clip-range | 0.2 | Faixa de clipping do PPO (0.1-0.3) |
rl_value_clip_range | --rl-value-clip-range | 0.2 | Faixa de clipping da função de valor |
Parâmetros de Treinamento
| Parâmetro | Flag CLI | Padrão | Descrição |
|---|
rl_num_ppo_epochs | --rl-num-ppo-epochs | 4 | Épocas PPO por batch |
rl_chunk_size | --rl-chunk-size | 128 | Tamanho do chunk de treinamento |
rl_mini_batch_size | --rl-mini-batch-size | 8 | Tamanho do mini-batch |
rl_optimize_device_cache | --rl-optimize-device-cache | True | Otimização de memória |
Parâmetros de Geração
| Parâmetro | Flag CLI | Padrão | Descrição |
|---|
rl_max_new_tokens | --rl-max-new-tokens | 128 | Máximo de tokens a gerar |
rl_top_k | --rl-top-k | 50 | Amostragem top-k |
rl_top_p | --rl-top-p | 1.0 | Amostragem top-p (núcleo) |
rl_temperature | --rl-temperature | 1.0 | Temperatura de geração |
Parâmetros Avançados
| Parâmetro | Flag CLI | Padrão | Descrição |
|---|
rl_reward_fn | --rl-reward-fn | None | Função de recompensa: default, length_penalty, correctness, custom |
rl_multi_objective | --rl-multi-objective | False | Habilitar recompensas multi-objetivo |
rl_reward_weights | --rl-reward-weights | None | Pesos JSON para multi-objetivo |
rl_env_type | --rl-env-type | None | Tipo de ambiente RL |
rl_env_config | --rl-env-config | None | Configuração JSON do ambiente |
O treinamento PPO usa apenas prompts (o modelo gera respostas):
{"text": "What is machine learning?"}
{"text": "Explain quantum computing."}
{"text": "Write a haiku about coding."}
Tipos de Ambiente RL
Três tipos de ambiente estão disponíveis:
| Ambiente | Descrição |
|---|
text_generation | Geração de texto padrão com pontuação de recompensa |
multi_objective | Múltiplos componentes de recompensa combinados |
preference_comparison | Comparar respostas geradas |
Recompensas Multi-Objetivo
Habilitar múltiplos sinais de recompensa:
params = LLMTrainingParams(
...
trainer="ppo",
rl_multi_objective=True,
rl_env_type="multi_objective",
rl_reward_weights='{"correctness": 1.0, "formatting": 0.1}',
)
Exemplo: Pipeline RLHF Completo
Etapa 1: Treinar Modelo de Recompensa
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./preferences.jsonl \
--project-name reward-model \
--trainer reward \
--prompt-text-column prompt \
--text-column chosen \
--rejected-text-column rejected
Etapa 2: Executar Treinamento PPO
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./prompts.jsonl \
--project-name ppo-model \
--trainer ppo \
--rl-reward-model-path ./reward-model \
--rl-kl-coef 0.1 \
--rl-clip-range 0.2
Melhores Práticas
- Comece com um bom modelo base - Faça fine-tuning com SFT antes do PPO
- Use um modelo de recompensa bem treinado - A qualidade das recompensas determina o sucesso do PPO
- Monitore a divergência KL - Muito alta significa que o modelo está divergindo demais do original
- Comece com hiperparâmetros padrão - Ajuste com base na dinâmica do treinamento
- Use taxas de aprendizado pequenas - PPO é sensível à taxa de aprendizado (1e-5 a 5e-6)
Próximos Passos