已关闭
[Requirement] 将 BIRS 批量不变性扩展至变长 ReduceScatterV(ReduceScatterVBIRS / ReduceScatterVBIRSInter) #528
Davydov_Danil创建于  7月28日关闭于  12 天前
Davydov_Danil
7月28日 创建

[Requirement] 将 BIRS 批量不变性扩展至变长 ReduceScatterV(ReduceScatterVBIRS / ReduceScatterVBIRSInter)

Issue 类型: Requirement
关联: 扩展已合入 RFC 0001(cann/hccl#657)BIRS(均匀 ReduceScatter);相关 Issue cann/hccl#96、cann/hcomm#139

背景与动机

RFC 0001 已为均匀 HcclReduceScatter 引入 BIRS(Batchsize Invariant ReduceScatter)算法:在 A3(SIO + HCCS 混合拓扑)上对大消息相比 RHD 提升约 25%,并保证确定性规约顺序(bit-identical)。但 RFC 0001 仅覆盖各 rank 接收量一致的场景。

实际业务中存在变长 ReduceScatter 需求(HcclReduceScatterV API:各 rank 的 recvCounts/sendDispls 可不同),典型场景:

  • Mixture-of-Experts 中按专家容量的梯度聚合;
  • 非均衡/动态数据并行的梯度分片;
  • 按负载动态切分的通信。

当前变长场景无批量不变性算法,仍走 RHD/其他路径,无法保证不同 batch 划分下位级一致——这与 RFC 0001 §Background 列举的 RLHF/PPO、vLLM 批量不变性、CI 复现等需求存在缺口。

业务价值

  1. 确定性扩展至变长场景:各 rank 接收量随 batch 动态变化时仍保证 bit-identical 输出。
  2. 性能:A3 大消息变长场景下复用 BIRS 的 SIO + HCCS 并行带宽利用,预期对齐 RFC 0001 提升口径(≥16MB 约 25%)。
  3. API 一致:不新增用户 API,复用 HcclReduceScatterV,通过环境变量选路,对用户透明。
  4. 复用既有开关与基础设施:沿用 HCCL_BIRS_ENABLE + ENABLE_EXPERIMENTAL=ON 双闸与 experimental 公共件(op_common_experimental、topo_experimental、alg_template_base_experimental)。

大致技术方案

在 experimental/ops/reduce_scatter_v/birs/ 下新增 BIRS 的变长模板(代码已就位,本 Issue/RFC 用于补齐流程合约):

组件 位置 职责
ReduceScatterVBIRS birs/template/reduce_scatter_v_birs.{cc,h} 单服务器(Intra)变长 BIRS 模板
ReduceScatterVBIRSInter birs/template/reduce_scatter_v_birs_inter.{cc,h} 跨服务器(Inter)变长 BIRS 模板,继承 ReduceScatterVBIRS
ReduceScatterVBIRSExecutor birs/reduce_scatter_v_birs_executor.{cc,h} Executor:CalcResRequest/KernelRun/SelectAndPrepareBirsVTemplate,按是否单服务器选 Inter/Intra
入口 ReduceScatterVExperimental / MatchBIRSV reduce_scatter_v_op_experimental.{cc,h} HcclReduceScatterV → 环境变量选路

关键差异(相对均匀 BIRS):

  • slices_ 由外部按 sendDispls/sendCounts 传入变长切片;
  • 每轮传输量取目标 rank 的 slices_[rank].size;
  • scratch 以 localStrideSize(RoundUp(maxSliceSize, HCCL_MIN_SLICE_ALIGN_910B))为统一步长;
  • Inter 变体跨服务器批量规约以 localStrideSize * serverNum_ 为单位连续传输:各 rank 接收量一致时与原 BIRS 完全等价;不一致时 SUM 保证正确(scratch 对应区域清零),PROD/MAX/MIN 建议各 rank 接收量保持一致(约束写入文档与错误日志);Intra 变体(ReduceScatterVBIRS)对所有规约均完全正确。

约束与适用条件

  • 平台:A3 服务器(SIO + HCCS 混合拓扑)。
  • rankSize:偶数(典型 4 / 8 / 16)。
  • 切片对齐:满足 HCCL_MIN_SLICE_ALIGN_910B。
  • Inter 非均匀接收量下仅 SUM 保证正确;PROD/MAX/MIN 建议均匀(约束显式落文档与日志)。
  • 不满足约束时退出并打日志,回退既有算法。

验收标准

  • 变长 ReduceScatterV 在 A3、SUM/MAX/MIN/PROD、FP16/FP32/BF16、rankSize 4/8/16 下功能正确。
  • 批量不变性:相同输入、不同 batch/划分下输出 bit-identical。
  • 性能:大消息(≥16MB)相比 RHD 有可测提升(对齐 RFC 0001 口径,算子执行时间不含 submission 开销)。
  • HCCL_BIRS_ENABLE=FALSE(默认)时既有 ReduceScatterV 行为不受影响(回归)。
  • 含 UT + ST;走 experimental 双闸默认关闭。

测试要求

  • ST:test/st/algorithm/testcase/ 下新增变长 BIRS 用例(参考既有 reduce_scatter_testcase_a3.cc)。
  • UT:executor/selector/template 关键路径单测。
  • 批量不变性专项用例(变 batch、变划分、变 rank 接收量)。
  • 性能用例(对比 RHD,Task Duration)。

后续流程

依 CONTRIBUTING.md「增加新功能或新特性」:本 Issue 经 SIG 接纳(accepted)后 → 提交取号 PR(在 docs/zh/rfcs/INDEX.md 占位 0002,状态 reserved)→ 按 docs/zh/rfcs/0000-template.md 撰写 RFC 文档 PR → 评审合入(accepted)→ 代码 PR(experimental/)合入。

likedislike
DDavydov_Danil
7月28日 修改了issue 的描述
DDavydov_Danil
7月28日 关联了pull request:将 BIRS 批量不变性扩展至变长 ReduceScatterV(ReduceScatterVBIRS / ReduceScatterVBIRSInter)
Leewis成员
7月29日 评论:
likedislike
CANN-robotCANN-robot成员
7月29日 将 Leewis 设为负责人
CANN-robotCANN-robot成员
7月29日 将 Davydov_Danil 设为负责人,移除负责人 Leewis
LLeewis成员
7月31日 关联了看板:HCCL
LLeewis成员
9月2日 移除了看板:HCCL
LLeewis成员
9月2日 关联了看板:HCCL
LLeewis成员
9月8日 issue类型由 任务 改变为 需求
Leewis成员
12 天前 评论:
likedislike
LLeewis成员
12 天前 issue状态由 待办的 改变为 已解决
LLeewis成员
12 天前 关闭了 issue
LLeewis成员
12 天前 移除了看板:HCCL
CANN-robotCANN-robot成员
12 天前 添加了label:resolved