Saltar al contenido principal

Entrenamiento GRPO

Entrena modelos de lenguaje usando Group Relative Policy Optimization (GRPO) con entornos de recompensa personalizados. En lugar de un modelo de recompensa, proporcionas un módulo Python con una clase de entorno que ejecuta episodios multi-turno y retorna puntuaciones.

Visión General

GRPO se diferencia de PPO de una manera clave:
  • PPO requiere un modelo de recompensa pre-entrenado para puntuar respuestas
  • GRPO usa un entorno personalizado que tú escribes — genera múltiples completaciones por prompt, las puntúa mediante tu entorno, y optimiza la política relativa al grupo
Esto hace que GRPO sea ideal para entrenamiento agéntico donde las recompensas provienen de la ejecución de tareas (uso de herramientas, ejecución de código, interacciones multi-turno) en lugar de un modelo de recompensa estático.

Inicio Rápido

Python API

Interfaz del Entorno

Implementas una clase Python con 3 métodos:

Entorno con Configuración

Pasa configuración JSON a tu entorno mediante --rl-env-config:
El JSON se parsea y se pasa como **kwargs al constructor de tu entorno:

Requisitos

El entrenamiento GRPO requiere que se especifiquen tanto --rl-env-module como --rl-env-class. Se validan al inicio — si falta alguno, el entrenamiento fallará con un mensaje de error claro.
GRPO usa GRPOTrainer de TRL (requiere TRL >= 0.28.0). El lado de padding del tokenizador se establece automáticamente a left como requiere GRPO.

Parámetros

Parámetros Específicos de GRPO

Parámetros RL Compartidos (PPO + GRPO)

Aceleración con vLLM

Usa vLLM para generación de completaciones significativamente más rápida durante el entrenamiento GRPO:
Dos modos disponibles:
  • colocate (predeterminado) — vLLM comparte la GPU con el entrenamiento. Ajusta --vllm-gpu-memory-utilization (predeterminado 0.3) para controlar la división de memoria.
  • server — vLLM se ejecuta en GPUs dedicadas. Los procesos de entrenamiento se reducen automáticamente por --vllm-server-gpus.
vLLM requiere instalación separada: pip install aitraining[vllm] (requiere vllm>=0.14.0).
GRPO no requiere --data-path — el dataset es construido por el método build_dataset() de tu entorno.

Cómo Funciona

  1. Carga del entorno — Tu módulo se importa vía importlib.import_module(), la clase se instancia con config opcional
  2. Construcción del datasetenv.build_dataset(tokenizer) retorna prompts
  3. Modelo genera — GRPO genera rl_num_generations completaciones por prompt
  4. Entorno puntúaenv.score_episode() se llama para cada completación, retornando 0.0-1.0
  5. GRPO optimiza — La política se actualiza relativa a las puntuaciones del grupo (mejores completaciones reciben mayor peso)

GRPO vs PPO

Mejores Prácticas

  1. Comienza con entornos simples — Valida que la puntuación funcione antes de lógica multi-turno compleja
  2. Usa rl_num_generations pequeño — Comienza con 4, aumenta si necesitas más diversidad
  3. Puntúa entre 0 y 1 — Usa el rango completo; evita retornar siempre 0 o 1
  4. Prueba tu entorno independientemente — Asegúrate de que build_dataset() y score_episode() funcionen antes de entrenar
  5. Usa LoRA — GRPO con fine-tuning completo requiere memoria significativa; LoRA lo hace práctico
  6. Tasas de aprendizaje pequeñas — Comienza con 1e-5, misma guía que PPO

Próximos Pasos

Entrenamiento PPO

RLHF con modelos de recompensa

Módulo RL

Bloques de construcción RL de bajo nivel

Entrenamiento DPO

Alternativa más simple con datos de preferencia

LoRA/PEFT

Fine-tuning eficiente