Repository navigation
feat: 补全 Manager-Based 与 FlashSAC 通用训练和评估能力 - #2529
lemon-star608 wants to merge 6 commits into
Conversation
|
下游新建独立仓库 |
|
可以下移到
建议保留在 UniLab 的部分:
这些 UniLab 改动均不包含 CHORD 任务名或数据集特判;下游只通过公共接口消费。拆分后,UniLab PR 保留通用 bugfix 和能力补全,CHORD 任务、actor、配置及评估语义全部放到 |
|
已按上述边界落实并更新当前 HEAD |
TATP-233
left a comment
There was a problem hiding this comment.
发现两处会影响训练正确性的阻塞问题,建议修复后再合并。
- [P1] 提前 timeout 的 n-step bootstrap 折扣错误
src/unilab/rl/algos/flash_sac/learner.py:694 对所有样本固定使用 gamma**self.n_step。但 accumulator 会在窗口未满 n_step 时因 timeout 提前结束,例如 n_step=3、第 2 步 timeout 时,回报只累计两步,目标应为 R_2 + gamma**2 * V(final_obs),当前却使用 gamma**3。这会系统性低估所有提前 timeout 窗口的 bootstrap 值。请随 replay 样本保存实际窗口长度或逐行 bootstrap discount,并相应修改目标计算。现有 test_flashsac_shortened_n_step_window_keeps_fixed_bootstrap_discount 固化的是错误语义,也应一并修正。
- [P1] resume 丢弃 checkpoint 中的 environment-step 时钟
src/unilab/rl/runtime/offpolicy/double_buffer_runner.py:992-1008 读取、校验并打印 environment_steps,但没有保存或恢复它。随后 logger 在 :1661 从 0 创建,新 collector 的 total_steps 也从 0 开始并覆盖 logger,因此续训后的 TensorBoard step 轴、run summary 和下一 checkpoint 都会丢失续训前的环境步数。请恢复统一的 collector/logger 环境步偏移,并增加“保存→续训→再次保存”的回归测试,验证环境步数连续累计。
|
补充一条范围/架构评审意见:建议本 PR 收敛为 UniLab 通用 bugfix 与框架扩展点,不要将 CHORD 所需的 FlashSAC 算法语义改进一并合入。 建议留在 UniLab:
建议移到
如果 n-step 要完全由下游拥有,需要由下游提供独立算法实现,或先在 UniLab 定义稳定的 learner/objective 扩展点;不建议下游复制 FlashSAC 私有方法。 因此建议先在本 PR 移除 n-step、reward relabel 和 CHORD replay 配方,再合入通用 bugfix 与扩展机制。这样也能缩小前面正确性 review 的处理范围:timeout discount 问题随 n-step 实现移至下游处理,而 resume 时钟问题仍需在上游修复。 |
9f63481 to
b5438e0
Compare
范围
本 PR 只保留 UniLab 通用 bugfix 和框架扩展点,不包含 CHORD 任务、数据集、custom actor 或配方特判。CHORD 下游实现位于独立
chord_unilab仓库,通过官方扩展点消费这些能力。关联 Epic:#2528。
Bug 修复
通用能力补全
viser.pause_on_done支持完成后停止推进并继续显示末帧。Curriculum/*标量可从 env info 经 collector 和 logger 写入 TensorBoard。不在本 PR 范围内
按 review 意见,n-step、raw reward relabel、compact critic replay 及其训练时钟配套改动已移出本 PR,后续单独讨论归属和评审路径。whole-cycle/custom-actor FP16 等新增性能工作也未包含在本 PR。
下游边界
以下内容均由
chord_unilab拥有,不放在 UniLab:n_step=3、reward relabel、compact critic replay、AMP 等 owner 配置。验证
当前 HEAD:
b5438e07。make check:通过(Ruff、mypy、pyright)。make test:2836 passed / 62 skipped / 374 deselected。本次已缩减上游范围,下游 CHORD 配方需要在 replay 能力的归属确定后重新验证。短训练和可视化只验证执行链路,不宣称训练收敛。