Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs.monostate.ai/llms.txt

Use this file to discover all available pages before exploring further.

Entrenamiento PPO

Entrena modelos de lenguaje usando Proximal Policy Optimization (PPO) para aprendizaje por refuerzo con retroalimentación humana (RLHF).
También disponible: RL explicado en Portugués

Visión General

El entrenamiento PPO es un proceso de 2 pasos:
  1. Entrenar un Modelo de Recompensa - Entrena un modelo para puntuar respuestas (ver Reward Modeling)
  2. Ejecutar Entrenamiento PPO - Usa el modelo de recompensa para guiar la optimización de la política

Inicio 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

El entrenamiento PPO requiere --rl-reward-model-path (ruta a un modelo de recompensa entrenado) o --model-ref (modelo de referencia para divergencia KL). Al menos uno debe ser especificado.

Parámetros

Parámetros Principales de PPO

ParámetroFlag CLIPor DefectoDescripción
rl_reward_model_path--rl-reward-model-pathNoneRuta al modelo de recompensa (requerido)
rl_gamma--rl-gamma0.99Factor de descuento (0.9-0.99)
rl_gae_lambda--rl-gae-lambda0.95Lambda GAE para estimación de ventaja (0.9-0.99)
rl_kl_coef--rl-kl-coef0.1Coeficiente de divergencia KL (0.01-0.5)
rl_value_loss_coef--rl-value-loss-coef1.0Coeficiente de pérdida de valor (0.5-2.0)
rl_clip_range--rl-clip-range0.2Rango de recorte PPO (0.1-0.3)
rl_value_clip_range--rl-value-clip-range0.2Rango de recorte de función de valor

Parámetros de Entrenamiento

ParámetroFlag CLIPor DefectoDescripción
rl_num_ppo_epochs--rl-num-ppo-epochs4Épocas PPO por batch
rl_chunk_size--rl-chunk-size128Tamaño de chunk de entrenamiento
rl_mini_batch_size--rl-mini-batch-size8Tamaño de mini-batch
rl_optimize_device_cache--rl-optimize-device-cacheTrueOptimización de memoria

Parámetros de Generación

ParámetroFlag CLIPor DefectoDescripción
rl_max_new_tokens--rl-max-new-tokens128Máximo de tokens a generar
rl_top_k--rl-top-k50Muestreo top-k
rl_top_p--rl-top-p1.0Muestreo top-p (núcleo)
rl_temperature--rl-temperature1.0Temperatura de generación

Parámetros Avanzados

ParámetroFlag CLIPor DefectoDescripción
rl_reward_fn--rl-reward-fnNoneFunción de recompensa: default, length_penalty, correctness, custom
rl_multi_objective--rl-multi-objectiveFalseHabilitar recompensas multi-objetivo
rl_reward_weights--rl-reward-weightsNonePesos JSON para multi-objetivo
rl_env_type--rl-env-typeNoneTipo de entorno RL
rl_env_config--rl-env-configNoneConfiguración JSON del entorno

Formato de Datos

El entrenamiento PPO usa solo prompts (el modelo genera respuestas):
{"text": "What is machine learning?"}
{"text": "Explain quantum computing."}
{"text": "Write a haiku about coding."}

Tipos de Entorno RL

Tres tipos de entorno están disponibles:
EntornoDescripción
text_generationGeneración de texto estándar con puntuación de recompensa
multi_objectiveMúltiples componentes de recompensa combinados
preference_comparisonComparar respuestas generadas

Recompensas Multi-Objetivo

Habilitar múltiples señales de recompensa:
params = LLMTrainingParams(
    ...
    trainer="ppo",
    rl_multi_objective=True,
    rl_env_type="multi_objective",
    rl_reward_weights='{"correctness": 1.0, "formatting": 0.1}',
)

Ejemplo: Pipeline RLHF Completo

Paso 1: Entrenar 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

Paso 2: Ejecutar Entrenamiento 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

Mejores Prácticas

  1. Comienza con un buen modelo base - Haz fine-tuning con SFT antes de PPO
  2. Usa un modelo de recompensa bien entrenado - La calidad de las recompensas determina el éxito de PPO
  3. Monitorea la divergencia KL - Demasiado alta significa que el modelo está divergiendo demasiado del original
  4. Comienza con hiperparámetros por defecto - Ajusta según la dinámica del entrenamiento
  5. Usa tasas de aprendizaje pequeñas - PPO es sensible a la tasa de aprendizaje (1e-5 a 5e-6)

Próximos Pasos

Reward Modeling

Entrenar modelos de recompensa

DPO Training

Alternativa más simple a PPO

Entrenamiento GRPO

RL con entornos personalizados

Módulo RL

Bloques de construcción RL