跳到主要内容

Diffusion Policy 模型训练

Diffusion Policy 将动作序列建模为条件去噪过程,适合连续、平滑且存在多条可行轨迹的控制任务。LeRobot 提供了 PyTorch 实现,平台以模型标识 diffusion 注册该策略,训练框架为 LeRobot,输入为 LeRobot v2 或 v3 数据集。

适用角色与前提​

适用角色​

角色使用场景依赖
算法工程师为连续轨迹任务微调扩散策略训练与数据集模块权限
项目经理跟进扩散策略训练任务的进度与产物训练任务查看权限
数据提供方提供字段与帧率一致的数据集数据导出模块权限

前置条件​

项要求
数据集版本LeRobot v2 或 v3
训练框架LeRobot
数据集字段meta/info.json 中图像、状态、动作字段完整,字段名与训练配置一致
时序一致性fps 与实际录制一致,避免监督信号错位
计算资源GPU;显存需求随 batch_size、图像分辨率与观测步数变化

创建训练任务与参数​

操作步骤​

  1. 在训练页面新建训练任务,模型选择 diffusion。
  2. 选择数据来源与数据集版本 v2 或 v3。
  3. 训练框架选择 LeRobot。
  4. 配置通用参数与策略参数。
  5. 选择计算资源并提交任务。

训练参数​

通用参数:

参数说明默认值取值范围
batch_size批次大小1≥ 1
steps训练步数10000≥ 1
seed随机种子1000整数
num_workersDataLoader worker 数4≥ 1
eval_freq评估频率,单位步1000≥ 1
log_freq日志频率,单位步100≥ 1
save_checkpoint是否保存检查点true布尔
save_freq检查点保存频率,单位步5000≥ 1

策略参数(以 policy. 为前缀):

参数说明默认值取值范围
policy.n_obs_steps输入策略的观测步数2正整数
policy.horizon动作预测长度16正整数
policy.n_action_steps每次调用执行的动作步数8正整数
policy.vision_backbone视觉骨干网络resnet18resnet18、resnet34、resnet50、resnet101、resnet152
policy.pretrained_backbone_weights骨干网络预训练权重空路径或空
policy.crop_shape送入骨干前的图像裁剪尺寸[84, 84]二元组
policy.crop_is_random训练时是否随机裁剪true布尔
policy.use_group_norm骨干网络以 GroupNorm 替换 BatchNormtrue布尔
policy.spatial_softmax_num_keypointsSpatialSoftmax 关键点数32正整数
policy.use_separate_rgb_encoder_per_camera每路相机是否使用独立 RGB 编码器false布尔
policy.down_dimsUnet 各下采样阶段特征维度[512, 1024, 2048]三维组
policy.kernel_sizeUnet 卷积核大小5正整数
policy.n_groupsUnet 卷积块 GroupNorm 分组数8正整数
policy.diffusion_step_embed_dim扩散时间步嵌入维度128正整数
policy.use_film_scale_modulationUnet 条件调制使用 FiLMtrue布尔
policy.noise_scheduler_type噪声调度器类型DDPMDDPM、DDIM
policy.num_train_timesteps前向扩散步数100正整数
policy.beta_schedulebeta 调度方式squaredcos_cap_v2字符串
policy.beta_start首个前向扩散步的 beta0.0001浮点数
policy.beta_end末个前向扩散步的 beta0.02浮点数
policy.prediction_typeUnet 预测目标epsilonepsilon、sample
policy.clip_sample是否裁剪预测样本true布尔
policy.clip_sample_range裁剪范围幅值1.0浮点数
policy.num_inference_steps推理阶段反向扩散步数空正整数或空
policy.do_mask_loss_for_padding对补零动作掩码损失false布尔
policy.drop_n_last_frames丢弃末尾帧数7整数
policy.optimizer_lr优化器学习率1e-4浮点数
policy.optimizer_betasAdam 优化器 beta[0.95, 0.999]二元组
policy.optimizer_epsAdam 优化器 epsilon1e-8浮点数
policy.optimizer_weight_decay权重衰减1e-6浮点数
policy.scheduler_name学习率调度器cosine字符串
policy.scheduler_warmup_steps调度器预热步数500非负整数

首次验证数据链路时,将 batch_size 与 steps 设为小值,先确认字段读取与损失下降,再放大到完整训练。

结果校验​

训练监控​

平台解析 LeRobot 训练日志中的以下指标:

指标含义
loss训练损失
step训练步
sample已使用样本数
episode已使用 episode 数
epoch训练轮次
gradient_norm梯度范数
learning_rate学习率
update_time单步更新时间
data_time单步数据加载时间

校验清单​

校验项通过标准
检查点列表训练详情页按 save_freq 出现检查点
损失曲线loss 随训练下降
日志训练日志无持续报错
实机或仿真评估相同初始条件下多次 rollout 的执行结果稳定

异常处置​

现象可能原因处置责任方
字段 key 不匹配meta/info.json 的图像、状态、动作字段名与训练配置不一致核对并统一字段名与 fps数据提供方
显存不足batch_size 过大,或图像分辨率与观测步数过高下调 batch_size,先缩短 steps 验证训练配置方
损失不下降学习率或数据窗口配置不当核对 policy.optimizer_lr、policy.horizon 与 policy.n_obs_steps算法工程师
与原始论文结果不一致LeRobot 实现、数据读取与预处理存在差异以 LeRobot 实现为准,或改用原始实现算法工程师

相关页面​

页面用途
模型训练训练任务的创建、监控与配额
LeRobot 数据集与训练数据导出与训练总览
LeRobot v2 与 v3 格式差异两种数据格式的差异与迁移
数据导出生成 LeRobot 训练包