HCCL AHC算法详解:面向非对称层次拓扑的集合通信拼接方案
HCCL AHC算法详解面向非对称层次拓扑的集合通信拼接方案【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl导读AHCAsymmetric Hierarchical Concatenate非对称层次化拼接是 CANN HCCL 集合通信库中面向层次化网络拓扑的 AllReduce 加速算法。当通信域横跨多个超节点、且各超节点卡数不一致如 64 卡与 128 卡并存、层次间存在带宽收敛时传统层次化算法会因卡数不对称而失效AHC 通过拓扑分组 逻辑同号卡非对称拼接将数据切片重组为可并行执行的 ReduceScatter / AllReduce / AllGather 流水从而在非对称拓扑下保持高性能。读完本文你将掌握 AHC 的核心思想、三阶段执行流程、逻辑同号卡划分原理、耗时模型以及如何通过 HCCL_ALGO 环境变量在 HCCL 中启用该算法。一、背景与挑战为什么需要 AHC现代大规模训练集群通常呈现层次化的网络特征超节点内部如单超节点 64 卡或 128 卡使用高速互联超节点之间通过网络互联且层间带宽相对层内存在收敛。这种拓扑给集合通信带来两大技术挑战依据 AHC.md 的算法描述带宽收敛导致单层算法性能下降由于不同区域之间存在带宽收敛传统单层集合通信算法如全局 Ring会把瓶颈暴露在收敛链路上整体性能被严重拉低。卡数非对称使常规层次化算法失效不同区域的计算单元数量不同。例如一个通信域横跨两个超节点一个超节点有 64 张卡、另一个有 128 张卡。常规层次化算法如先组内规约再组间规约的固定分桶方式依赖各组卡数一致或按固定比例分配数据面对非对称分组时负载无法均衡性能面临巨大挑战。AHC 正是为**同时解决带宽收敛与卡数非对称**这两个问题而设计的组内充分利用高速网络带宽组间通过逻辑同号卡实现非对称拼接让不同大小的分组之间仍能高效协同完成全量数据规约。二、算法核心思想与执行流程AHC 的核心思想是基于拓扑将通信域内 NPU 及 NPU 上的数据重新分组组内充分利用高速网络带宽组间实现基于逻辑同号卡的非对称拼接。整体流程如下图所示5 个 rank划分为 2 3 两个分组AHC基于逻辑同号卡实现AllReduce过程5个rank23两个分组算法实现分为三个步骤步骤一基于物理拓扑分组并执行组内 ReduceScatter拓扑分组临近的 NPU 划分为一个 group。各组内卡数无需一致这正是与常规层次化算法的关键差异组间带宽相比组内可能存在收敛。求解最小公倍数并切分数据求解所有分组数的最小公倍数 LCMLeast Common Multiple。若有 G 个分组则将数据划分为LCM × G个切片。以文档示例为准分组为 2 和 3则 LCM 6、G 2数据被切分成 12 份切片。这里的数学意义在于LCM 保证每个分组都能把数据按自身卡数均分为整数份从而让后续的逻辑同号卡一一对应成立。组内并行执行标准 ReduceScatter每个分组内部并行执行标准的 ReduceScatter将本组负责的数据块规约到组内各卡。步骤二划分逻辑同号卡并执行组间 AllReduce这是 AHC 最核心、最具辨识度的环节按数据边界切分将每个 group 中待执行 reduce 操作的数据按照 group 内各 NPU 卡间的数据边界进行切分形成若干不均匀的数据块由于各组卡数不同数据块天然不均匀。建立跨组对应关系每个 group 中的每份数据在其他所有 group 中各有一份对应的、大小相同的数据。按照这种数据对应关系group 之间的 NPU 也建立起一一对应的关系存在对应关系的 NPU 被称为逻辑同号卡。逻辑同号卡间执行 AllReduce在所有 group 对应的逻辑同号卡之间执行 AllReduce 操作把分散在不同分组中的同号数据汇聚规约。逻辑同号卡机制的精妙之处在于它把非对称分组重新映射为对称的同号卡集合。尽管每个分组内卡数不同但通过 LCM 切分与数据边界对齐每个分组的每份数据都能在其他分组中找到大小完全相同的对应数据从而将非对称问题转化为一组对称的 AllReduce 子问题。步骤三组内 AllGather 还原全量数据各 group 内的 NPU 之间执行 AllGather 操作将规约后的结果广播回组内每张卡完成整个 AllReduce 语义。内部拼接算法的可替换性文档明确指出具体的组内和组间的 ReduceScatter、AllGather、AllReduce 等操作其实现算法可以是任意已知算法如 NB、NHR、Ring 等。当前 AHC 算法内部会根据具体场景和策略选择性能更优的拼接算法类型。这意味着 AHC 本质是一个编排框架而非固定不变的通信原语其底层原语的选择与 NB、NHR、Ring 等算法相互解耦、灵活组合。三、耗时计算模型当组内和组间都采用 NB 算法时AllReduce 算子的算法耗时如下表所示操作耗时ReduceScatter$2(\lceil \log(md)\rceil \lceil \log(G)\rceil)\alpha 2(\frac{md-1}{md} \frac{(G-1)\cdot C}{Gm})n\beta (\frac{md-1}{md} \frac{G-1}{Gm})n\gamma$其中各符号含义为m最小分组数m d最大分组数d 表示最大与最小分组数之差G分组数C组间带宽相对于组内带宽的收敛比α单次通信的启动开销时延项β单位数据的传输时间带宽项反比于带宽γ单位数据的计算时间计算项n数据总量。从公式结构可以直观看出 AHC 的耗时构成此分析依据文档公式推导属于从公式结构可推断的结论时延项$2(\lceil \log(md)\rceil \lceil \log(G)\rceil)\alpha$由组内 NB 的 $\log(md)$ 层级与组间跨 G 个分组的 $\log(G)$ 层级共同决定呈对数增长说明 AHC 对大规模分组数的扩展性较好带宽项$2(\frac{md-1}{md} \frac{(G-1)\cdot C}{Gm})n\beta$组间部分被收敛比 C 放大C 越大层间带宽收敛越严重组间传输代价越高这也解释了文档中层次间存在带宽收敛时 AHC 相对收益会更好的判断前提——收敛场景下相比单层算法把所有数据压到收敛链路AHC 仅在逻辑同号卡之间搬运经过组内预规约后的数据收敛链路承载量大幅减少计算项$(\frac{md-1}{md} \frac{G-1}{Gm})n\gamma$随分组数 G 增加而增加但被 m 稀释体现了组内预规约带来的计算分摊效果。四、在 HCCL 中的配置与源码映射4.1 环境变量配置AHC 属于**拓扑组合第 1 层level1Server 间通信算法**的算法类型通过 HCCL_ALGO 环境变量配置。依据 HCCL_ALGO.md 的说明适用场景通信域内 NPU 分布存在多个层次、多个层次间 NPU 对称或非对称分布即卡数非对称的场景当通信域内层次间存在带宽收敛时相对收益会更好。关键约束当 level1Server 间通信算法配置为 AHC 时level2超节点间通信算法将自动采用 AHC 算法无需另行配置即使 level2 设置了其他算法这些设置也不会生效。配置示例以命令行形式传入export HCCL_ALGOlevel0:NA;level1:AHC若需要对特定算子单独配置可使用HCCL_ALGOoplevel配置的分段语法例如export HCCL_ALGOAllReducelevel0:NA;level1:AHC注意level0 通常配置为NA不指定表示节点内算法由 HCCL 根据拓扑自动选择这与 alg_env_config.cc 中 expect: level0:NA;level1: 的合法格式约束一致。4.2 源码中的算法类型映射在仓库源码中AHC 有完整的类型定义与解析链路对外算法枚举alg_type.h 中定义HCCL_ALGO_TYPE_AHC与HCCL_ALGO_TYPE_AHC_BROKEAHC_BROKE 为 AHC 的变体同样属于拓扑组合 1 层算法见 alg_type.h 中ALG_LEVEL1_AHC与ALG_LEVEL1_AHC_BROKE的注释拓扑组合1层。字符串映射对内算法名映射表中将ALG_LEVEL1_AHC映射为字符串 AHCalg_type.h。环境变量解析alg_env_config.cc 中解析器ParserHcclAlgoLevel将配置字符串AHC与AHC_BROKE分别解析为HCCL_ALGO_TYPE_AHC与HCCL_ALGO_TYPE_AHC_BROKE同时 alg_env_config.h 中也登记了二者的名称映射。算子侧应用以 Scatter 算子为例scatter.cc 在处理HCCL_ALGO_TYPE_AHC与HCCL_ALGO_TYPE_AHC_BROKE时会将对应的内部算法类型置为ALG_LEVEL1_AHC/ALG_LEVEL1_AHC_BROKE进而驱动后续拓扑编排与执行。从源码结构可以推断AHC 在 HCCL 内部被纳入三层次算法类型level0 节点内 / level1 Server 间 / level2 超节点间的层级体系alg_type.h其默认的三层组合由TagAlgType构造时初始化为 Whole Ring当用户通过环境变量显式指定 level1 为 AHC 时即覆盖该层默认值。五、与其他算法的关系AHC 在算法家族中定位为面向非对称层次拓扑的拼接型算法与同文档体系下的其他算法互补与 Ring、Mesh 等单层基础算法相比AHC 解决的是多层级、非对称场景与 NHR、NB 等层次化算法相比AHC 不要求各分组卡数一致且其内部底层原语可以动态选择 NB、NHR、Ring 等实现与 Pipeline 等同样面向超节点互联的算法相比AHC 通过逻辑同号卡把非对称分组映射为对称子问题而非依赖对称分桶假设。关于更广义的分组内 / 分组间层次化通信原理可参考 分级通信原理 以及完整的 集合通信算法介绍 索引。结语AHC 是 HCCL 针对带宽收敛 卡数非对称双挑战给出的工程化答案用拓扑分组规避带宽收敛瓶颈用 LCM 切分与逻辑同号卡化解非对称难题再用可替换的底层算法NB/NHR/Ring 等保证组内组间原语的性能弹性。理解 AHC 的同号卡拼接模型不仅有助于在实际集群如 64 卡与 128 卡超节点混布场景中正确配置 HCCL_ALGO 环境变量也能为设计其他非对称拓扑下的集合通信算法提供直接的参考范式。【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →