[ PROMPT_NODE_22892 ]
Post Training Verl API 参考
[ SKILL_DOCUMENTATION ]
# verl API 参考
## 核心类
### RayPPOTrainer
训练循环的中央控制器。管理资源分配并协调工作节点组。
python
from verl import RayPPOTrainer
trainer = RayPPOTrainer(
config=config,
resource_pool_manager=resource_manager,
ray_worker_group_cls=RayWorkerGroup,
)
trainer.init_workers()
trainer.fit()
### ResourcePoolManager
使用 Ray PlacementGroups 管理跨不同工作节点组的 GPU 分配。
python
from verl.trainer.ppo.resource_pool import ResourcePoolManager
manager = ResourcePoolManager(
resource_pool_spec={
"actor_rollout_ref": {"gpu": 4},
"critic": {"gpu": 2},
}
)
### RayWorkerGroup
分布式方法执行的抽象。生成 Ray Actor 并分发方法调用。
python
from verl.trainer.ppo.ray_worker_group import RayWorkerGroup
worker_group = RayWorkerGroup(
num_workers=8,
worker_cls=ActorRolloutRefWorker,
resource_pool=pool,
)
### ActorRolloutRefWorker
实现策略训练、生成和参考模型计算的工作节点类。管理混合引擎模式切换。
python
# 通常通过 YAML 配置,不直接实例化
# 请参阅下方的配置部分
### RolloutReplica
推理后端的接口,包含 vLLM、SGLang、TensorRT-LLM 和 HuggingFace 的实现。
python
from verl.workers.rollout import RolloutReplica
# 通过配置选择后端
rollout:
name: vllm # 或: sglang, hf, tensorrt-llm
## 配置架构
### PPO 配置 (`verl/trainer/config/ppo_trainer.yaml`)
yaml
# 数据配置
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
# 算法配置
algorithm:
adv_estimator: gae # gae, grpo, rloo, reinforce_plus_plus
gamma: 0.99 # 折扣因子
lam: 0.95 # GAE lambda
use_kl_in_reward: false # 将 KL 项添加到奖励中
# Actor 配置
actor_rollout_ref:
model:
path: Qwen/Qwen2.5-7B-Instruct
backend: fsdp # fsdp, fsdp2, megatron
actor:
ppo_mini_batch_size: 64 # Actor 更新的微批次大小
ppo_epochs: 1 # Actor 更新轮数
clip_ratio: 0.2 # PPO 裁剪范围
use_kl_loss: true # 在 Actor 中使用 KL 损失
kl_loss_coe