昇腾社区首页
中文
注册
开发者
下载

aclnnGroupedMatmulFinalizeRoutingV3

产品支持情况

[object Object]undefined

功能说明

  • 接口功能: GroupedMatmul和MoeFinalizeRouting的融合算子,GroupedMatmul计算后的输出按照索引做combine动作。

    本接口相较于,新增入参tuningConfigOptional,调优参数。数组中的第一个值表示各个专家处理的token数的预期值,算子tiling时会按照该预期值合理进行tiling切分,性能更优。请根据实际情况选择合适的接口。

  • 计算公式:

    • 1.分组矩阵乘法GMM:

      yi=(xi×weighti)scaleiperTokenScaleiy_i=(x_i\times weight_i) * scale_i * perTokenScale_i
    • 2.路由专家与专家输出分配:

      对于每个token j,执行路由与输出专家分配:

      y[rowIndex[i],:]=y[rowIndex[i],:]+yi(j)[jstarti(j)]y[ rowIndex[i] , : ] = y[rowIndex[i], :] + y_{i(j)}[ j - start_{i(j)}]

      其中 i(j)i(j) 是 token j被分配到的专家索引。yi(j)[jstarti(j)]y_{i(j)}[ j - start_{i(j)}]是该token在对应专家下的计算结果。

    • 3.共享专家输出融合:

      y[rowIndex[i],:]=y[rowIndex[i],:]+sharedInputWeight×sharedInput[j,:]y [rowIndex[i],:] = y[rowIndex[i],:] + sharedInputWeight \times sharedInput[j, :]
    • 4.共享专家输出融合:最终输出结果是所有专家输出与共享专家输出,按照rowIndex所有进行合并的结果,计算过程如下:

      y[rowIndex[i],:]=iE[j]yi[jstarti]+sharedInputWeight×sharedInput[j,:]y[rowIndex[i],:] = \sum_{i \in \mathcal{E}[j]} y_i [j - start_i] + sharedInputWeight \times sharedInput[j, :]

      其中E[j]\mathcal{E}[j]是表示分配给token j的专家集合。

函数原型

每个算子分为,必须先调用“aclnnGroupedMatmulFinalizeRoutingV3GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnGroupedMatmulFinalizeRoutingV3”接口执行计算。

[object Object]
[object Object]

aclnnGroupedMatmulFinalizeRoutingV3GetWorkspaceSize

  • 参数说明

    [object Object]
  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:

    • x1仅支持INT8。维度为(m, k),维度m的取值范围为[1,16*1024*8],k支持2048;
    • x2仅支持INT4。当输入为INT32时维度为(e, k, n / 8),输入转为INT4时维度为(e, k, n),e取值范围[1,256],k支持2048,n支持7168。
    • scaleOptional支持INT64。shape支持三维,维度为(e, 1, n),e、n和w的e、n一致。
    • biasOptional支持FLOAT32。e、n和w的e、n一致。
    • offsetOptional支持FLOAT32。shape支持三维,维度为(e, 1, n),e、n和w的e、n一致。
    • perTokenScaleOptional支持FLOAT32。支持一维,维度为(m),m和x的m一致。
    • groupListOptional支持e和w的e一致。
    • sharedInputOptional支持二维,维度为(bsdp,n),bsdp必须小于等于batchSize/e,n和w的n一致。
    • logitOptional支持m和x的m一致。
    • rowIndexOptional支持m和x的m一致。
    • x1、x2、groupListOptional是必选参数,scaleOptional、pertokenScaleOptional、logitOptional、rowIndexOptional、biasOptional,sharedInputOptional是可选参数。
  • 返回值

    返回aclnnStatus状态码,具体参见

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

    [object Object]

aclnnGroupedMatmulFinalizeRoutingV3

  • 参数说明

    [object Object]
  • 返回值

    返回aclnnStatus状态码,具体参见

约束说明

  • 确定性计算:

    • aclnnGroupedMatmulFinalizeRoutingV3默认非确定性实现,[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]支持通过aclrtCtxSetSysParamOpt开启确定性。
  • 伪量化场景支持类型输入和输出支持以下数据类型组合:

    [object Object]undefined
    • 在该场景中,scaleOptional代表per-channel和per-group离线融合的结果。
    • 在该场景中,biasOptional代表离线计算的辅助结果,值要求为8×w×scaleOptional8 \times w \times scaleOptional,并在第一维累加。
    • 该场景支持对称量化和非对称量化。在对称量化时,offsetOptional需要设置为空;在非对称量化时,offsetOptional代表离线计算的辅助结果,即为antiquantOffsetOptional×scaleOptionalantiquantOffsetOptional \times scaleOptional的结果。
    • 在该场景中,antiquantScaleOptional、antiquantOffsetOptional必须设置为空。

调用示例

在[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]上示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]