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 |
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 |
根据以上输入维度,输出维度为:
|
float16 |
ND |