本文へ移動
cccskills
無料GitHub で公開

verl-rl-training

Fornece orientação para treinar LLMs com aprendizado por reforço usando verl (Volcano Engine RL). Use ao implementar RLHF, GRPO, PPO ou outros algoritmos de RL para pós-treinamento de LLMs em escala com backends de infraestrutura flexíveis.

インストール方法を見る

含まれるファイル(3)

  • SKILL.md10.7 KB
  • references/api-reference.md6.8 KB
  • references/troubleshooting.md6.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

verl: Volcano Engine Reinforcement Learning para LLMs

verl é uma biblioteca de treinamento RL flexível, eficiente e pronta para produção para modelos de linguagem grandes do time Seed da ByteDance. Implementa o framework HybridFlow (EuroSys 2025) e capacita modelos como Doubao-1.5-pro alcançando desempenho nível O1 em benchmarks de matemática.

Quando Usar verl

Escolha verl quando você precisa de:

  • Treinamento RL pronto para produção em escala (testado até 671B parâmetros)
  • Flexibilidade para trocar backends (FSDP ↔ Megatron-LM ↔ vLLM ↔ SGLang)
  • Suporte para múltiplos algoritmos de RL (PPO, GRPO, RLOO, REINFORCE++, DAPO)
  • Rollout multi-turno com chamada de ferramentas para workflows agentic
  • Treinamento RL para modelos de visão-linguagem

Considere alternativas quando:

  • Você precisa de treinamento nativo Megatron → use slime ou miles
  • Você quer abstrações nativas do PyTorch com Monarch → use torchforge
  • Você só precisa de SFT/DPO simples → use TRL ou Axolotl

Recursos Principais

  • Backends de treinamento: FSDP, FSDP2, Megatron-LM
  • Engines de rollout: vLLM, SGLang, HuggingFace Transformers
  • Algoritmos: PPO, GRPO, DAPO, RLOO, ReMax, REINFORCE++, SPIN, SPPO
  • Modelos: Qwen-3, Llama-3.1, DeepSeek, Gemma-2 (0.5B a 671B)
  • Avançado: LoRA RL, sequence parallelism, expert parallelism, ferramentas multi-turno

Instalação

# Opção 1: pip install
pip install verl[vllm]  # ou verl[sglang] para backend SGLang

# Opção 2: Docker (recomendado para produção)
docker pull verlai/verl:vllm011.latest

# Opção 3: Do código-fonte
git clone https://github.com/volcengine/verl.git
cd verl && pip install -e .[vllm,math]

Início Rápido: Treinamento GRPO

python3 -m verl.trainer.main_ppo \
    algorithm.adv_estimator=grpo \
    data.train_files=~/data/gsm8k/train.parquet \
    actor_rollout_ref.model.path=Qwen/Qwen2.5-7B \
    actor_rollout_ref.rollout.n=8 \
    actor_rollout_ref.actor.use_kl_loss=True \
    trainer.n_gpus_per_node=8

Arquitetura Principal

verl usa um modelo de programação HybridFlow separando fluxo de controle de computação:

┌─────────────────────────────────────────────────────────┐
│ Controlador de Processo Único (Ray)                     │
│ - Orquestra: rollout → reward → train → sync            │
└─────────────────────┬───────────────────────────────────┘
                      │
┌─────────────────────▼───────────────────────────────────┐
│ Workers Multi-Processo                                  │
│ ├── ActorRolloutRefWorker (policy + generation)        │
│ ├── CriticWorker (value estimation, PPO only)          │
│ └── RewardManager (model-based or rule-based rewards)  │
└─────────────────────────────────────────────────────────┘

Workflow 1: Raciocínio Matemático com GRPO

Use este workflow para treinar modelos de raciocínio em tarefas matemáticas como GSM8K ou MATH.

Checklist de Pré-requisitos

  • Cluster de GPU com 8+ GPUs (H100 recomendado)
  • Dataset em formato parquet com colunas prompt e reward_model
  • Modelo base do HuggingFace Hub

Passo 1: Preparar Dataset

import pandas as pd

data = [
    {
        "prompt": [{"role": "user", "content": "Quanto é 15 + 27?"}],
        "reward_model": {"ground_truth": "42"}
    },
    # ... mais exemplos
]
df = pd.DataFrame(data)
df.to_parquet("train.parquet")

Passo 2: Definir Função de Recompensa

# reward_function.py
import re

def compute_reward(responses, ground_truths):
    rewards = []
    for response, gt in zip(responses, ground_truths):
        # Extrai resposta da resposta gerada
        match = re.search(r'\\boxed{([^}]+)}', response)
        if match and match.group(1).strip() == gt.strip():
            rewards.append(1.0)
        else:
            rewards.append(0.0)
    return rewards

Passo 3: Criar Configuração de Treinamento

# config/grpo_math.yaml
algorithm:
  adv_estimator: grpo
  gamma: 1.0
  lam: 1.0

data:
  train_files: /path/to/train.parquet
  val_files: /path/to/val.parquet
  train_batch_size: 256
  max_prompt_length: 512
  max_response_length: 2048

actor_rollout_ref:
  model:
    path: Qwen/Qwen2.5-7B-Instruct
  actor:
    use_kl_loss: true
    kl_loss_coef: 0.001
    ppo_mini_batch_size: 64
  rollout:
    name: vllm
    n: 8  # amostras por prompt
    temperature: 0.7
    top_p: 0.95

trainer:
  total_epochs: 3
  n_gpus_per_node: 8
  save_freq: 100

Passo 4: Iniciar Treinamento

python3 -m verl.trainer.main_ppo \
    --config-path config \
    --config-name grpo_math \
    trainer.experiment_name=grpo_math_qwen7b

Passo 5: Monitorar e Validar

  • Verificar WandB/TensorBoard para curvas de loss
  • Verificar se a recompensa está aumentando ao longo dos passos
  • Executar avaliação no conjunto de testes separado

Workflow 2: PPO com Modelo Critic

Use este workflow quando você precisa de estimação de vantagem baseada em valor (GAE).

Diferenças-Chave em relação ao GRPO

  • Requer modelo critic separado
  • Usa Generalized Advantage Estimation (GAE)
  • Melhor para tarefas com recompensas densas

Configuração

algorithm:
  adv_estimator: gae  # Use GAE em vez de GRPO
  gamma: 0.99
  lam: 0.95

critic:
  model:
    path: Qwen/Qwen2.5-7B-Instruct  # Pode ser igual ou diferente do actor
  ppo_mini_batch_size: 64

actor_rollout_ref:
  actor:
    use_kl_loss: true
    kl_loss_coef: 0.02
    clip_ratio: 0.2  # Clipping do PPO

Iniciar com Critic

python3 -m verl.trainer.main_ppo \
    algorithm.adv_estimator=gae \
    critic.model.path=Qwen/Qwen2.5-7B-Instruct \
    trainer.n_gpus_per_node=8

Workflow 3: Treinamento em Larga Escala com Megatron

Use este workflow para modelos >70B parâmetros ou quando você precisa de expert parallelism.

Pré-requisitos

  • Instalar bridge Megatron-LM: pip install mbridge
  • Converter modelo para formato Megatron
  • Cluster multi-nó com NVLink/InfiniBand

Configuração para Modelos 70B+

actor_rollout_ref:
  model:
    path: /path/to/megatron/checkpoint
    backend: megatron
  actor:
    strategy: megatron
    tensor_model_parallel_size: 8
    pipeline_model_parallel_size: 2
  rollout:
    name: vllm
    tensor_parallel_size: 8

Iniciar Multi-Nó

# No nó head
ray start --head --port=6379

# Nos nós workers
ray start --address='head_ip:6379'

# Iniciar treinamento
python3 -m verl.trainer.main_ppo \
    trainer.nnodes=4 \
    trainer.n_gpus_per_node=8

Referência de Configuração

Seleção de Algoritmo

Algoritmoadv_estimatorCaso de Uso
GRPOgrpoSem critic, matemática/raciocínio
PPO/GAEgaeRecompensas densas, estimação de valor
REINFORCE++reinforce_plus_plusRedução de variância
RLOOrlooBaseline leave-one-out
ReMaxremaxBaseline de recompensa máxima
OPOopoOtimização de política ótima

Parâmetros-Chave

# Parâmetros de rollout
actor_rollout_ref.rollout.n: 8              # Amostras por prompt
actor_rollout_ref.rollout.temperature: 0.7  # Temperatura de amostragem
actor_rollout_ref.rollout.top_p: 0.95       # Amostragem nucleus

# Parâmetros de treinamento
actor_rollout_ref.actor.lr: 1e-6            # Taxa de aprendizado
actor_rollout_ref.actor.ppo_mini_batch_size: 64
actor_rollout_ref.actor.clip_ratio: 0.2     # Intervalo de clip do PPO

# Controle KL
actor_rollout_ref.actor.use_kl_loss: true
actor_rollout_ref.actor.kl_loss_coef: 0.001
algorithm.kl_ctrl.target_kl: 0.1            # Para controle KL adaptativo

Problemas Comuns e Soluções

Problema: OOM Durante Rollout

Sintomas: CUDA fora de memória durante fase de geração

Soluções:

# Reduzir tamanho de batch
actor_rollout_ref.rollout.log_prob_micro_batch_size: 4

# Ativar gradient checkpointing
actor_rollout_ref.model.enable_gradient_checkpointing: true

# Usar FSDP2 com offloading para CPU
actor_rollout_ref.actor.strategy: fsdp2
actor_rollout_ref.actor.fsdp_config.offload_policy: true

Problema: Instabilidade no Treinamento

Sintomas: Picos de loss, colapso de recompensa

Soluções:

# Reduzir taxa de aprendizado
actor_rollout_ref.actor.lr: 5e-7

# Aumentar penalidade KL
actor_rollout_ref.actor.kl_loss_coef: 0.01

# Ativar clipping de gradiente
actor_rollout_ref.actor.max_grad_norm: 1.0

Problema: Sincronização de Peso Lenta

Sintomas: Pausas longas entre rollout e treinamento

Soluções:

# Usar FSDP2 para resharding mais rápido
actor_rollout_ref.actor.strategy=fsdp2

# Ativar transferência assíncrona de peso
trainer.async_weight_update=true

Problema: Incompatibilidade de Versão vLLM

Sintomas: Erros de import ou falhas na geração

Solução: Use versões compatíveis:

pip install vllm>=0.8.5,<=0.12.0
# Evite vLLM 0.7.x (bugs conhecidos)

Tópicos Avançados

Chamada de Ferramentas Multi-Turno

Veja references/multi-turn.md para workflows agentic com uso de ferramentas.

Modelos de Visão-Linguagem

actor_rollout_ref:
  model:
    path: Qwen/Qwen2.5-VL-7B-Instruct
  rollout:
    name: vllm
    enable_vision: true

Treinamento LoRA

actor_rollout_ref:
  actor:
    lora:
      enabled: true
      r: 16
      alpha: 32
      target_modules: ["q_proj", "v_proj"]

Recursos

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Especialista em construir experiências 3D para a web - Three.js, React Three Fiber, Spline, WebGL e cenas 3D interativas. Cobre configuradores de produtos, portfólios 3D, websites imersivos e adição de profundidade às experiências web. Use quando: website 3D, three.js, WebGL, react three fiber, experiência 3D.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Quando o usuário quer planejar, projetar ou implementar um teste A/B ou experimento. Também use quando o usuário menciona "teste A/B", "split test", "experimento", "testar essa mudança", "copy variante", "teste multivariado" ou "hipótese". Para implementação de rastreamento, veja analytics-tracking.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Auditar e melhorar a acessibilidade web seguindo as diretrizes WCAG 2.1. Use quando solicitado para "melhorar acessibilidade", "auditoria a11y", "conformidade WCAG", "suporte a leitor de tela", "navegação por teclado" ou "tornar acessível".

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Testes e benchmarking de agentes LLM incluindo testes comportamentais, avaliação de capacidades, métricas de confiabilidade e monitoramento em produção—onde até os melhores agentes alcançam menos de 50% em benchmarks do mundo real. Use quando: testes de agentes, avaliação de agentes, benchmark de agentes, confiabilidade de agentes, teste de agentes.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Criar, gerenciar e orquestrar agentes de IA usando o CLI AI Maestro. Use quando o usuário pedir para "criar agente", "listar agentes", "deletar agente", "hibernar agente", "despertar agente", "instalar plugin", "mostrar agente", "reiniciar agente" ou qualquer tarefa de gerenciamento do ciclo de vida do agente.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

Gerencie múltiplos agentes CLI locais via sessões tmux (iniciar/parar/monitorar/atribuir) com agendamento compatível com cron.

日本語の概要は準備中です。原文の説明を表示しています。

artubss/SKILLS-CLAUDE-CODE112026年5月17日 更新

artubss のスキルをすべて見る

このスキルの問題を報告する