[object Object][object Object]
[object Object]API功能:MoE网络中,完成路由专家GroupedMatMul、AlltoAllv融合并实现与共享专家MatMul并行融合,先计算后通信。
路由专家计算公式:
- gmm_x指路由专家GroupedMatMul计算的左矩阵。
- gmm_weight指路由专家GroupedMatMul计算的右矩阵。
- gmm_y指路由专家进行GroupedMatMul计算的输出,后续用于Unpermute计算。
- unpermute_out是gmm_y进行Unpermute计算的输出结果,作为AlltoAllv通信的输入。
- y指对unpermute_out进行AlltoAllv通信输出。
共享专家计算公式:
- mm_x指共享专家MatMul计算的左矩阵。
- mm_weight指共享专家MatMul计算的右矩阵。
- mm_y指共享专家MatMul计算的输出。
[object Object]
- gmm_x(
[object Object]):必选参数,GroupedMatMul计算的左矩阵。数据类型支持[object Object]、[object Object],支持2维,shape为,数据格式支持ND。 - gmm_weight(
[object Object]):必选参数,GroupedMatMul计算的右矩阵。数据类型与[object Object]保持一致,支持3维,shape为,数据格式支持ND。 - hcom(
[object Object]):必选参数,专家并行的通信域名,字符串长度要求(0, 128)。 - ep_world_size(
[object Object]):必选参数,EP通信域size,取值支持8、16、32、64。 - send_counts(
[object Object]):必选参数,表示发送给其他卡的token数,数据类型支持[object Object],取值大小为e*[object Object],最大为256。 - recv_counts(
[object Object]):必选参数,表示接收其他卡的token数,数据类型支持[object Object],取值大小为e*[object Object],最大为256。 - send_counts_tensor(
[object Object]):可选参数,数据类型支持[object Object],shape为,数据格式支持ND。当前版本暂不支持,使用默认值即可。 - recv_counts_tensor(
[object Object]):可选参数,数据类型支持[object Object],shape为,数据格式支持ND。当前版本暂不支持,使用默认值即可。 - mm_x(
[object Object]):可选参数,共享专家MatMul计算中的左矩阵。当需要融合共享专家矩阵计算时,该参数必选,数据类型支持[object Object]、[object Object],支持2维,shape为。 - mm_weight(
[object Object]):可选参数,共享专家MatMul计算中的右矩阵。当需要融合共享专家矩阵计算时,该参数必选,数据类型与[object Object]保持一致,支持2维,shape为。 - trans_gmm_weight(
[object Object]):可选参数,GroupedMatMul的右矩阵是否需要转置,true表示需要转置,false表示不转置。 - trans_mm_weight(
[object Object]):可选参数,共享专家MatMul的右矩阵是否需要转置,true表示需要转置,false表示不转置。
- y(
[object Object]):表示最终计算结果,数据类型与输入[object Object]保持一致,支持2维,shape为。 - mm_y(
[object Object]):共享专家MatMul的输出,数据类型与[object Object]保持一致,支持2维,shape为。仅当传入[object Object]与[object Object]才输出。
- 该接口支持推理场景下使用。
- 该接口支持图模式。
- 单卡通信量范围:[2MB, 100MB]。
- 输入参数Tensor中shape使用的变量说明:
BSK:本卡接收的token数(BS*K=BSK),是recv_counts参数累加之和,取值范围(0, 52428800)。
H1:表示路由专家hidden size隐藏层大小,取值范围(0, 65536)。
H2:表示共享专家hidden size隐藏层大小,取值范围(0, 12288]。
e:表示单卡上专家个数,e<=32,e * ep_world_size最大支持256。
N1:表示路由专家的head_num,取值范围(0, 65536)。
N2:表示共享专家的head_num,取值范围(0, 65536)。
BS:batch sequence size。
K:表示选取top_k个专家,K的范围[2, 8]。
A:本卡发送的token数,是send_counts参数累加之和。
EP通信域内所有卡上的A参数的累加和等于所有卡上的BSK参数的累加和。
单算子模式调用
[object Object]图模式调用
[object Object]