Pular para o conteúdo

verl - Volcano Engine RL para LLMs - Folha de Dicas

verl - Volcano Engine RL para LLMs - Folha de Dicas

verl (Volcano Engine Reinforcement Learning) é um framework de código aberto e alto desempenho para pós-treinamento de aprendizado por reforço de grandes modelos de linguagem. É a implementação pública do artigo HybridFlow, construído em torno de um modelo de programação com controlador híbrido que permite expressar fluxos de dados RL complexos — PPO, GRPO e outros — em poucas linhas enquanto desacopla computação de dependências de dados. Integra-se com FSDP, Megatron-LM, vLLM e SGLang, e é um dos frameworks de RL mais amplamente utilizados para LLMs.

O pós-treinamento de RL é computacionalmente intensivo e sensível à configuração. Valide uma recompensa e um pequeno teste antes de escalar para multi-nó.

Instalação

MétodoComando
pippip install verl
A partir do código-fontegit clone https://github.com/volcengine/verl && cd verl && pip install -e .
Dockeruse as imagens oficiais referenciadas na documentação (CUDA + vLLM pré-instalado)
RequisitosGPUs NVIDIA, CUDA, PyTorch; vLLM ou SGLang para rollout

Conceitos Principais

TermoSignificado
HybridFlowO modelo do controlador: um único controlador orquestra workers distribuídos
RolloutFase de geração que produz amostras (servida por vLLM/SGLang)
Actor / CriticA política sendo treinada e (para PPO) o modelo de valor
RecompensaSinal escalar; de um modelo de recompensa ou uma função personalizada
PosicionamentoComo os modelos são mapeados em conjuntos de GPU (colocados ou divididos)
ReceitaUma configuração de treinamento pronta para um algoritmo

Algoritmos Suportados

AlgoritmoNotas
PPORLHF clássico de ator-crítico
GRPORelativo ao grupo, sem modelo de crítico necessário
ReMax / RLOOBaselines leves
DAPO / Dr.GRPOVariantes do GRPO
Estilo DPOReceitas de otimização de preferência

Executando um Trabalho de Treinamento

verl é acionado por substituições de config no estilo Hydra na linha de comando.

# Exemplo de GRPO (conceitual): aponte para dados, modelo e backend de rollout
python3 -m verl.trainer.main_ppo \
  algorithm.adv_estimator=grpo \
  data.train_files=$DATA/train.parquet \
  data.val_files=$DATA/val.parquet \
  actor_rollout_ref.model.path=Qwen/Qwen2.5-7B-Instruct \
  actor_rollout_ref.rollout.name=vllm \
  trainer.n_gpus_per_node=8 \
  trainer.nnodes=1
Grupo de ConfigControla
algorithm.*Algoritmo e estimador de vantagem (por exemplo, adv_estimator=grpo)
data.*Arquivos de treino/validação, tamanhos de lote, comprimentos máximos
actor_rollout_ref.model.*Caminho do modelo base e dtype
actor_rollout_ref.rollout.*Backend de rollout (vllm / sglang) e amostragem
critic.*Configurações do modelo de crítico (PPO)
trainer.*GPUs por nó, contagem de nós, logging, checkpoints

Backends e Escala

ComponenteOpções
Motor de treinamentoFSDP, FSDP2, Megatron-LM
Motor de rolloutvLLM, SGLang
DistribuiçãoColocação baseada em Ray entre GPUs/nós
Mapeamento de dispositivoColoca ator+rollout juntos, ou divide entre conjuntos de GPU

Recompensa e Dados

TarefaComo
Recompensa personalizadaForneça um módulo de função de recompensa via config
Modelo de recompensaAponte reward_model.* para um modelo de pontuação
Formato de datasetParquet com prompt (e resposta para recompensas verificáveis)
Recompensas verificáveisSuporte integrado para recompensas de correspondência exata no estilo matemática/código

Monitoramento

FerramentaIntegração
Weights & Biasestrainer.logger=['console','wandb']
TensorBoardBackend de logger suportado
Checkpointstrainer.save_freq, retomada de trainer.resume_mode

verl vs Outros Frameworks de RL

AspectoverlOpenRLHFART
Modelo centralControlador HybridFlowDivisão de ator RayCliente/servidor
Motores de treinamentoFSDP + MegatronDeepSpeed/FSDPUnsloth
RolloutvLLM / SGLangvLLMvLLM
Melhor paraDesempenho + flexibilidadeRLHF em escala de produçãoAgentes no seu próprio código

Recursos