--sparsity
功能说明
Atlas 200/300/500 推理产品场景下,不支持该参数。
Atlas 推理系列产品场景下,不支持该参数。
Atlas 训练系列产品场景下,不支持该参数。
使能全局稀疏特性。
AMCT(简称AMCT)4选2结构化稀疏后输出的模型,可能存在weight连续4个Cin维度元素中至少有2个为0的场景,模型转换时通过使能全局稀疏开关,将该场景下的元素筛选成2个,从而节省后续推理的计算量,提高推理性能。其原理如下:
weight中每4个连续的元素,会生成两组2bit的index。index取值范围为{0, 1, 2},其中,第一个index表示前三个元素里面第1个非0元素的位置;第二个index表示后三个数里面最后一个非0数的位置。最终筛选成的index取值如下表格所示:
场景 |
ele0 |
ele1 |
ele2 |
ele3 |
Index[0] |
Index[1] |
---|---|---|---|---|---|---|
2个非0元素 |
0 |
0 |
X |
Y |
2'b10 |
2'b10 |
0 |
X |
0 |
Y |
2'b01 |
2'b10 |
|
1个非0元素 |
0 |
0 |
0 |
X |
2'b00 |
2'b10 |
0 |
0 |
X |
0 |
2'b10 |
2'b00 |
|
全0元素 |
0 |
0 |
0 |
0 |
2'b00 |
2'b00 |
由于稀疏矩阵每4个int8元素将生成2个2bit的index和2个int8的稠密weight的元素,一个index为2bit,所以4个index组成一个int8的元素,因此最后输出的index矩阵的大小是稠密weight的1/4。其中:
index矩阵用来记录稀疏weight每4个元素中挑选出2个元素的index,在推理计算时由硬件读取,作为筛选元素的凭据。
各组件交互流程如下图所示:
- AMCT工具对用户提供结构化稀疏的API接口,支持将稠密模型通过重训练的方式转成结构化稀疏的模型;输出基于框架的稀疏模型;模型结构上与稠密模型无差异,但在参数上已经实现了结构化稀疏,连续4个Cin维度元素中有2个为0。
- FE根据sparsity=1,遍历所有支持结构化稀疏的算子类型(当前支持conv2d/matmulV2/fc)里的weight,确认当前的参数分布是否能采用4选2结构化稀疏特性。如果满足要求,将conv2d/matmulV2/fc替换为Conv2dCompress/MmatmulV2Compress/FCCompress,这三个算子原型新增Alg属性来区分使用的特性是weight压缩还是4选2结构化稀疏特性。
- 插入CompressOp(复用weight压缩的CompressOp算子原型,增加Alg属性,用来区分weight压缩和结构化稀疏),完成结构化稀疏的weight重排和index生成。
参数取值
参数值:
- 1:表示开启4选2结构化稀疏。
- 0:不开启稀疏特性。
参数默认值:0
推荐配置及收益
无。
示例
--sparsity=1
使用约束
使用该参数时,请确保模型是稀疏的模型,建议用户使用AMCT(TensorFlow)或AMCT(PyTorch)的组合压缩功能获取,且组合压缩只能是4选2结构化稀疏+量化感知训练模式。