AIMET Weight SVD

Weight 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 neural network layer, with kernel (π‘š,𝑛,β„Ž,𝑀) where π‘š is the input channels, 𝑛 the output channels, and β„Ž, 𝑀 giving the height and width of the kernel itself, Weight SVD will decompose the kernel into one of size (π‘š,π‘˜,1,1) and another of size (π‘˜,𝑛,h,𝑀), where π‘˜ is called the rank. The smaller the value of π‘˜ the larger the degree of compression achieved.

The following diagram illustrates this visually. As you can see, Weight SVD decomposes the output channel dimension. Weight SVD is currently supported for Conv and Full-connected layers in AIMET.

../_images/weight_svd.png