[ PROMPT_NODE_27076 ]
Pufferlib 训练
[ SKILL_DOCUMENTATION ]
# PufferLib 训练指南
## 概述
PuffeRL 是 PufferLib 的高性能训练算法,基于 CleanRL 的 PPO 和 LSTM,并结合了专有的研究改进。通过优化的向量化和高效实现,它实现了每秒数百万步的训练速度。
## 训练工作流
### 基础训练循环
PuffeRL 训练器提供三个核心方法:
python
# 收集环境交互数据
rollout_data = trainer.evaluate()
# 在收集的批次上进行训练
train_metrics = trainer.train()
# 聚合并记录结果
trainer.mean_and_log()
### CLI 训练
通过命令行快速开始训练:
bash
# 基础训练
puffer train environment_name --train.device cuda --train.learning-rate 0.001
# 自定义配置
puffer train environment_name
--train.device cuda
--train.batch-size 32768
--train.learning-rate 0.0003
--train.num-iterations 10000
### Python 训练脚本
python
import pufferlib
from pufferlib import PuffeRL
# 初始化环境
env = pufferlib.make('environment_name', num_envs=256)
# 创建训练器
trainer = PuffeRL(
env=env,
policy=my_policy,
device='cuda',
learning_rate=3e-4,
batch_size=32768,
n_epochs=4,
gamma=0.99,
gae_lambda=0.95,
clip_coef=0.2,
ent_coef=0.01,
vf_coef=0.5,
max_grad_norm=0.5
)
# 训练循环
for iteration in range(num_iterations):
# 收集 rollout
rollout_data = trainer.evaluate()
# 在批次上训练
train_metrics = trainer.train()
# 记录结果
trainer.mean_and_log()
## 关键训练参数
### 核心超参数
- **learning_rate**: 优化器的学习率 (默认: 3e-4)
- **batch_size**: 每个训练批次的时间步数 (默认: 32768)
- **n_epochs**: 每个批次的训练轮数 (默认: 4)
- **num_envs**: 并行环境数量 (默认: 256)
- **num_steps**: 每个 rollout 中每个环境的步数 (默认: 128)
### PPO 参数
- **gamma**: 折扣因子 (默认: 0.99)
- **gae_lambda**: GAE 计算的 lambda (默认: 0.95)
- **clip_coef**: PPO 裁剪系数 (默认: 0.2)
- **ent_coef**: 用于探索的熵系数 (默认: 0.01)
- **vf_coef**: 价值函数损失系数 (默认: 0.5)
- **max_grad_norm**: 用于裁剪的最大梯度范数 (默认: 0.5)
### 性能参数
- **device**: 计算设备 ('cuda' 或 'cpu')
- **compile**: 使用 torch.compile 以加快训练