---
title: --sparsity
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/atctool/atlasatcparam_16_0061.html
sourcePath: /source/zh/canncommercial/900/devaids/atctool/atlasatcparam_16_0061.html
indexId: 8bebaeb71882f42fec3e3784aaf79300c08fb1e5bdc6517ccf53e07f2b0fc6aa72
---
# --sparsity

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | x |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | x |
| Atlas 训练系列产品 | x |


#### 功能说明

使能全局稀疏特性。

AMCT（昇腾模型压缩工具）4选2结构化稀疏后输出的模型，可能存在weight连续4个Cin维度元素中至少有2个为0的场景，模型转换时通过使能全局稀疏开关，将该场景下的元素筛选成2个，从而节省后续推理的计算量，提高推理性能。其原理如下：

weight中每4个连续的元素，会生成两组2bit的index。index取值范围为{0, 1, 2}，其中，第一个index表示前三个元素里面第1个非0元素的位置；第二个index表示后三个数里面最后一个非0数的位置。最终筛选成的index取值如下表格所示：


**表1 筛选规则**

| 场景 | ele0 | ele1 | ele2 | ele3 | index[0] | index[1] |
| --- | --- | --- | --- | --- | --- | --- |
| 2个非0元素 | 0 | 0 | X | Y | 2'b10 | 2'b10 |
| 2个非0元素 | 0 | X | 0 | Y | 2'b01 | 2'b10 |
| 1个非0元素 | 0 | 0 | 0 | X | 2'b00 | 2'b10 |
| 1个非0元素 | 0 | 0 | X | 0 | 2'b10 | 2'b01 |
| 全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，在推理计算时由硬件读取，作为筛选元素的凭据。

各组件交互流程如下图所示：

图1 交互流程

1. AMCT工具对用户提供结构化稀疏的API接口，支持将稠密模型通过重训练的方式转成结构化稀疏的模型；输出基于框架的稀疏模型；模型结构上与稠密模型无差异，但在参数上已经实现了结构化稀疏，连续4个Cin维度元素中有2个为0。
2. GE根据sparsity=1，遍历所有支持结构化稀疏的算子类型（当前支持Conv2D/MatMulV2/FullyConnection）里的weight，确认当前的参数分布是否能采用4选2结构化稀疏特性。插入CompressOp（复用weight压缩的CompressOp算子原型，增加Alg属性，用来区分weight压缩和结构化稀疏），完成结构化稀疏的weight重排和index生成。
3. 如果满足4选2结构化稀疏执行条件，将原始框架支持稀疏特性的算子，比如Conv2D算子替换为Conv2DCompress，该类算子原型新增Alg属性来区分使用的特性是weight压缩还是4选2结构化稀疏特性。


#### 关联参数

无。


#### 参数取值

- 1：表示开启4选2结构化稀疏。
- 0：（默认值）不开启稀疏特性。


#### 推荐配置及收益

无。


#### 示例

```
--sparsity=1
```


#### 使用约束

使用该参数时，请确保模型是稀疏的模型，建议用户使用AMCT（TensorFlow）或AMCT（PyTorch）的组合压缩功能获取，且组合压缩只能是4选2结构化稀疏+量化感知训练模式。
