回到时间线

10月15日周四20:26Open SourceAPI 与价格Infra / 成本研究与论文API 与价格指南

LeRobot 多任务 DiT 策略支持 torch.compile 并去重任务字符串

决策简报

Brief
发生了什么
LeRobot 的 multi_task_dit 策略新增 opt-in 的 compile_model 开关,并对任务字符串去重,训练吞吐最高提升约 31%。
为什么重要
OpenAI 相关变化会影响地区可用性、合规成本和供应商风险。
影响谁
OpenAI
建议动作
评估是否影响你的技术选型
地区可用性
暂未验证地区可用性差异。

关键事实

  • LeRobot 的 multi_task_dit 策略新增 opt-in 的 compile_model 开关,并对任务字符串去重,训练吞吐最高提升约 31%。 [src-lerobot]
  • 开启 --policy.compile_model=true 后,训练步被 CLIP ViT-B/16 前反向主导的问题被 torch.compile 融合逐元素算子缓解,代价是首次编译约 90 秒;但每次出现新 batch shape 都要再编译一次,跑变长图像尺寸的团队要留意。 [src-lerobot]
高信心100% 主张有证据

由事件证据自动生成。

这次改动给 multi_task_dit 加了两个配置项:compile_model(默认 false)和 compile_mode(默认 None)。开启后会以 dynamic=False 编译 CLIP 视觉编码器和 DiT 的 forward,因为动态 shape 重编译会让整批步进慢 4%,所以每种 batch shape 各编译一次静态图,包括每个 epoch 不满的最后一个 batch 和推理 batch。实测在单张 A100 80GB、bf16、有效 batch 320 下,LIBERO 从 206 提升到 253 样本/秒,svla 从 176 到 215,RoboCasa 从 147 到 193,峰值内存各降约 22%;README 记录为 +22% 到 +31% 样本/秒。 处理器侧把通用 TokenizerProcessorStep 换成 DedupTaskTokenizerProcessorStep:每批只对去重后的任务字符串分词,并用 observation.language.row_index 把每个样本映射回对应行,文本塔只在去重后的行上跑再 gather 回来。分词结果按字符串缓存,整个训练过程每个任务只分词一次,LIBERO 上单微步的 host 预处理从 36 毫秒降到 3 毫秒。子任务不再被分词,该策略不消费它们。 受益的是用 LeRobot 训练多任务 DiT 策略、且批次里任务字符串高度重复的团队——常见的是每批几百个样本只带少量任务描述的场景,比如 LIBERO、RoboCasa 这类多任务数据集。因为编译 forward 绑到实例上,参数和 state_dict 键不变,FSDP2 的 unshard/reshard 钩子仍会触发,深拷贝的策略会重新绑定到副本而不是跑原权重,保存和加载在编译与 eager 下损失一致。代价是首次编译约 90 秒、每个新 batch shape 再编译一次。

摘要依据:已读全文详摘依据上方标注的来源范围整理,内容以原文为准。

来源

相关情报

留言

登入后即可留言,和其他 builder 交换实测心得。

还没有留言,抢头香。