LinearSparseOperation

功能

稀疏量化Linear。

该算子实现功能与量化linear类似。不同点在于稀疏量化算子会使用压缩工具提前对weight输入进行压缩,以此提升算子性能。参数tilingK和tilingN由压缩算法决定,目前均只支持取值为8。 目前该算子仅支持在Atlas 推理系列产品中进行运算。

定义

1
2
3
4
5
6
7
struct LinearSparseParam{
    bool transposeA = false;
    bool transposeB = true;
    uint32_t tilingK =8;
    uint32_t tilingN = 8;
    uint8_t rsv[12] = {0};
};

参数列表

成员名称

类型

默认值

描述

transposeA

bool

false

是否转置A矩阵。在量化场景下,非Atlas 800I A2 推理产品/Atlas A2 训练系列产品Atlas A3 推理系列产品/Atlas A3 训练系列产品仅支持配置为false。

transposeB

bool

true

是否转置B矩阵。在反量化场景下,非Atlas 800I A2 推理产品/Atlas A2 训练系列产品Atlas A3 推理系列产品/Atlas A3 训练系列产品仅支持配置为true。

tilingK

uint32_t

8

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

tilingN

uint32_t

8

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

rsv[12]

uint8_t

{0}

预留参数。

输入

参数

维度

数据类型

格式

描述

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一致。

规格约束