稀疏量化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一致。 |