Skip to content

CHORD FlashSAC:环境、replay 与训练生命周期集成 #2528

Closed

Description

@lemon-star608

目标

为 CHORD 的 Sharpa 双手参考跟踪和 FlashSAC 训练补齐 UniLab 通用能力,使任务能够仅通过官方 entry point、owner YAML 和公共扩展点运行,不在下游维护训练循环或上游特判。

交付方式为一个 integration/chord-flashsac 分支、一个统一 Epic 和一个 Draft PR。

需要补齐的能力

环境与 Manager 生命周期

  • mapped Entity 的公开 body ID 与后端 state-row 语义保持一致,不把 world-body ID 误当作状态行。
  • state-feedback action 可在每个 physics substep 读取公开状态、更新控制并步进,批量 step 的默认语义保持不变。
  • reset、final observation、termination 和 selected-state 生命周期可被任务组合使用。

FlashSAC actor 与优化器

  • custom actor 可声明命名 optimizer parameter groups,并设置独立学习率倍率。
  • residual mean gain/bias 使用真实 Adam parameter group 和倍率,不以梯度缩放代替。
  • LR schedule 与 checkpoint 恢复保留分组语义。
  • 非 whole-cycle compiled + AMP 路径预分配并复用梯度,避免连续 update 中梯度失效。

Off-policy replay 与奖励

  • 支持配置化 n-step pending window,处理 terminated、truncated 和 final observation,bootstrap 使用固定 gamma 幂。
  • 环境发布稳定命名、未加权、pre-dt 的 raw reward terms;replay 可按当前 stage 权重和 dt 重组奖励。
  • stage change 只清理 pending window,不清空 replay。
  • compact critic replay 只存 critic 相对 actor 的 context 后缀,降低显存占用而不改变采样语义。
  • warmup transitions 计入统一 environment-step 预算和课程时钟。

Viser 与评估生命周期

  • Viser 支持完成后停止推进并继续显示最终物理状态。
  • 与 env.auto_reset=false 配合时,可在 reference-end 或 done 后停留末帧,而不是重新开始 episode。
  • 不改变默认无限播放和手动暂停/单步行为。

Curriculum 可观测性

  • 通用 Curriculum/* 标量可从 env info["log"] 经 collector queue 传到 OffPolicyLogger 和 TensorBoard。
  • 保留 latest state,不把 reset info 误当作逐步等价的训练曲线,也不复用 reward-relabel 的 curriculum stage 信号。

提交结构

  1. mapped body state-row 修复。
  2. state-feedback physics substep 生命周期。
  3. custom actor optimizer groups。
  4. n-step、raw-term 和 compact replay,以及统一训练时钟。
  5. compiled AMP 梯度保留。
  6. Viser 完成后保持末帧。
  7. curriculum 指标发布。

工程约束

  • 所有能力属于 UniLab 通用 owner 层,不包含 CHORD 任务名或数据集特判。
  • 下游只使用公共 API 和官方扩展点,不复制上游训练 loop、不 monkey patch、不读取后端私有状态。
  • 保持 device-resident 热路径;日志和 host 传输不得无意进入 step/reset 热路径。
  • 每个语义块包含实现、测试和必要文档,不能用 smoke 代替收敛或数值一致性声明。

验收证据

  • UniLab make test:2841 passed / 61 skipped。
  • CHORD 下游:77 项测试通过,包括真实 Newton reset/step、explicit eval 和配置解析。
  • 真实训练已验证多次 optimizer update、n-step/raw-term relabel、compact critic replay、compiled+FP16 路径。
  • explicit eval 可到达 reference-end 并保持末帧;curriculum 指标已写入真实 TensorBoard event。

这些结果证明训练与评估链路,不代表 CHORD 已收敛或与参考实现数值完全一致。

Activity

  1. lemon-star608 commented on Oct 28, 2026

    @lemon-star608
    CollaboratorAuthor

    范围与审核状态更新:PR #2529 当前仅保留 6 个通用 bugfix/扩展点提交。Epic 中 n-step、raw-term relabel、compact replay 及训练时钟的原始提交结构不再是当前 PR 范围;其中“提前结束窗口使用固定 gamma 幂”的旧 n-step 描述已废止,后续若讨论 n-step,应使用逐样本实际窗口长度对应的 bootstrap discount。

    维护者关于 resume environment-step 时钟的意见仍需上游承接,不能随 n-step 一起视为移出。干净 HEAD 的必要性、默认任务影响和剩余 checkpoint/Curriculum/Viser 测试缺口见:#2529 (comment) 。

  2. lemon-star608 commented on Oct 28, 2026

    @lemon-star608
    CollaboratorAuthor

    该 Epic 已由纯 environment 的 #2535 / #2536 取代。RL、replay、training、logging 与 IPC 已下沉到 CHORD_UniLab,不再沿本 Epic 继续上游化。现关闭本 issue,保留历史讨论与范围记录。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions