Generating a Sparse Model - 3.5 English

Vitis AI User Guide (UG1414)

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 English

Call sparse_model() to get a sparse model. This method finds all the nn.Conv2d / nn.ConvTranspose2d and nn.BatchNorm2d modules replace those modules with DynamicConv2d / DynamicConvTranspose2d and DynamicBatchNorm2d. This method replaces the nn.Conv2d / nn. linear layers that meet the sparsity condition with SparseConv2d / SparseLinear.

This method supports nn.Conv2d / nn. linear weights and activations for simultaneous pruning. The sparsity of activations can be 0 or 0.5. When the sparsity of activations is 0, the sparsity of weights can be 0, 0.5, or 0.75. When the sparsity of activations is 0.5, the sparsity of weights can only be 0.75. block_size is the number of consecutive elements of the input channel. The channel unfolded according to the weights/activation. It is set to 4, 8, or 16. So, the convolution with the weight of the input channel greater than 16 is replaced with sparse convolution.

sparse_model = sparse_pruner.sparse_model(w_sparsity=0.5,a_sparsity=0,block_size=4)

Retraining the sparse model is the same as training a baseline model. Knowledge distillation can achieve better accuracy.