昇腾社区首页
中文
注册

LinearSparseOperation

功能

稀疏量化Linear。

约束

  • 输入x / weight原维度,通过transposeA / transposeB配置要满足矩阵乘的维度关系。
  • 输入weight的维度c由压缩工具(如ModelSlim)计算而来,满足c大于0且小于k * n。
  • 该算子仅支持在Atlas 推理系列产品(配置Ascend 310P AI处理器)中进行运算。

定义

struct LinearSparseParam{
    bool transposeA = false;
    bool transposeB = true;
    uint32_t tilingK = 1;
    uint32_t tilingN = 1;
};

成员

成员名称

描述

transposeA

是否转置A矩阵,默认不转置。

当输入x的维度为3时,transposeA必须为false。

transposeB

是否转置B矩阵,默认转置。当前仅支持transposeB = true。

tilingK

压缩参数,由外部压缩算法决定,默认为1,传入的值需大于0。

tilingN

压缩参数,由外部压缩算法决定,默认为1,传入的值需大于0。

输入

参数

维度

数据类型

格式

描述

x

  1. x: [batch, m, k]

    weight: [c]

  2. x: [m,k]

    weight: [c]

int8

ND

当前只支持int8。

k是32的整数倍。

weight

int8

ND/NZ

当前只支持int8。

bias

[n]

int32

ND

n是16的整数倍。

deqScale

[n]

uint64/int64

ND

反量化的Scale。

compressIdx

[x]

int8

ND

压缩信息,x由以下计算得出。

x = k_index * n_index * 8

k_index = ceil(k1 / tilingK)

n_index = ceil(n1 / tilingN)

k1 = k / 32

n1 = n / 16

其中,ceil()函数为向上取整。

输出

参数

维度

数据类型

格式

output

根据以上输入维度,输出维度为:

  1. output: [batch, m, n]
  2. output: [m ,n]

float16

ND