主题
RL 训练实验记录
本文档记录了 RL 训练的实验结果和经验教训。
实验 1:从头训练 100 次迭代
配置:
- 迭代数:100
- 环境数:1024
- 其他:默认超参数
结果:
- Success Rate:0.000(整个训练过程)
- Mean Reward:0.677 → 0.885
- Episode Length:11.5 → 250.0
结论:模型学会了不让物体掉落(episode 长度达到最大值),但没有学会完成任务。
实验 2:从头训练 1500 次迭代
配置:
- 迭代数:1500
- 环境数:1024
- 其他:默认超参数
结果:
- Success Rate:0.000(整个训练过程)
- Mean Reward:0.679 → 0.667(反而下降)
- Episode Length:11.5 → 243.1
- Rollout 测试:0 成功 / 36 失败
结论:即使训练 1500 次迭代,模型仍然无法收敛。从头训练存在严重问题。
实验 3:NVIDIA 预训练权重
配置:
- 使用 NVIDIA 官方预训练权重
- Rollout:4 envs,最多 5000 步
结果:
- Rollout 测试:3 成功 / 81 失败(成功率 ~3.6%)
- 成功 episode 长度:68-232 步(平均 149 步)
- 生成数据:335 KB HDF5 + 3 个视频
结论:预训练权重虽然成功率低,但至少可用。可以通过增加环境数和运行时间收集更多成功 episode。
对比总结
| 方案 | 训练时间 | 成功率 | Rollout 结果 | 推荐度 |
|---|---|---|---|---|
| 从头训练 100 次 | ~10 分钟 | 0% | 0/42 | ❌ 不推荐 |
| 从头训练 1500 次 | ~15 分钟 | 0% | 0/36 | ❌ 不推荐 |
| NVIDIA 预训练 | 0(直接用) | ~3-5% | 3/81 | ✅ 推荐 |
| 从预训练 fine-tune | 待测试 | 待测试 | 待测试 | 🔄 值得尝试 |
经验教训
1. 从头训练的问题
现象:
- 即使 1500 次迭代,成功率始终为 0
- Reward 有增长但不稳定
- Episode 长度达到最大值(学会了不让物体掉落)
可能原因:
- 超参数配置不当(学习率、reward 权重、entropy 系数等)
- 需要更多训练时间(>3000 次迭代?)
- 随机种子或初始化问题
- 环境配置与 NVIDIA 训练时有差异
- Reward shaping 可能需要调整
建议:
- 不要从头训练,除非有充足时间调试超参数
- 使用预训练权重作为起点
- 如果必须从头训练,监控
Metrics/success_rate并在早期就调整策略
2. 预训练权重的使用
优点:
- 立即可用,无需等待训练
- 虽然成功率低(~3-5%)但至少能生成一些成功轨迹
- 可以作为 fine-tune 的起点
缺点:
- 成功率较低,需要运行较长时间才能收集足够数据
- 可能与当前环境配置有细微差异
最佳实践:
- 增加
--num_envs到 32 或更高(如果显存允许) - 增加
--max_steps给模型更多机会成功 - 使用
--video录制视频,方便分析失败原因
3. Fine-tune 策略(待验证)
理论上从预训练权重继续训练应该比从头训练更有效:
bash
# 从预训练权重 fine-tune
uv run sim2lerobot rl train \
--resume pretrained \
--max_iterations 500 \
--num_envs 1024这个方案还需要实验验证。
数据收集策略
基于实验结果,推荐的数据收集策略:
短期方案(立即可用)
使用 NVIDIA 预训练权重,增加环境数和运行时间:
bash
uv run sim2lerobot rl rollout \
--checkpoint data/.pretrained_checkpoints/rsl_rl/Isaac-Lift-Cube-Franka-v0/Assets/Isaac/6.0/Isaac/IsaacLab/PretrainedCheckpoints/rsl_rl/Isaac-Lift-Cube-Franka-v0/checkpoint.pt \
--num_demos 100 \
--num_envs 64 \
--max_steps 10000 \
--video --video_interval 10预期:运行 ~30-60 分钟,收集 100 个成功 episode。
中期方案(需要实验)
从预训练权重 fine-tune,提高成功率:
bash
# 1. Fine-tune
uv run sim2lerobot rl train \
--resume pretrained \
--max_iterations 500
# 2. Rollout
uv run sim2lerobot rl rollout \
--checkpoint data/lift_cube/rl/latest.pt \
--num_demos 100 \
--num_envs 32长期方案(需要深入调试)
调试从头训练的问题,找到能收敛的超参数配置。这需要:
- 系统性地调整超参数(学习率、batch size、reward 权重等)
- 增加训练时间(3000+ 次迭代)
- 对比 NVIDIA 的训练配置
- 可能需要修改 reward function
参考
- IsaacLab 官方文档:https://isaac-sim.github.io/IsaacLab/
- RSL-RL 文档:https://github.com/leggedrobotics/rsl_rl
- 预训练权重系统:
IsaacLab/source/isaaclab_rl/isaaclab_rl/utils/pretrained_checkpoint.py