下载
中文
注册

LinearSparseOperation

功能

稀疏量化Linear。

该算子实现功能与量化linear类似。不同点在于稀疏量化算子会使用压缩工具提前对weight输入进行压缩,以此提升算子性能。

定义

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

参数列表

成员名称

类型

默认值

描述

transposeA

bool

false

是否转置A矩阵,默认不转置。当前仅支持transposeA = true。

transposeB

bool

true

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

tilingK

uint32_t

1

压缩参数,由外部压缩算法决定,目前仅支持取值为8。

tilingN

uint32_t

1

压缩参数,由外部压缩算法决定,目前仅支持取值为8。

输入

参数

维度

数据类型

格式

描述

x

[m, k]

int8

ND

矩阵乘运算的A矩阵。

m需小于等于256,k为64的整数倍且大于256.

weight

[c]

int8

ND/NZ

权重,矩阵乘的B矩阵。

通过压缩工具压缩后的权重,shape大小c的值大于0且不大于k * n。

bias

[1, n] 或 [n]

int32

ND

叠加的偏置矩阵。n为64的整数倍且大于等于128。

deqScale

[1, n] 或 [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

[m, n]

float16

ND

输出tensor,维度数与x一致。

规格约束

  • 输入x / weight原维度,通过transposeA / transposeB配置要满足矩阵乘的维度关系。
  • 输入weight的维度c由压缩工具(如ModelSlim)计算而来,满足c大于0且小于k * n。
  • 该算子仅支持在Atlas 推理系列产品中进行运算。
  • 参数tilingK和tilingN由压缩算法决定,目前均只支持取值为8。