Cosmos3 学习与实践

这篇记录整理了 Cosmos3 的核心原理,以及我在 Astribot 上从数据适配、模型训练到部署和实机测试的过程。前期使用 Nano 打通训练与推理流程,Edge 开源后转向 Edge 训练,完成 20k checkpoint,并保存了 20 段方块分类任务录像。

训练使用修改后的 cosmos-framework。Edge 20k 在 20 次捡方块测试中平均得到 8.7/10 分;RTX 5090 端侧推理已达到 4 步采样约 680 ms。实际部署中,减少采样步数会带来动作抖动,增加到 50 步则明显更平滑,但耗时升至约 7.5 秒。因此下一阶段的重点是找到速度与动作稳定性之间合适的取舍。

官方入口:NVIDIA Cosmos · Cosmos Framework · Cosmos3 技术报告

目录

  1. Cosmos3 的核心原理
  2. Astribot 数据与模型适配
  3. 我的训练记录
  4. 训练与部署操作流程
  5. 部署性能与实时性
  6. 捡方块实机测试与模型对比
  7. 反思与下一步
  8. 相关资料

1. Cosmos3 的核心原理

1.1 模型定位与规模

Cosmos3 面向物理世界的理解、预测和交互,能够处理文本、图像、视频、音频与机器人动作。对机器人任务来说,它的特点是:根据当前观测和任务指令,同时预测未来动作与未来画面,将动作学习和环境变化联系起来。

模型 总参数量 单塔骨架规模 本项目中的用途
Cosmos3-Edge 约 4B 约 2B 后期训练与实机测试
Cosmos3-Nano 约 16B 约 8B 数据适配、训练和部署验证
Cosmos3-Super 约 64B 约 32B 技术调研

模型包含两套 Transformer 参数,因此总参数量与单塔骨架规模不同。通用模型、DROID 专用策略和本地 Astribot 微调模型也有各自的用途;在 Astribot 上使用时,仍需适配相机、状态和动作接口。

1.2 MoT:理解与生成怎样协作

技术报告原图:Cosmos3 MoT 架构与注意力掩码

技术报告 Figure 5,p.11。左侧是理解与生成两条计算路径,右侧展示它们能读取的 token 范围。

Cosmos3 采用 Mixture-of-Transformers(MoT)结构,包含两个相互配合的部分:

  • Reasoner 使用自回归方式处理理解侧的文本和视觉信息,生成描述、推理或结构化答案。
  • Generator 通过流匹配生成连续信号,包括视频 latent、音频 latent 和机器人动作。

两者在每层保留独立参数。Generator 可以读取 Reasoner 的上下文,以及正在去噪的生成序列;Reasoner 使用因果注意力,不读取加噪的生成 token。这样既保留语言理解能力,也能处理视频和动作的连续生成。

视觉输入有两条路径:理解任务通过 ViT 提取语义,生成任务通过视频 VAE 编码。Cosmos3 使用的 Wan2.2 VAE 在时间上压缩 4 倍、空间上压缩 16×16,后续 patch 合并再将主干中的空间尺度降至原图的 1/32。

1.3 世界预测与动作生成

技术报告原图:FD、ID 与 Policy 的条件和预测位置

技术报告 Figure 4,p.10。实线表示已知条件,虚线表示加噪后需要生成的目标;Policy 同时生成未来视频与动作。

通过改变条件和预测目标,模型可以承担三类任务:

模式 已知条件 预测内容
前向动力学 FD 当前观测、给定动作 执行动作后的未来视频
逆动力学 ID 一段观测变化 对应的动作
策略 Policy 当前观测、本体状态、任务指令 未来动作与视频

本项目主要使用 Policy。训练时,当前画面与状态作为条件,未来视频和动作加入噪声,模型学习如何逐步恢复它们。用流匹配的一种时间约定表示:

\[ x_t=(1-t)x_0+t\epsilon,\qquad v^*=\epsilon-x_0. \]

其中 \(x_0\) 是真实数据,\(\epsilon\) 是噪声。模型预测速度场,推理时从噪声出发逐步得到视频与动作。联合训练让模型同时学习“应该怎么动”和“动完以后会发生什么”,代价是推理时也需要处理视觉 token。

1.4 从通用模型到机器人策略

生成侧训练大致经过三个阶段:先从大规模多模态数据中学习外观和运动规律,再加入动作数据进行 FD、ID、Policy 中期训练,最后针对具体机器人和任务微调。

技术报告原图:生成侧的预训练、中期训练和后训练

技术报告 Figure 8,p.20。动作数据在中期训练加入,再由共享基座派生出机器人 Policy 等专用模型。

官方 Nano-Policy-DROID 使用 8 维关节与夹爪动作,预测未来 32 步。适配新机器人时,需要重新处理动作编码、解码、模态 embedding,以及对应的数据分布。Astribot 的 25 维接口便是在这一步接入的。

2. Astribot 数据与模型适配

任务是将桌面上的蓝色方块放入右盘,红色方块放入左盘。输入包括头部、左腕、右腕三路相机、当前机器人状态和任务指令,输出为未来 32 步的 25 维动作。

Astribot 数据与控制流程

2.1 三相机与时序组织

相机拼图固定为头部视角在上、左腕和右腕视角在下。训练和部署使用相同的布局、缩放方式与颜色通道顺序。

数据 组织方式
视频 33 帧:当前帧 + 未来 32 帧
状态与动作 当前 25D state + 未来 32×25D action
模型动作输入 [33,25] 归一化后补齐为 [33,64]
条件位置 首个视觉 latent 和动作序列中的当前 state
动作监督 未来位置的有效 25 维,忽略补齐维度
部署输出 去掉条件位置、裁剪并反归一化,得到 [32,25]

这里最容易出错的是时序对齐:动作标签究竟表示当前命令、下一时刻目标还是状态差分,需要在数据转换时确定。帧号相同不一定代表物理时刻一致,整体错一帧也会影响动作学习。

2.2 归一化与动作定义

状态和动作采用分位数归一化,用训练数据中的 q01、q99 将各维主要分布映射到约 [-1,1]:

\[ \tilde a_j=2\frac{a_j-q_{01,j}}{\max(q_{99,j}-q_{01,j},\epsilon)}-1. \]

部署时使用同一份统计量反归一化。各通道的单位和量级不同,关节、夹爪的顺序必须明确;近常量维度也要避免除零。统计量应在划分 train/val 后,仅使用训练集计算。

早期代码使用 normalizer_stats/astribot_lerobot_stats.json,后续配方使用 datasets/normalizers/astribot.json,两者 JSON 层级不同。实际复现时要与 loader 对应,不能只改文件名。曾经沿用其他任务的统计量,也是需要特别避免的问题。

2.3 具体训练哪些权重

我使用 cosmos-framework 进行机器人策略微调。这套配方主要训练生成侧主干及其视觉、动作接口,冻结 Reasoner 和视频 VAE。

模块 是否训练 在联合生成中的作用
生成侧 Transformer(moe_gen) 训练 包括注意力投影、MLP 和归一化层,学习视频与动作的联合动态
时间步编码(time_embedder) 训练 编码去噪时间步,由视频与动作分支共用
视觉映射(vae2llm、llm2vae) 训练 将视频 latent 映射到主干,再输出视频速度场
动作映射(action2llm、llm2action) 训练,5 倍基础学习率 按机器人类型映射动作输入和动作速度场输出
动作模态编码(action_modality_embed) 训练,5 倍基础学习率 标识动作 token
Reasoner 冻结 保留语言条件处理及已有理解表征
Wan2.2 视频 VAE 冻结 提供固定的视频编码与解码空间
理解侧 ViT 默认不启用 机器人观测通过 VAE 编码
音频模块 不启用 本任务不生成音频
EMA 模型 不参与梯度优化 若启用,通过训练权重的滑动平均更新

视觉映射层会更新,VAE 本体保持固定。 模型是在既有的视频 latent 空间中学习未来变化,无需重新训练视频编码器和解码器。

开始微调时,动作输入、输出映射和模态编码会重新初始化,再使用 5 倍基础学习率适配 Astribot。当前配方的基础学习率为 2e-4,训练过程中随学习率计划调整。

以上对应本地 Nano/Astribot 配方;Edge 20k 的完整运行配置尚未归档,其具体训练范围仍需结合对应配置确认。

2.4 动作与未来视频怎样一起学

技术报告原图:不同机器人和运动形式的统一动作表示

技术报告 Figure 3,p.8。不同形态保留自己的动作接口,通过 domain 专属映射进入共享主干;Astribot 在本项目中使用 25D joint 接口。

视频和动作分别进入 vae2llm 与 action2llm,在同一个 Generator 中联合处理,再由两套输出映射预测各自的速度场。因此,两种损失会共同更新生成侧主干;视觉和动作接口也会随联合目标一起适配。

当前 Astribot 视频配方可以概括为:

\[ \mathcal L = 10\,\mathcal L_{\mathrm{video}} + 10\,\mathcal L_{\mathrm{action}}. \]

条件位置不参与去噪目标,动作损失只计算有效的 25 维。两个系数相同也不代表两项损失或梯度贡献相同,训练时仍应分别观察。

这也解释了为什么训练未来视频并不需要解冻 VAE:学习发生在 latent 空间,更新的是生成主干与 latent 映射层。Joint 与 EEF 的区别则属于动作接口设计;改成 EEF 时,还需明确坐标系、旋转表示和 IK/FK 转换。

3. 我的训练记录

3.1 实验过程

前期主要使用 Nano 完成数据适配和训练部署。2026年7月20日,NVIDIA 公开发布 Cosmos3-Edge 权重,随后我将训练重心转向 Edge,继续开展捡方块任务的微调与端侧部署。官方模型卡

阶段 主要工作
基础验证 配置环境,运行 Nano action demo 和策略服务,熟悉推理流程
数据适配与部署 在 A100 环境接入 Astribot 数据,完成权重转换、训练、导出和 25D 服务部署
Nano 训练 Nano 保存到 step 6000,记录 loss、训练速度,并尝试降低学习率
训练配置调整 调整 batch、梯度累积、数据统计与 normalizer,整理复现手册
Edge 训练 Edge 完成 20,000 step 训练
实机测试 使用 Edge 20k 进行方块分类测试,保存 20 段实机录像

3.2 数据规模

数据使用 LeRobot v3 格式,由 parquet 状态/动作、相机 MP4 和 metadata 组成。一份数据统计包含 100 个 episode,其中 95 个用于训练;Edge 训练记录采用的 task01 原始帧数为 54,991。另一份训练配方统计到 50,297 个训练窗口。

有些统计脚本会把 state 和 action 合并计算分位数,因此输出的 109,982 行等于 54,991×2,并不表示数据帧数翻倍。后续比较实验时,统一使用 episode 数、原始帧数和实际训练窗口数即可。

3.3 Edge 20k 训练成本

Edge 使用 micro batch 16 × 8 卡 × 梯度累积 4,global batch 为 512。

项目 数值
训练步数 20,000
总耗时 12 天 4 小时,即 292 小时
全程平均每步耗时 52.56 秒
平均每 1000 step 14.6 小时
GPU 时数 约 2336 GPU·h,按 8 卡全程占用估算

按 20,000×512÷54,991 计算,样本暴露量约相当于原始帧数的 186.2 倍。由于训练使用时序窗口和 packing,这个值不直接等于严格的 epoch 数。

训练配置与运行记录见 W&B run。

3.4 Loss 曲线与训练时长

Cosmos3-Edge 总训练 loss

总训练 loss,截图覆盖约 21k step。以下数值均为读图约值。

总 loss 从初期的 7 以上迅速下降,约 2k 时降到 1 附近,随后逐渐降至 20k 附近的 0.6 左右。后半程仍有下降,只是速度明显放缓;单步波动较大,不能靠某一个低点选择 checkpoint。

Cosmos3-Edge 视频、声音和动作分项 loss

从左到右为 vision、sound、action 的 flow matching loss。动作图采用对数纵轴,后期看起来平缓,仍可能有可观的相对下降。

  • 动作项前期改善最快。 前几千步已降至几千分之一;约 10k 时为 0.0015–0.002,20k 附近约为 0.001。后半程仍在学习,但这些下降能否改善抓取、分盘和动作平滑度,需要实机比较。
  • 视频项持续下降。 约 5k、10k、20k 时分别为 0.08、0.07、0.055–0.06,尚未明显持平。如果目标也包括未来视频生成,应同时比较生成画面。视频项的数值明显大于动作项;若沿用前述等权配方,总 loss 会更多反映视频项的变化,但这不等于它对梯度的贡献也按同比例占优。
  • 声音项始终为 0。 这与当前任务未启用声音训练相符,不能解释为声音生成已经收敛。

是否需要训练这么久?下一轮不必默认跑满 20k,但目前还不能确定最佳停止点。 现有曲线只有训练 loss,没有验证集曲线,也没有较早 checkpoint 的同条件实机成绩,无法据此判断泛化是否继续改善或是否过拟合。20k 的 8.725 分说明这个 checkpoint 可用,并不能说明达到这个水平必须训练到 20k。

下一轮从 5k 开始评测,对比 5k、10k、15k、20k,固定初始摆放、采样步数、动作执行方式和超时规则,记录任务得分、满分比例、完成时间与抖动情况。若连续两轮没有稳定提升,就优先选较早的 checkpoint;若还需要未来视频生成,则把视频质量一起纳入选择。假如 10k 与 20k 的实机表现相当,按本次平均速度估算,可节省约 146 小时,即 6 天 2 小时,约一半训练成本。

4. 训练与部署操作流程

下面保留 Nano/Astribot 的关键步骤。训练代码和 TOML 已能在本地 cosmos-framework 中查看,命令里的 /zhaodongyu/... 统一作为服务器路径示例,部署时对应实际的数据和权重目录。

4.1 准备环境和资源

先设置工程、数据与模型路径:

1
2
3
4
5
6
7
export COSMOS_REPO=/zhaodongyu/2026/cosmos-framework-a100
export ASTRIBOT_ROOT=/zhaodongyu/2026/benchmark_dataset/lerobotv3/task01_joint
export DATASET_PATH="$ASTRIBOT_ROOT"
export HF_COSMOS3_NANO=/models/base/nv-community/Cosmos3-Nano
export BASE_CHECKPOINT_PATH=/zhaodongyu/checkpoints/Cosmos3-Nano-dcp
export WAN_VAE_PATH=/zhaodongyu/Wan2.2_VAE.pth
cd "$COSMOS_REPO"

历史环境采用 CUDA 12.8 依赖组,同时安装训练和策略服务依赖。5090 的一次安装问题来自 Python 3.14 与 cp313 wheel 不匹配,当时通过 Python 3.13.14 解决:

1
2
3
4
5
6
uv python install 3.13.14
uv sync --all-extras --group=cu128-train --group=policy-server \
--python 3.13.14
source .venv/bin/activate
nvidia-smi
python -c 'import torch; print(torch.__version__, torch.version.cuda); print(torch.ones(1, device="cuda"))'

准备好 Nano 权重、tokenizer/config 和 Wan2.2 VAE,并确认能实际读取一段数据视频。离线模式应在资源缓存齐全后开启。

4.2 检查数据与训练样本

训练前先取一个样本,查看三相机拼图、任务指令和动作值。重点确认视频为 33 帧、动作序列为 [33,25],第 0 步来自当前 state;transform 后动作补齐为 [33,64]。

启动训练前,需要将数据目录和任务指令切换为捡方块任务。当前训练配方采用 30 FPS,历史部署记录使用 15 Hz;复现时应核对数据采样与动作执行的时间定义,并在实际生效的配置中统一设置。

同时检查 normalizer 的正反变换,并将 train/val 按 episode 划分。完成这些检查后,先运行少量 step,确认训练、保存和恢复都正常,再开始长时间训练。

4.3 转换权重并启动训练

将 HF 权重转换为训练使用的 DCP:

1
2
3
python -m cosmos_framework.scripts.convert_model_to_dcp \
--checkpoint-path "$HF_COSMOS3_NANO" \
-o "$BASE_CHECKPOINT_PATH"

历史训练入口使用 action_policy_astribot_repro.toml。主要配置包括学习率、batch、token 上限、activation checkpointing 和保存间隔。token 上限对应的 override 路径是 model.config.max_num_tokens_after_packing。

1
2
3
4
5
6
7
8
9
10
11
12
13
export ASTRIBOT_TASK_PROMPT="Put the blue block on the table into the right plate, and the red block into the left plate."
export NPROC_PER_NODE=8
export PYTORCH_ALLOC_CONF=expandable_segments:True

# 先跑 5 步,检查样本、训练和保存流程。
export IMAGINAIRE_OUTPUT_ROOT=outputs/smoke_astribot
export EXTRA_TAIL_OVERRIDES="trainer.max_iter=5 checkpoint.save_iter=5 dataloader_train.max_samples_per_batch=4"
bash examples/launch_sft_action_policy_astribot.sh
unset EXTRA_TAIL_OVERRIDES

# 正式训练使用独立输出目录。
export IMAGINAIRE_OUTPUT_ROOT=outputs/nano_astribot
bash examples/launch_sft_action_policy_astribot.sh

训练时分别观察 video loss、action loss、学习率、显存和 s/iter。续训前检查 latest_checkpoint.txt,确保恢复的是预期 step,并保留相同的数据和 normalizer。

4.4 导出部署权重

以下以记录中的 6000 步 checkpoint 为例:

1
2
3
4
5
6
7
8
export RUN_DIR=/zhaodongyu/outputs/train/cosmos3_action_astribot/action_sft/action_policy_astribot_repro
export CHECKPOINT="$RUN_DIR/checkpoints/iter_000006000"
export EXPORT_DIR="$RUN_DIR/model_hf_iter_000006000"

PYTHONPATH=. python -m cosmos_framework.scripts.export_model \
--checkpoint-path "$CHECKPOINT" \
--config-file "$RUN_DIR/config.yaml" \
-o "$EXPORT_DIR"

模型权重、训练配置、动作定义和 normalizer 应一起保存。目录名带上 step,后续切换模型和比较结果会清楚很多。

4.5 启动服务并接入机器人

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export MASTER_ADDR=127.0.0.1
export MASTER_PORT=29517
export WORLD_SIZE=1
export RANK=0
export LOCAL_RANK=0

PYTHONPATH=. python -m cosmos_framework.scripts.action_policy_server_robolab \
--checkpoint-path "$EXPORT_DIR" \
--domain-name astribot \
--action-dim 25 \
--action-chunk-size 32 \
--conditioning-fps 15 \
--num-steps 4 \
--resolution 480 \
--port 8000

已有服务记录使用 joint position、quantile 归一化、4 步 UniPC、guidance 3 和 shift 5。客户端发送三相机图像、25D 状态及指令,服务返回 [32,25] 动作。

接入前先检查 /healthz,再用保存的观测完成一次推理,核对动作量级、夹爪方向和关节限位。历史服务出现过 transform 配置读取失败后自动回退的情况,因此启动成功后仍需确认实际使用的 transform 与训练一致。

5. 部署性能与实时性

5.1 Edge 在 RTX 5090 上的实测

以捡方块任务为例,Cosmos3-Edge 的端侧部署呈现出很直接的速度与平滑性取舍:

降噪采样步数 单次推理耗时 动作表现 适用方向
4 步 约 680 ms 响应快,但动作有些抖动 低延迟闭环的优化起点
50 步 约 7.5 s 动作平滑很多 平滑性参照、允许等待的分段执行
Cosmos3-Edge 在 RTX 5090 上的采样步数与推理延迟

从 4 步增加到 50 步,推理耗时约增加到 11 倍。更多步数改善了这次测试中的动作平滑性,但还需要结合抓取和任务得分判断整体收益。benchmark 评分表未记录采样步数,因此不将 8.7 分归属于某一档配置。

5.2 部署怎样取舍

先在 4—50 步之间寻找满足平滑性要求的最小采样步数。 下一轮可固定 checkpoint、指令与初始摆放,依次测试 8、12、16、20 步,同时记录任务得分、动作抖动、整体完成时间和推理 p50/p95。这些中间档位尚未实测,不能按两端耗时直接认定最佳值。

如果沿用 32 步动作和 15 Hz 执行频率,一个动作块覆盖约 2.13 秒。4 步推理约占这一预算的 32%,有机会与执行重叠;50 步耗时约为预算的 3.5 倍,连续控制会明显等待。若每次只执行动作前缀,预算还会更短,例如执行 8 步只有约 0.53 秒,即使 680 ms 也可能跟不上。实际部署需按控制器频率重新计算。

在选步数之外,可以逐项尝试动作块衔接、重叠段融合、适度插值或关节速度/加速度约束,观察抖动来自单块内部还是两块交界。平滑处理会增加滞后,夹爪开合也应单独处理。异步推理可隐藏部分等待,但不能持续弥补动作产出速度低于消耗速度的问题。

当前服务通过 --num-steps 调整步数;decode_video=False 仅跳过视频解码,仍保留联合去噪中的视觉计算。

5.3 Nano / A100 的早期部署记录

一次 Nano 请求总耗时为 4532.6 ms,其中模型推理 2960.6 ms、预处理 52.4 ms、后处理 0.1 ms,另有约 1.52 秒尚未被分项计时覆盖。

Nano A100 推理耗时与动作时间预算

这条记录保留用于回顾早期服务瓶颈。它与后来的 Edge / 5090 属于不同模型和运行配置,不能把差距全部归因于显卡。当前部署决策应优先围绕 Edge 的端到端时延、动作稳定性和任务得分展开。

5.4 硬件算力与带宽参考

下表整理了现有的硬件参数,便于对照各平台的计算能力和带宽。

指标 A100 RTX 5090 H20 Thor
FP16 312 TFLOPS 209.5 TFLOPS 148 TFLOPS 约 258 TFLOPS
FP8 / INT8 624 TOPS 419 TFLOPS 296 TFLOPS 517 TFLOPS
带宽 2039 GB/s 1792 GB/s 4000 GB/s 273 GB/s

实际部署还要结合使用精度、稀疏计算设置、显存容量和端到端耗时。对捡方块任务而言,最终仍以动作质量和完成效率来选择配置。

6. 捡方块实机测试与模型对比

测试使用 2 红 2 蓝四个方块,目标为蓝块进右盘、红块进左盘,共 20 种初始摆放。评分说明为正确完成一块计 2.5 分,满分 10 分;超时则按已完成情况计分。

Benchmark 捡方块结果记录共包含以下 6 组配置。均值由各组 20 次得分重新计算,满分比例按得分为 10 分的次数统计。

模型 训练记录 精度 平均得分 / 10 满分次数 满分比例
pi0 50k step,29 epoch FP32 6.600 7 / 20 35%
pi0 100k step FP32 5.700 6 / 20 30%
pi0 100k step BF16 5.325 7 / 20 35%
Cosmos3-Edge 20k step 未注明 8.725 13 / 20 65%
fastwam 30 epoch 未注明 4.375 4 / 20 20%

在这批测试中,Cosmos3-Edge 的平均得分和满分比例均为最高,平均分比 pi0 50k / FP32 高约 2.1 分。pi0 的 100k 配置也没有超过其 50k 配置,说明更长训练未必对应更好的实机表现;这不直接决定 Cosmos3 的最佳停止步数。各组训练步数、精度和部署配置不同,比较结果反映的是本次测试中的表现。

捡方块任务六组模型配置的逐次评分

各行对应同一组 001—020 摆放编号。原表包含 1.5、3、4、6.5 等非 2.5 分档的数值,此处沿用原始评分。完整数据见 全部模型逐次评分 CSV。

Cosmos3-Edge 的低分集中在少数摆放,007、016、020 分别为 6.5、5、3 分,值得优先回看。其 13 次满分对应 65% 满分比例;平均分 8.725 / 10 不应直接换算成任务成功率。

这批 20 段实机录像均为 1280×720、15 FPS,总时长约 35 分 55 秒。下面先放一段满分试验(trial 001)的实机录像,再给出全部录像的取帧总览。

Cosmos3-Edge 20k,捡方块 trial 001(满分 10/10),约 62 秒。

以下总览覆盖前 10 段录像,按 2%、25%、50%、75%、98% 的进度取帧,仅展示相机画面。

Edge 20k 实机录像 001—005
Edge 20k 实机录像 006—010

画面中可看到抓取和分盘过程,也有混放、未全部归位等现象。后续应结合评分回看低分试验,区分颜色对应错误、抓取失败、重复尝试和等待时间。录像长度包含启动或重置,不能直接作为成功耗时。

完整内容见下方 011—020 总览。

Edge 20k 实机录像 011—015
Edge 20k 实机录像 016—020

7. 反思与下一步

首先,数据适配比想象中更影响结果。 三相机布局、状态与动作时序、25 维通道定义、归一化,任何一个环节偏差都会传到最终控制。后续更换数据或任务时,应先沿着单个 episode 检查输入、标签、模型输出和反归一化结果,再投入长时间训练。

其次,应该更早开始评测,而不是默认训练到 20k。 Edge 的动作 loss 在前几千步下降最快,后期仍有改善;训练曲线无法直接给出最佳停止点。后续应把分项 loss 与固定场景的实机表现对应起来,判断继续训练是否值得。

最后,部署需要同时考虑响应速度与动作质量。 Edge / 5090 的 4 步配置已经较快,但抖动会影响抓取;50 步更平滑,却让等待和观测过时成为新问题。合适的配置应在任务得分、整体耗时和动作稳定性之间取舍,而不是单独追求最快或最平滑。

接下来优先做三件事:

  1. 分析低分试验。 结合已有 8.7 分的平均成绩,优先回看 007、016、020,并统一非 2.5 分档的评分说明,归纳主要失败原因。
  2. 确定合适的训练时长。 比较 Edge 的 5k、10k、15k、20k checkpoint,在任务表现相当时优先选择训练成本更低的版本。
  3. 确定端侧采样配置。 在 5090 上补测 8、12、16、20 步,固定执行策略,比较抖动、任务得分和完成时间,再调整动作块衔接。

每次运行只需把模型 step、数据版本、normalizer、主要配置和对应视频关联起来。这样下次复盘时,就能直接回答“哪次改动改善了什么”,减少重新翻找命令和文件的时间。

8. 相关资料