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étodo | Comando |
|---|
| pip | pip install verl |
| A partir do código-fonte | git clone https://github.com/volcengine/verl && cd verl && pip install -e . |
| Docker | use as imagens oficiais referenciadas na documentação (CUDA + vLLM pré-instalado) |
| Requisitos | GPUs NVIDIA, CUDA, PyTorch; vLLM ou SGLang para rollout |
Conceitos Principais
| Termo | Significado |
|---|
| HybridFlow | O modelo do controlador: um único controlador orquestra workers distribuídos |
| Rollout | Fase de geração que produz amostras (servida por vLLM/SGLang) |
| Actor / Critic | A política sendo treinada e (para PPO) o modelo de valor |
| Recompensa | Sinal escalar; de um modelo de recompensa ou uma função personalizada |
| Posicionamento | Como os modelos são mapeados em conjuntos de GPU (colocados ou divididos) |
| Receita | Uma configuração de treinamento pronta para um algoritmo |
Algoritmos Suportados
| Algoritmo | Notas |
|---|
| PPO | RLHF clássico de ator-crítico |
| GRPO | Relativo ao grupo, sem modelo de crítico necessário |
| ReMax / RLOO | Baselines leves |
| DAPO / Dr.GRPO | Variantes do GRPO |
| Estilo DPO | Receitas 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 Config | Controla |
|---|
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
| Componente | Opções |
|---|
| Motor de treinamento | FSDP, FSDP2, Megatron-LM |
| Motor de rollout | vLLM, SGLang |
| Distribuição | Colocação baseada em Ray entre GPUs/nós |
| Mapeamento de dispositivo | Coloca ator+rollout juntos, ou divide entre conjuntos de GPU |
Recompensa e Dados
| Tarefa | Como |
|---|
| Recompensa personalizada | Forneça um módulo de função de recompensa via config |
| Modelo de recompensa | Aponte reward_model.* para um modelo de pontuação |
| Formato de dataset | Parquet com prompt (e resposta para recompensas verificáveis) |
| Recompensas verificáveis | Suporte integrado para recompensas de correspondência exata no estilo matemática/código |
Monitoramento
| Ferramenta | Integração |
|---|
| Weights & Biases | trainer.logger=['console','wandb'] |
| TensorBoard | Backend de logger suportado |
| Checkpoints | trainer.save_freq, retomada de trainer.resume_mode |
verl vs Outros Frameworks de RL
| Aspecto | verl | OpenRLHF | ART |
|---|
| Modelo central | Controlador HybridFlow | Divisão de ator Ray | Cliente/servidor |
| Motores de treinamento | FSDP + Megatron | DeepSpeed/FSDP | Unsloth |
| Rollout | vLLM / SGLang | vLLM | vLLM |
| Melhor para | Desempenho + flexibilidade | RLHF em escala de produção | Agentes no seu próprio código |
Recursos