【免费下载链接】MotusOfficial code of Motus: A Unified Latent Action World Model项目地址https://gitcode.com/gh_mirrors/motus1/Motus点击查看免费下载Motus 训练配置是本开源项目一个约 8B 参数的统一隐动作世界模型落地训练的核心入口。本文将逐行拆解 scripts/train.sh 启动脚本、YAML 训练配置与 DeepSpeed 的 zero1/zero2 配置并给出 SLURM 集群多节点训练和断点续训的实战清单帮助新手从零跑通 Motus 分布式训练。 训练配置由哪三部分组成Motus 的训练由三类文件协同驱动各司其职配置文件作用典型文件YAML 训练配置数据集、模型结构、超参数、日志与断点设置configs/robotwin.yaml、configs/latent_action.yamlDeepSpeed JSON 配置混合精度与 ZeRO 参数分片策略configs/zero1.json、configs/zero2.json启动脚本torchrun 单机训练或 SLURM 集群提交scripts/train.sh、scripts/slurm/slurm_multi_node.sh训练总入口是 train/train.py所有配置最终在 utils/scheduler.py 等处被解析为模型、优化器与调度器。官方训练指南见 TRAINING.md。 scripts/train.sh 逐行拆解单机 8 卡一键启动下面对照 scripts/train.sh 逐段说明已省略注释性空行TASKrobotwin # 任务名用于命名输出 CONFIG_FILEconfigs/robotwin.yaml # 指向你的 YAML 训练配置 export OUTPUT_DIRoutputs/motus-${TASK} # 输出目录不存在则自动创建 torchrun \ --nnodes1 \ # 只用 1 个节点 --nproc_per_node8 \ # 每节点 8 个 GPU 进程 --node_rank0 \ # 当前节点编号单机固定 0 --master_addr127.0.0.1 \ # 主控地址单机即本机 --master_port29500 \ # 主控端口 train/train.py \ # 训练主程序 --deepspeed configs/zero1.json \# 挂载 DeepSpeed 配置 --config $CONFIG_FILE \ # 挂载 YAML 配置 --run_name $TASK \ # 运行名会拼进 checkpoint 目录 --report_to tensorboard # 日志后端要点速记torchrun 负责进程编排--nproc_per_node8让 8 张卡各起一个进程NCCL 后端在 train/train.py 中通过dist.init_process_group(backendnccl)建立通信组。--deepspeed只是挂载train.py 会把它传给DeepSpeedPlugin真正决定显存如何分片的是 JSON 里的参数。--report_to可选wandb、tensorboard、all、none命令行优先于 YAML 里的logging.report_to。 YAML 配置逐块详解以 robotwin.yaml 为例configs/robotwin.yaml 是最典型的微调配置按 8 个区块逐块解读1️⃣ common数据与视频基础维度参数示例值含义action_dim/state_dim14机器人动作/状态维度num_video_frames8每次预测 8 帧视频video_height/video_width384 / 320帧分辨率global_downsample_rate3全局降采样30Hz→20Hzvideo_action_freq_ratio2视频:动作频率比action_chunk_size不用手填train.py 会自动按num_video_frames × video_action_freq_ratio计算。2️⃣ dataset数据集类型与路径type决定走哪个 Dataset 实现robotwin、ac_one、lerobot、latent_action等代码位于 data/。dataset_dir指向预处理后的数据目录latent_action.yaml里甚至支持传入多个目录的列表做混合预训练。task_mode控制单任务/多任务max_episodes设为数字可用于小样本调试。3️⃣ model四大组件的路径与结构子块关键点wanWan2.2-TI2V-5B 视频模型路径config_path、checkpoint_path、vae_pathprecision: bfloat16vlmQwen3-VL-2B 路径frozen: true表示冻结 VLM 参数action_experthidden_size: 1024必须是 128 的倍数head_dim128 约束und_expert理解专家hidden_size: 512内嵌vlm.projector_type: mlp3x_silu适配器time_distributionlogit_normal时间步采样是 UniDiffuser 风格调度的关键loss_weights视频重建损失与动作预测损失各占 1.04️⃣ training优化超参最常被修改的区块参数示例说明batch_size8每卡micro batch 大小max_steps1000000按步数训练不按 epochlearning_rate5.0e-5主学习率可加wan_learning_rate给视频模型单独设置weight_decay0.01AdamW 权重衰减scheduler_typelinear另有cosine、diffusers_cosine两种warmup_steps/cycle_length200 / 5000000线性 warmup 与总周期f_max/f_min0.99 / 0.4warmup 后与周期末的学习率倍数grad_clip_norm0.5梯度裁剪阈值linear调度器由 utils/scheduler.py 中的LambdaLinearScheduler实现warmup 阶段从极低值线性升到f_max之后线性衰减到f_min预训练配置 configs/latent_action.yaml 则使用diffusers_cosine并额外设置min_lr兜底。5️⃣ system路径与硬件checkpoint_dircheckpoint 根目录train.py 会自动拼上配置文件名和run_name形成最终目录如checkpoints/robotwin/robotwin/checkpoint_step_5000。save_interval: 5000、val_interval: 500存盘与验证频率。num_workers: 16pin_memory: true数据加载并行度与锁页内存加速。6️⃣ logging日志后端report_to支持wandb/tensorboard/all/nonerun_name: null时会按数据集类型_bs批次_lr学习率自动生成。7️⃣ resume 与 8️⃣ finetune断点续训与微调开关resume: checkpoint_path: null # 断点续训指向 checkpoint_step_XXXXX 目录 finetune: checkpoint_path: null # 微调指向含 mp_rank_00_model_states.pt 的目录⚠️ 两个字段都填路径时train.py 会自动跳过 WAN/VLM 预训练权重的重新加载只保留 VAE防止预训练权重覆盖已微调好的参数——这是续训不出错的关键细节。⚡ DeepSpeed 配置逐字段解读zero1.json梯度分片显存友好的入门之选configs/zero1.json 全文只有十几个字段{ bf16: { enabled: true }, train_micro_batch_size_per_gpu: auto, train_batch_size: auto, gradient_accumulation_steps: auto, zero_optimization: { stage: 1, overlap_comm: true, contiguous_gradients: true, sub_group_size: 1e9 } }字段作用bf16.enabled开启 bfloat16 混合精度与 train.py 中mixed_precisionbf16呼应三个auto从 YAML 的training.batch_size等自动推导避免两处不一致stage: 1只分片优化器状态与梯度不切模型参数实现简单、通信少overlap_comm通信与计算重叠隐藏 NCCL 同步开销contiguous_gradients梯度连续内存布局提升 reduce 效率zero2.json把模型参数也分片configs/zero2.json 与 zero1 的差异只有两点多了reduce_scatter: true且 stage 仍为 1 的配置骨架上增加了参数分片收益。如果你的卡显存更紧张如 40GB把--deepspeed换成configs/zero2.json即可其余代码零改动——这就是配置与代码解耦带来的灵活性。️ SLURM 集群训练实战清单集群训练由 scripts/slurm/ 下 4 个脚本协作完成脚本角色slurm_single_node.sh单节点 8 卡 SLURM 作业slurm_multi_node.sh多节点主作业4 节点 × 8 卡multi_node_worker.sh由 srun 在每个节点分发执行的 workerlaunch.sh一键提交./scripts/launch.sh scripts/slurm_single_node.sh提交前必改的 5 处占位符#SBATCH --partitionxxx→ 改成你的分区名PROJECT_ROOT/path/to/Motus→ 仓库实际路径conda activate /path/to/motus_env→ 你的 conda 环境日志输出路径/path/to/Motus/logs/#SBATCH --nodes / --gresgpu:8 / --mem1500G→ 按实际配额调整。多节点通信NCCL 环境变量逐行说明slurm_multi_node.sh 中这段环境配置是多节点训练的防坑区export NCCL_IB_HCAmlx5_0:1,mlx5_1:1,... # 指定使用的 InfiniBand HCA 网卡 export NCCL_IB_DISABLE0 # 启用 IB0不禁用 export NCCL_SOCKET_IFNAMEbond1 # 指定 TCP 回退网卡 export NCCL_IB_RETRY_CNT7 / NCCL_IB_TIMEOUT23 # 重试与超时增强网络鲁棒性 export NCCL_DEBUGINFO # 排障时打印 NCCL 日志 # 关键把 NCCL 心跳超时从默认 600s 提到 1800s export TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC1800最后一条专为大 checkpoint 落盘期间设计——存盘时部分 GPU 长时间不通信默认 10 分钟心跳会误杀作业。多节点的工作流是主脚本用scontrol show hostnames选出 master 地址 →export配置变量 →srun bash scripts/slurm/multi_node_worker.sh在所有节点拉起 worker → 每个 worker 里的 multi_node_worker.sh 用$SLURM_JOB_NUM_NODES、$SLURM_NODEID、$SLURM_GPUS_ON_NODE拼出 torchrun 参数与单机脚本完全同构。 断点续训实战清单Motus 的断点机制围绕 accelerate 的save_state/load_state实现代码见 train/train.py按这张清单操作即可存盘每save_interval步保存checkpoint_step_{N}目录内含模型、优化器、调度器、数据加载器与 RNG 状态并额外写一份 config.json可用export_config_json.py手动补写。限量保存ProjectConfiguration(total_limit20)自动只保留最近 20 个 checkpoint磁盘无忧。续训在 YAML 中设置resume: checkpoint_path: ./checkpoints/.../checkpoint_step_10000重启训练bash scripts/train.sh或sbatch均可train.py 会从目录名解析 step 并恢复全部状态。调度器二选一reset_scheduler: true默认会用新 YAML 重新配置调度器并回到 warmup设为false如 configs/latent_action.yaml则把step_count对齐到global_step原样续跑。微调 ≠ 续训finetune.checkpoint_path只加载权重做部分初始化load_pretrain_weights适合预训练底座 新数据集微调场景Stage 3 微调即此路径。从头训练两个路径都保持null会自动加载 WAN 与 Qwen3-VL 预训练权重。️ 常见问题排查清单Checklist结合 TRAINING.md 的 Troubleshooting 章节整理训练速度慢→ 确认安装了 flash-attentionpip install flash-attn --no-build-isolationWAN/VLM 权重没生效→ 检查是否误设了resume/finetune路径导致跳过预训练加载需从头加载时两者都置null多节点 NCCL timeout→ 核对上文 NCCL 环境变量与TORCH_NCCL_HEARTBEAT_TIMEOUT_SEC端口冲突多作业同机→ 修改MASTER_PORT脚本支持环境变量覆盖日志缺失→ 确认--report_to与logging.report_to的设置TensorBoard 日志在 checkpoint 目录下tensorboard_logs/显存不足→ 换configs/zero2.json或降低training.batch_size 小结Motus 的训练体系把单机 8 卡 → 多节点 SLURM → 断点续训收敛成一套可复用的三件套一个 YAML 定超参、一个 JSON 定显存策略、一个 shell 定拓扑。新手建议先用bash scripts/train.sh打通单机流程再把sbatch scripts/slurm/slurm_single_node.sh换成slurm_multi_node.sh平滑扩展到集群中断时只需把resume.checkpoint_path指回最近的checkpoint_step_*目录即可无缝续训。更多数据集准备细节可参考 DATA_FORMAT.md 与 data/robotwin2/robotwin_data_convert/README.md。赞分享【免费下载链接】MotusOfficial code of Motus: A Unified Latent Action World Model项目地址https://gitcode.com/gh_mirrors/motus1/Motus点击查看免费下载相关推荐Megatron-LM ModelOpt 进阶实战配置体系、Slurm 集群训练与检查点管理Megatron LM ModelOpt 进阶实战配置体系、Slurm 集群训练与检查点管理 本文面向已经跑通 TensorRT Model Optimize人工智能大模型强化学习AI Agent微调FSDP-QLoRA分布式训练SLURM集群配置指南FSDP QLoRA分布式训练SLURM集群配置指南 FSDP QLoRA是GitHub推荐项目精选中的高效分布式训练方案专为大规模语言模型训练设计结合了人工智能大模型微调LoRA分布式训练模型量化PyTorch 多节点训练实战使用 torchrun 与 SLURM 将 DDP 从单机扩展到集群PyTorch 多节点训练实战使用 torchrun 与 SLURM 将 DDP 从单机扩展到集群 本篇指南围绕 PyTorch DDP 视频教程系列中的多节示例工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?