- 接口说明:接收MOE层EP(Expert Parallelism)域的AllToAllV通信发过来的数据,数据发送端由aclnnMoeDistributeDispatchSetup完成,本接口内完成通信状态确认和数据整理。
注意该接口必须与aclnnMoeDistributeDispatchSetup,aclnnMoeDistributeCombineSetup,aclnnMoeDistributeCombineTeardown配套使用。
每个算子分为两段式接口,必须先调用 “aclnnMoeDistributeDispatchTeardownGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnMoeDistributeDispatchTeardown”接口执行计算。
参数说明
[object Object][object Object]Atlas 350 加速卡:
- groupEp 字符串长度范围为[1, 128),不能和groupTp相同。
- epWorldSize 取值范围[2, 384]。
- epRankId 取值范围[0, epWorldSize)。同一个EP通信域中各卡的epRankId不能重复。
- moeExpertNum 取值范围(0, 512]。
- expertShardType 当前仅支持传0,表示共享专家卡排在MoE专家卡前面。
- sharedExpertNum 当前取值范围[0, 4]。
- sharedExpertRankNum 取值范围[0, epWorldSize / 2]。
- globalBs 当每个rank的Bs数一致场景下,globalBs = Bs * epWorldSize 或 globalBs = 0;当每个rank的Bs数不一致场景下,globalBs = maxBs * epWorldSize,其中maxBs表示单卡Bs最大值。
- commType 当前仅支持0。
- commAlg 当前版本不支持,传空指针即可。
[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:
- groupEp 字符串长度范围为[1, 128),不能和groupTp相同。
- epWorldSize 取值范围[2, 384]。
- epRankId 取值范围[0, epWorldSize)。同一个EP通信域中各卡的epRankId不能重复。
- moeExpertNum 取值范围(0, 512]。
- expertShardType 当前仅支持传0,表示共享专家卡排在MoE专家卡前面。
- sharedExpertNum 当前取值范围[0, 4]。
- sharedExpertRankNum 取值范围[0, epWorldSize / 2]。
- globalBs 当每个rank的Bs数一致场景下,globalBs = Bs * epWorldSize 或 globalBs = 0;当每个rank的Bs数不一致场景下,globalBs = maxBs * epWorldSize,其中maxBs表示单卡Bs最大值。
- commType 当前仅支持0。
- commAlg 当前版本不支持,传空指针即可。
返回值:
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
确定性计算:
- aclnnMoeDistributeDispatchTeardown默认确定性实现。
aclnnMoeDistributeDispatchTeardown接口与aclnnMoeDistributeDispatchSetup,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]参数取值在网络中不同层中也需保持一致,且和[object Object],[object Object],[object Object]对应参数也保持一致。[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:该场景下单卡包含双DIE(简称为“晶粒”或“裸片”),因此参数说明里的“本卡”均表示单DIE。
参数说明里shape格式说明:
A:表示本卡可能接收的最大token数量,取值范围如下:
- 对于共享专家,
- 对于MoE专家,当globalBs为0时,要满足A >=
[object Object]*[object Object]* min([object Object],[object Object]);当[object Object]非0时,要满足A >=[object Object]* min([object Object],[object Object])。 - 对于共享专家,当
[object Object]为0时,要满足A =[object Object]*[object Object]*[object Object]/[object Object];当globalBs非0时,要满足A =[object Object]*[object Object]/[object Object]。
H:表示hidden size隐藏层大小,取值范围[1024, 8192]。
BS:表示batch sequence size,即本卡最终输出的token数量,取值范围为0 <
[object Object]≤ 512。K:表示选取topK个专家,取值范围为0 <
[object Object]≤ 16同时满足0 <[object Object]≤[object Object]。localExpertNum:表示本卡专家数量。
- 对于共享专家卡,localExpertNum = 1
- 对于MoE专家卡,localExpertNum =
[object Object]/ ([object Object]-[object Object]),[object Object]> 1时,不支持TP域通信。
tokenMsgSize:表示每个token在数据通信时的维度信息。
- 非量化场景下,tokenMsgSize = Align256(H)。
- 量化场景下,tokenMsgSize = Align512(Align32(H) + 4 ),其中AlignN(x) = ((x + N - 1) / N) * N。
当前版本暂不支持共享专家。
HCCL_BUFFSIZE:
Atlas 350 加速卡: 调用本接口前需检查
[object Object]环境变量取值是否合理,该环境变量表示单个通信域占用内存大小,单位MB,不配置时默认为200MB。要求 >= 2且满足>= 2 * ([object Object]*[object Object]*[object Object]* Align512(Align32(2 * H) + 44) + ([object Object]+[object Object]) *[object Object]* Align512(2 *[object Object])),[object Object]代表使用MoE专家卡的本卡专家数,其中Align512(x) = ((x + 512 - 1) / 512) * 512,Align32(x) = ((x + 32 - 1) / 32) * 32。[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]: 调用本接口前需检查
[object Object]环境变量取值是否合理,该环境变量表示单个通信域占用内存大小,单位MB,不配置时默认为200MB。要求 >= 2且满足>= 2 * ([object Object]*[object Object]*[object Object]* Align512(Align32(2 * H) + 44) + ([object Object]+[object Object]) *[object Object]* Align512(2 *[object Object])),[object Object]代表使用MoE专家卡的本卡专家数,其中Align512(x) = ((x + 512 - 1) / 512) * 512,Align32(x) = ((x + 32 - 1) / 32) * 32。
通信域使用约束:
- 一个模型中的aclnnMoeDistributeDispatchSetup接口,aclnnMoeDistributeDispatchTeardown接口,aclnnMoeDistributeCombineSetup接口,aclnnMoeDistributeCombineTeardown接口仅支持相同EP通信域,且该通信域中不允许有其他算子。