开发者
资源
[object Object][object Object]

[object Object][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]
[object Object]
[object Object]
  • gmm_x[object Object]):必选参数,GroupedMatMul计算的左矩阵。数据类型支持[object Object][object Object],支持2维,shape为(A,H1)(A, H1),数据格式支持ND。
  • gmm_weight[object Object]):必选参数,GroupedMatMul计算的右矩阵。数据类型与[object Object]保持一致,支持3维,shape为(e,H1,N1)(e, H1, N1),数据格式支持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为(eep_world_size,)(e*ep\_world\_size,),数据格式支持ND。当前版本暂不支持,使用默认值即可。
  • recv_counts_tensor[object Object]):可选参数,数据类型支持[object Object],shape为(eep_world_size,)(e*ep\_world\_size,),数据格式支持ND。当前版本暂不支持,使用默认值即可。
  • mm_x[object Object]):可选参数,共享专家MatMul计算中的左矩阵。当需要融合共享专家矩阵计算时,该参数必选,数据类型支持[object Object][object Object],支持2维,shape为(BS,H2)(BS, H2)
  • mm_weight[object Object]):可选参数,共享专家MatMul计算中的右矩阵。当需要融合共享专家矩阵计算时,该参数必选,数据类型与[object Object]保持一致,支持2维,shape为(H2,N2)(H2, N2)
  • trans_gmm_weight[object Object]):可选参数,GroupedMatMul的右矩阵是否需要转置,true表示需要转置,false表示不转置。
  • trans_mm_weight[object Object]):可选参数,共享专家MatMul的右矩阵是否需要转置,true表示需要转置,false表示不转置。
[object Object]
  • y[object Object]):表示最终计算结果,数据类型与输入[object Object]保持一致,支持2维,shape为(BSK,N1)(BSK, N1)
  • mm_y[object Object]):共享专家MatMul的输出,数据类型与[object Object]保持一致,支持2维,shape为(BS,N2)(BS, N2)。仅当传入[object Object][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]
  • 图模式调用

    [object Object]