API功能:MoE(Mixture of Experts,混合专家模型)网络中,完成路由专家AlltoAllv、Permute、GroupedMatMul融合并实现与共享专家MatMul并行融合,先通信后计算。
路由专家计算公式:
- ata_out是gmm_x进行AlltoAllv通信的输出结果,后续用于Permute计算。
- permute_out是ata_out进行Permute计算的输出结果,作为路由专家进行GroupedMatMul计算的左矩阵。
- gmm_weight指路由专家进行GroupedMatMul计算的右矩阵。
- gmm_y指路由专家进行GroupedMatMul计算的输出。
共享专家计算公式:
- mm_x指共享专家MatMul计算的左矩阵。
- mm_weight指共享专家MatMul计算的右矩阵。
- mm_y指共享专家MatMul计算的输出。
[object Object]
- gmm_x(
[object Object]):必选参数,AlltoAllv通信与Permute操作后结果作为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数,数据类型支持int,取值大小为e*[object Object],最大为256。 - recv_counts(
[object Object]):必选参数,表示接收其他卡的token数,数据类型支持int,取值大小为e*[object Object],最大为256。 - send_counts_tensor(
[object Object]):可选参数,数据类型支持int,shape为,数据格式支持ND。当前版本暂不支持,使用默认值即可。 - recv_counts_tensor(
[object Object]):可选参数,数据类型支持int,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表示不转置。 - permute_out_flag(
[object Object]):可选参数,Permute结果是否需要输出,true表明需要输出,false表明不需要输出。
- gmm_y(
[object Object]):计算输出,表示最终的计算结果,数据类型与输入[object Object]保持一致,支持2维,shape为。 - mm_y(
[object Object]):计算输出,共享专家MatMul的输出,数据类型与[object Object]保持一致,支持2维,shape为。仅当传入[object Object]与[object Object]才输出。 - permute_out(
[object Object]):计算输出,Permute之后的输出,数据类型与[object Object]保持一致。
- 该接口支持推理场景下使用。
- 该接口支持图模式。
- 单卡通信量范围:[2MB, 100MB]。
- 输入参数Tensor中shape使用的变量说明:
BSK:本卡发送的token数(BS*K=BSK),是send_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:表示选取topK个专家,K的范围[2, 8]。
A:本卡收到的token数,是recv_counts参数累加之和。
EP通信域内所有卡上的A累加和等于所有卡上的BSK累加和。
单算子模式调用
[object Object]图模式调用
[object Object]