Skip to content

motrix_rl: 权重通道上移并泛化为 InferenceBundle 驱动;checkpoint manifest 支持双轨 artifact #161

Closed

Description

@wlgys8

问题

异步训练的权重通道(learner → collector 的 seqlock 双缓冲通道,含 host 与 CUDA-IPC 两种介质)目前位于 motrix_rl_builtin 的 fastsac 插件内,且 payload 形状是硬编码的:

  • WeightChannelShared(obs_dim) 按"一个 actor 的 flat params + 恰好一个 obs normalizer 的统计(mean/std/var/count)"定容;
  • publish(actor, obs_normalizer) 的签名把"一个模块 + 一个 normalizer"写死在协议里。

与 #159 解决的 transition 侧对称,这带来两个问题:携带多个推理模块、多个 normalizer 统计段或版本计数的异步后端无法复用这套已验证的 seqlock 实现;公共传输基建住在具体算法插件包里。

另外,checkpoint 的 manifest 契约只有单一用途维度,没有区分"完整训练态 artifact(resume 用:全部模块 + optimizer + 进度 + RNG)"与"推理 artifact(export/play 用:仅推理模块 + normalizer)",export/play 路径只能从完整训练态里解析。

方案

  1. 新增 motrix_rl/transport/inference_bundle.py:InferenceBundleSpec(命名模块段 + 命名 normalizer 段 + 命名计数器);
  2. weight channel 原语上移 motrix_rl/transport,构造与 publish/receive 改为按 spec 声明、按名寻址;seqlock 协议、双缓冲、介质选择逻辑一行不动;
  3. fastsac 声明 actor + obs_norm 的 spec 迁为首个消费者,运行时行为不变;
  4. checkpoint manifest 契约支持双轨 artifact kind(训练态 / 推理),export/play 的选取逻辑优先解析推理 artifact,无则回退现状(对现有 provider 零影响)。

验收

  • fastsac 既有测试全绿;训练回归(epyc + 4090,g1-walk-flat / g1-wbt-dance,同 seed A/B)吞吐与奖励曲线不倒退——seqlock 通道是热路径;
  • 新增非 fastsac 形状的合成 bundle(多模块段 + 多 normalizer 段 + 计数器)契约测试:publish/receive 一致性、版本号、lag 语义;
  • manifest 双轨 kind 的单元测试。

边界

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