Skip to content

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

参考