GroupedMatmulWithRoutingOperation

功能

在MOE中,实现topK个专家权重与token激活值的乘法。

使用场景

UP:根据各个专家的权值,将token值分配给topK个专家

DOWN:根据各个专家的权值,将topK个专家计算的结果重新整合

计算过程

定义

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
struct GroupedMatmulWithRoutingParam {
    enum GroupedMatmulType : int {
        GROUPED_MATMUL_UP = 0, 
        GROUPED_MATMUL_DOWN  
    };
    bool transposeB = true;
    int32_t topK = 0;
    GroupedMatmulType groupedMatmulType = GROUPED_MATMUL_UP;
    aclDataType outDataType = ACL_DT_UNDEFINED;
    uint8_t rsv[16] = {0};
};

参数列表

成员名称

类型

默认值

取值范围

是否必选

描述

groupedMatmulType

GroupedMatmulType

GROUP_MATMUL_UP

  • GROUP_MATMUL_UP
  • GROUP_MATMUL_DOWN

必选

GroupedMatmulType类型参数:

  • GROUP_MATMUL_UP :使用 UP 操作。
  • GROUP_MATMUL_DOWN :使用 DOWN 操作。

transposeB

bool

true

false/true

非必选

是否转置 B 矩阵。

topK

int32_t

0

大于0

必选

选取 topK 个专家数量。

outDataType

aclDataType

ACL_DT_UNDEFINED

  • ACL_DT_UNDEFINED
  • ACL_FLOAT16
  • ACL_BF16

反量化场景必选

  • 非量化场景时,数据类型必须与输入数据类型保持一致。
  • 反量化场景时,必须设置输出数据类型。
  • 可选输出类型:ACL_FLOAT16,ACL_BF16。

rsv[16]

uint8_t

{0}

[0]

-

预留参数。

输入输出

规格约束