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

GroupedMatmulType类型参数:

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

必选

transposeB

bool

true

是否转置 B 矩阵。

非必选

topK

int32_t

0

选取 topK 个专家数量。

必选

outDataType

aclDataType

ACL_DT_UNDEFINED

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

反量化场景必选

rsv[16]

uint8_t

{0}

预留参数。

-

输入输出

规格约束