ACT(Action Chunking with Transformers,动作分块 Transformer)来自 ALOHA 工作,官方实现位于 tonyzhaozh/act。平台以模型标识 act 注册该策略,输入为 LeRobot v2 或 v3 数据集;训练在容器内先将 LeRobot 数据转换为 ACT 的 HDF5 episode,再执行训练。
适用角色与前提
适用角色
| 角色 | 使用场景 | 依赖 |
|---|
| 算法工程师 | 为单任务或相近任务微调 ACT 策略 | 训练与数据集模块权限 |
| 项目经理 | 跟进 ACT 训练任务的进度与产物 | 训练任务查看权限 |
| 数据提供方 | 提供满足字段与维度要求的数据集 | 数据导出模块权限 |
前置条件
| 项 | 要求 |
|---|
| 数据集版本 | LeRobot v2 或 v3 |
| 数据集结构 | 含 meta/info.json;data/ 下有 parquet;视频字段位于 videos/ |
| 数据字段 | 含 observation.state 与 action,且两者维度一致 |
| 相机字段 | features 中 dtype 为 video 的字段构成视觉输入,可用 camera_keys 指定 |
| 训练框架 | ACT 原生(PyTorch)或 LeRobot,默认 ACT 原生 |
| 计算资源 | GPU 容器;显存需求随 batch_size 与相机数量变化,平台未设固定门槛 |
| 运行名 | run_name 对应的输出目录必须为空 |
创建训练任务与参数
操作步骤
- 在训练页面新建训练任务,模型选择
act。
- 选择数据来源:平台导出记录、外部 URL 或本地上传的 LeRobot 数据集。
- 选择数据集版本
v2 或 v3,与数据集实际格式一致。
- 配置参数,其中
run_name 与 camera_keys 建议显式填写。
- 选择计算资源并提交任务。
训练参数
参数默认值与取值范围:
| 参数 | 说明 | 默认值 | 取值范围 |
|---|
batch_size | 批次大小 | 64 | ≥ 1 |
num_epochs | 训练轮数 | 12000 | ≥ 0;大于 0 时优先使用 |
steps | num_epochs 的别名 | 0 | ≥ 0;仅 num_epochs 为 0 且 steps 大于 0 时生效 |
learning_rate | 主学习率 | 5e-5 | > 0 |
save_interval | 轮次存档间隔 | 6000 | ≥ 1;取默认值时按 num_epochs 的一半 |
seed | 随机种子 | 42 | 整数 |
num_workers | DataLoader worker 数 | 0 | ≥ 0;容器内建议 0 |
policy_class | 策略类型 | ACT | 固定 ACT |
kl_weight | KL 项权重 | 10 | ≥ 0 |
chunk_size | 动作 chunk 长度 | 100 | ≥ 1 |
hidden_dim | Transformer 隐层维度 | 512 | ≥ 1 |
dim_feedforward | FFN 隐层维度 | 3200 | ≥ 1 |
task_name | 任务名 | auto | auto 或字符串 |
run_name | 运行名 | 空,自动生成时间戳名称 | 字母、数字、点、下划线、连字符,长度不超过 128 |
camera_keys | LeRobot 视觉字段 | 空,自动推断 | 逗号分隔的字段名 |
camera_names | ACT 相机名 | 空,按 camera_keys 生成 | 与 camera_keys 数量一致且不重复 |
episode_len | 覆盖 episode 长度 | 0 | ≥ 0;0 表示自动检测 |
idle_threshold | 静止帧过滤阈值 | 1e-4 | ≥ 0 |
max_episodes | 仅转换前 N 个 episode | 0 | ≥ 0;0 表示全量 |
convert_workers | 转换并发 worker 数 | 0 | ≥ 0;0 表示自动策略,上限 8 |
keep_converted_hdf5 | 保留中间 HDF5 | false | 布尔 |
多卡训练时 batch_mode 固定为 fixed_global,不单独暴露。首次验证数据链路可按最小配置提交:num_epochs 设为 1、batch_size 设为 8、max_episodes 设为 2。
结果校验
训练监控
训练日志输出 Epoch N 与 Val loss: X。平台将 epoch 记为训练步、验证损失记为 loss,用于训练详情页的损失曲线。
| 指标 | 含义 |
|---|
| Epoch | 当前训练轮次 |
| Val loss | 验证损失 |
校验清单
| 校验项 | 通过标准 |
|---|
| 检查点目录 | 生成 checkpoints/<run_name>/ |
| 检查点文件 | 含 policy_last.ckpt、policy_best.ckpt;按 save_interval 生成 policy_epoch_<epoch>_seed_<seed>.ckpt |
| 数据集统计 | 生成 dataset_stats.pkl |
| 运行清单 | manifest.json 的 state_dim、num_episodes、camera_keys、camera_names 与所选数据集一致 |
| 损失曲线 | Val loss 随训练下降 |
| 中间产物 | 未开启 keep_converted_hdf5 时,转换产生的 HDF5 在训练结束后清理 |
异常处置
| 现象 | 可能原因 | 处置 | 责任方 |
|---|
| 启动报运行名已存在 | 输出目录下同名 run_name 目录非空 | 更换 run_name 后重试 | 训练配置方 |
| 报相机名与相机字段数量不一致 | camera_names 与 camera_keys 数量不同或相机名重复 | 使两者数量一致且名称唯一 | 训练配置方 |
| 报状态与动作维度不一致 | 数据集 observation.state 与 action 维度不同 | 修正数据集使两者维度一致 | 数据提供方 |
| 报未找到相机字段 | features 中无可用 video 字段,或 camera_keys 指定错误 | 核对 meta/info.json 的 features,显式指定 camera_keys | 数据提供方、训练配置方 |
| 报数据集缺少必要列 | parquet 缺少 episode_index、frame_index、observation.state 或 action | 补齐数据集列后重新导出 | 数据提供方 |
| 显存不足 | batch_size 与相机数量过大 | 下调 batch_size | 训练配置方 |
| 多卡训练不稳定 | 转换阶段的磁盘与内存压力 | 保持 num_workers 为 0,下调 convert_workers | 训练配置方 |
相关页面