AIMET Spatial SVDΒΆ

Spatial SVD is a tensor decomposition technique which decomposes one large layer (in terms of mac or memory) into two smaller layers. SVD stands for Singular Value Decomposition.

Given a conv layer, with kernel (π‘š,𝑛,β„Ž,𝑀) where π‘š is the input channels, 𝑛 the output channels, and β„Ž, 𝑀 giving the height and width of the kernel itself, Spatial SVD will decompose the kernel into two kernels. One of size (π‘š,π‘˜,β„Ž,1) and one of size (π‘˜,𝑛,1,𝑀), where k is called the rank. The smaller the value of k the larger the degree of compression achieved.

The following diagram illustrates this visually. As you can see, Spatial SVD decomposes both the output channel dimension as well as the size of the conv kernel itself. Spatial SVD is currently supported for Conv layers in AIMET.

../_images/spatial_svd.png