开发者
资源
[object Object]

[object Object][object Object]undefined
[object Object]
  • 算子功能:当存在TP域通信时,先进行ReduceScatterV通信,再进行AllToAllV通信,最后将接收的数据整合(乘权重再相加);当不存在TP域通信时,进行AllToAllV通信,最后将接收的数据整合(乘权重再相加),之后完成Add + RmsNorm融合。算子支持特殊专家场景。

  • 计算公式:

rsOut=ReduceScatterV(expandX)ataOut=AllToAllV(rsOut)combineOut=Sum(expertScalesataOut+expertScalessharedExpertX)x=combineOut+residualXy=xRMS(x)gamma,where RMS(x)=1Hi=1Hxi2+normEpsrsOut = ReduceScatterV(expandX)\\ ataOut = AllToAllV(rsOut)\\ combineOut = Sum(expertScales * ataOut + expertScales * sharedExpertX)\\ x = combineOut + residualX\\ y = \frac{x}{RMS(x)} * gamma,\quad\text{where}\ RMS(x) = \sqrt{\frac{1}{H}\sum_{i=1}^{H}x_{i}^{2}+normEps}
[object Object]

相较于[object Object]接口,该接口变更如下:

  • 新增支持特殊专家场景:
    • zeroExpert ≠ 0:通过传入大于0的[object Object]参数使能。

      Moe(oriXOptional)=0Moe(oriXOptional) = 0
    • copyExpert ≠ 0:通过传入大于0的[object Object]参数使能,且需传入有效的[object Object]参数。

      Moe(oriXOptional)=oriXOptionalMoe(oriXOptional) = oriXOptional
    • constExpert ≠ 0:通过传入大于0的[object Object]参数使能,且需传入有效的[object Object][object Object][object Object][object Object]参数。

      Moe(oriXOptional)=constExpertAlpha1OptionaloriXOptional+constExpertAlpha2OptionalconstExpertVOptionalMoe(oriXOptional) = constExpertAlpha1Optional * oriXOptional + constExpertAlpha2Optional * constExpertVOptional
[object Object]

每个算子分为两段式接口,必须先调用 “aclnnMoeDistributeCombineAddRmsNormV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMoeDistributeCombineAddRmsNormV2”接口执行计算。

[object Object]
[object Object]
[object Object]
  • 参数说明

    [object Object][object Object]
    • groupTp 字符串长度范围为[0, 128),不能和groupEp相同,仅在无tp域通信时支持传空。
    • tpWorldSize 取值范围[0, 2],0和1表示无TP域通信,有TP域通信时仅支持2。
    • tpRankId 取值范围[0, 1],同一个TP通信域中各卡的tpRankId不重复;无TP域通信时传0即可。[object Object]
    [object Object]
    • groupTp 当前版本不支持,传空字符即可。
    • tpWorldSize 当前版本不支持,传0即可。
    • tpRankId 当前版本不支持,传0即可。[object Object]
  • 返回值

    aclnnStatus:返回状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]
[object Object]
  • 参数说明

    [object Object]
  • 返回值

    返回aclnnStatus状态码,具体参见

[object Object]
  • 确定性计算:

    • aclnnMoeDistributeCombineAddRmsNormV2默认确定性实现。
  • 接口配套约束:

    • aclnnMoeDistributeDispatchV3接口与aclnnMoeDistributeCombineAddRmsNormV2接口必须配套使用,具体参考
  • 参数一致性约束

    • 调用接口过程中使用的expertIds、xActiveMaskOptional、elasticInfoOptional、groupEp、epWorldSize、moeExpertNum、groupTp、tpWorldSize、expertShardType、sharedExpertNum、sharedExpertRankNum、globalBs、commAlg、zeroExpertNum、 copyExpertNum、constExpertNum参数、HCCL_BUFFSIZE取值所有卡需保持一致,网络中不同层中也需保持一致,且和DispatchV3对应参数也保持一致。
  • 产品特定约束

    • [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:该场景下单卡包含双DIE(简称为“晶粒”或“裸片”),因此参数说明里的“本卡”均表示单DIE。
  • Shape变量约束:

    • A:表示本卡需要分发的最大token数量,取值范围如下:

      • 当globalBs为0时,要满足A >= BS * epWorldSize * min(localExpertNum, K);
      • 当globalBs非0时,要满足A >= globalBs * min(localExpertNum, K)。
    • H:表示hidden size隐藏层大小,取值范围为[1024, 8192]。

    • Bs:表示batch sequence size,即本卡最终输出的token数量,取值范围为0 < Bs ≤ 512。

    • K:表示选取topK个专家,取值范围为0 < K ≤ 16同时满足0 < K ≤ moeExpertNum + zeroExpertNum + copyExpertNum + constExpertNum。

    • localExpertNum:表示本卡专家数量。

      • 对于共享专家卡,localExpertNum = 1
      • 对于MoE专家卡,localExpertNum = moeExpertNum / (epWorldSize - sharedExpertRankNum),localExpertNum > 1时,不支持TP域通信。
  • 环境变量约束:

    • HCCL_BUFFSIZE:调用本接口前需检查HCCL_BUFFSIZE环境变量取值是否合理,该环境变量表示单个通信域占用内存大小,单位MB,不配置时默认为200MB。
      • ep通信域内:设置大小要求 >= 2且满足1024 ^ 2 * (HCCL_BUFFSIZE - 2) / 2 >= BS * 2 * (H + 128) * (epWorldSize * localExpertNum + K + 1),localExpertNum表示MoE专家卡的本卡专家数。
      • tp通信域内:设置大小要求 >= (A * Align512(Align32(h * 2) + 44) + A * Align512(h * 2)) * 2。
  • 通信域使用约束:

    • 一个模型中的aclnnMoeDistributeCombineAddRmsNormV2和aclnnMoeDistributeDispatchV3仅支持相同EP通信域,且该通信域中不允许有其他算子。
    • 一个模型中的aclnnMoeDistributeCombineAddRmsNormV2和aclnnMoeDistributeDispatchV3仅支持相同TP通信域或都不支持TP通信域,有TP通信域时该通信域中不允许有其他算子。
    • [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:一个通信域内的节点需在一个超节点内,不支持跨超节点。
  • 其他约束:

    • moeExpertNum + zeroExpertNum + copyExpertNum + constExpertNum < MAX_INT32,其中MAX_INT32值为2147483647。
    • Atlas 350 加速卡:暂不支持动态缩容。
[object Object]

以[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]为例,调用aclnnMoeDistributeDispatchV3和aclnnMoeDistributeCombineAddRmsNormV2接口,具体编译和执行过程请参考

  • 示例代码如下,仅供参考
    [object Object]