接口功能:进行AlltoAllV通信,将数据写入对端GM。
计算公式:
按MoeDistributeDispatchSetup和MoeDistributeDispatchTeardown算子收集数据的路径原路返还,本算子只做通信状态和通信数据的发送,数据发送后即刻退出,无需等待通信完成,通信状态确认和数据后处理由aclnnMoeDistributeCombineTeardown完成。
注意:该接口必须与aclnnMoeDistributeDispatchSetup、aclnnMoeDistributeDispatchTeardown及aclnnMoeDistributeCombineTeardown配套使用。
该算子分为两段式接口,必须先调用 “[object Object]”接口获取入参并根据计算流程计算所需workspace大小获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“[object Object]”接口执行计算。
[object Object]
[object Object]
[object Object]
参数说明
[object Object]Ascend 950PR/Ascend 950DT:
- 不支持共享专家场景。
- epWorldSize当前取值仅支持2、4、8。
- expertShardType当前仅支持传0,表示共享专家卡排在MoE专家卡前面。
- sharedExpertNum表示共享专家数量,当前不支持共享专家,仅能传入0。
- commQuantMode当前仅支持传入0,表示不进行量化。
- commType取值范围[0, 2],当前仅支持2,表示URMA通路。
- commAlg 当前版本不支持,传空指针即可。
Atlas A3 训练系列产品/Atlas A3 推理系列产品:
- 不支持共享专家场景。
- epWorldSize当前取值仅支持2、4、8。
- expertShardType当前仅支持传0,表示共享专家卡排在MoE专家卡前面。
- sharedExpertNum表示共享专家数量,当前不支持共享专家,仅能传入0。
- commQuantMode当前仅支持传入0,表示不进行量化。
- commType取值范围[0, 2],当前仅支持2,表示URMA通路。
- commAlg 当前版本不支持,传空指针即可。
返回值
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
- 确定性计算:
- aclnnMoeDistributeCombineSetup默认确定性实现。
- aclnnMoeDistributeDispatchSetup接口,aclnnMoeDistributeDispatchTeardown接口,aclnnMoeDistributeCombineSetup接口,aclnnMoeDistributeCombineTeardown接口必须配套使用。
- 调用接口过程中使用的
[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]参数取值所有卡需保持一致,[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]参数取值在网络中不同层中也需保持一致,且和aclnnMoeDistributeDispatchSetup接口、aclnnMoeDistributeDispatchTeardown接口、aclnnMoeDistributeCombineTeardown接口对应参数也保持一致。 - 参数说明里shape格式说明:
- A:表示本卡需要分发的最大token数量,取值范围如下:
- 对于共享专家,当globalBs为0时,要满足A = BS * epWorldSize * sharedExpertNum / sharedExpertRankNum;当globalBs非0时,要满足A = globalBs* sharedExpertNum / sharedExpertRankNum。
- 对于MoE专家,当globalBs为0时,要满足A >= BS * epWorldSize * min(localExpertNum, K);当globalBs非0时,要满足A >= globalBs * min(localExpertNum, K)。
- H:表示hidden size隐藏层大小。取值为[1024, 8192]。当前仅支持4096。
- BS:表示batch sequence size,即本卡最终输出的token数量。取值范围为0 < BS ≤ 512。当前仅支持16。
- K:表示选取topK个专家,取值范围为0 < K ≤ 16同时满足0 < K ≤ moeExpertNum。当前仅支持6。
- localExpertNum:表示本卡专家数量。
- 对于共享专家卡,localExpertNum = 1
- 对于MoE专家卡,localExpertNum = moeExpertNum / (epWorldSize - sharedExpertRankNum)。当前仅支持每卡16个专家。
- 当前不支持共享专家。
- A:表示本卡需要分发的最大token数量,取值范围如下:
- HCCL_BUFFSIZE:
调用本接口前需检查HCCL_BUFFSIZE环境变量取值是否合理,该环境变量表示单个通信域占用内存大小,单位MB,不配置时默认为200MB。
- Ascend 950PR/Ascend 950DT:
- 要求 >= 2且满足>= 2 * (localExpertNum * maxBs * epWorldSize * Align512(Align32(2 * H) + 44) + (K + sharedExpertNum) * maxBs * Align512(2 * H)),localExpertNum需使用MoE专家卡的本卡专家数,其中Align512(x) = ((x + 512 - 1) / 512) * 512,Align32(x) = ((x + 32 - 1) / 32) * 32。
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:
- 要求 >= 2且满足>= 2 * (localExpertNum * maxBs * epWorldSize * Align512(Align32(2 * H) + 44) + (K + sharedExpertNum) * maxBs * Align512(2 * H)),localExpertNum需使用MoE专家卡的本卡专家数,其中Align512(x) = ((x + 512 - 1) / 512) * 512,Align32(x) = ((x + 32 - 1) / 32) * 32。
- Ascend 950PR/Ascend 950DT:
- 通信域使用约束:
- 一个模型中的aclnnMoeDistributeDispatchSetup、aclnnMoeDistributeDispatchTeardown、aclnnMoeDistributeCombineSetup、aclnnMoeDistributeCombineTeardown仅支持相同EP通信域,且该通信域中不允许有其他算子。