开发者
资源
[object Object]

[object Object][object Object]undefined
[object Object]
  • 接口功能:

    • 完成量化的路由专家GroupedMatMul、Unpermute、AlltoAllv融合并实现与共享专家MatMul并行融合,先计算后通信,支持Pertensor-Pertensor、Mx
  • 计算公式:

    • 路由专家:

      gmmY=(gmmX@gmmWeight)gmmXScalegmmWeightScaleunpermuteOut=Unpermute(gmmY)y=AlltoAllv(unpermuteOut)gmmY = (gmmX @ gmmWeight) * gmmXScale * gmmWeightScale \\ unpermuteOut = Unpermute(gmmY) \\ y = AlltoAllv(unpermuteOut)
    • 共享专家:

      mmY=(mmX@mmWeight)mmXScaleOptionalmmWeightScaleOptionalmmY = (mmX @ mmWeight) * mmXScaleOptional * mmWeightScaleOptional
[object Object]

该算子分为两段式接口,必须先调用[object Object]接口获取入参并根据计算流程计算所需workspace大小以及包含了算子计算流程的执行器,再调用[object Object]接口执行计算。

[object Object]
[object Object]
[object Object]
  • 参数说明

    [object Object]

    gmmXQuantMode、gmmWeightQuantMode、mmXQuantMode、mmWeightQuantMode、commQuantMode的枚举值跟关系如下:

    • 0: 非量化
    • 1: pertensor
    • 2: perchannel
    • 3: pertoken
    • 4: pergroup
    • 5: perblock
    • 6: mx量化
    • 7: pertoken动态量化
  • 返回值

    返回aclnnStatus状态码,具体参见

    第一阶段接口完成入参校验,出现以下场景报错:

    [object Object]
[object Object]
  • 参数说明

    [object Object]
  • 返回值

    返回aclnnStatus状态码,具体参见

[object Object]
  • 确定性计算:
    • aclnnQuantGroupedMatMulAlltoAllv默认确定性实现。
  • e * epWorldSize最大支持256,e表示单卡上的专家数量,最大支持到32,epWorldSize支持2/4/8/16/32/64/128/256;
  • gmmX的shape(A, H1),A为sendCounts之和,H1取值范围(0, 65536);
  • gmmWeight的shape(e, H1, N1),N1取值范围(0, 65536);
  • y的shape为(BSK, N1),第一维其中K的范围[2, 8],BSK为recvCounts之和;
  • mmX是共享专家的左矩阵,shape为(BS, H2),H2的取值范围(0, 12288];
  • mmWeight是共享专家的右矩阵,shape为(H2, N2),N2的取值范围(0, 65536);
  • sendCounts为发送到其他卡的token数,数组大小为e * epWorldSize;
  • recvCounts从其他卡的token数,数组大小为e * epWorldSize;
  • 路由专家和共享专家量化Scale、Mode等均为必选;
  • 低比特通信Mode为必选参数,DType和Scale为可选,当Mode为非0时需要提供DType和Scale;
  • 参数说明里shape使用的变量:
    • BSK:本卡接收的token数,是recvCounts参数累加之和,取值范围(0, 52428800)。
    • H1:表示路由专家hidden size隐藏层大小,取值范围(0, 65536)。
    • H2:表示共享专家hidden size隐藏层大小,取值范围(0, 12288]。
    • e:表示单卡上专家个数,0<e<=32,e * epWorldSize最大支持256。
    • N1:表示路由专家 FFN 的中间层维度,取值范围(0, 65536)。
    • N2:表示共享专家 FFN 的中间层维度,取值范围(0, 65536)。
    • BS:batch sequence size。
    • K:表示选取TopK个专家,K的范围[2, 8]。
    • A:本卡发送的token数,是sendCounts参数累加之和。
    • ep通信域内所有卡的 A 参数的累加和等于所有卡上的 BSK 参数的累加和。
[object Object]

示例代码如下,仅供参考,具体编译和执行过程请参考

说明:本示例代码调用了部分HCCL集合通信库接口:HcclGetCommName、HcclCommInitAll、HcclCommDestroy, 请参考

  • Atlas 350 加速卡:

    [object Object]