LinearSparseOperation
产品支持情况
硬件型号  | 
是否支持  | 
|---|---|
x  | 
|
x  | 
|
x  | 
|
√  | 
|
x  | 
功能说明
稀疏量化Linear。
该算子实现功能与量化Linear类似。不同点在于稀疏量化算子会使用压缩工具提前对weight输入进行压缩,以此提升算子性能。参数tilingK和tilingN由压缩算法决定,目前均只支持取值为8。
定义
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矩阵。在量化场景下,非  | 
transposeB  | 
bool  | 
true  | 
是否转置B矩阵。在反量化场景下,非  | 
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一致。  | 
约束说明
- 输入x / weight原维度,通过transposeA / transposeB配置要满足矩阵乘的维度关系。
 - 输入weight的维度c由压缩工具(如ModelSlim)计算而来,满足c大于0且小于k * n。
 - 参数tilingK和tilingN由压缩算法决定,目前均只支持取值为8。