Sitemap

Hessian Eigenvalues for Asymmetric Quantization

3 min readMay 20, 2024

--

Asymmetric Quantization

  • maps floating-points (0.23432, 0.421) to integers (23, 43)
  • ✅ more computationally efficient but ❌ adds accuracy loss
    due to information loss
  • Goal is to minimize loss while keeping efficiency
    by balancing clipping and rounding errors:
Press enter or click to view image in full size
asymmetric neural network quantization error
high clipping error — youtu.be/KASuxB3XoYQ
Press enter or click to view image in full size
asymmetric neural network quantization error
decrease clipping error -> increase rounding error — youtu.be/KASuxB3XoYQ

Hessian Eigenvalues

Hessian Eigenvalues — second-order derivatives of the loss function tell about sensitivity of the model’s parameters.
Large eigenvalues mean highly sensitive parameters to changes and should be quantized with higher precision.

Mathematical Background

The Hessian matrix H of a loss function L with respect to the model parameters θ is defined as:

Press enter or click to view image in full size
Hessian — wikipedia

The eigenvalues λ of this matrix provide information about the curvature of the loss landscape.

Hessian Eigenvalues in Quantization

  1. Compute Hessian
    Use backpropagation to compute the second-order derivatives of the loss function and form the Hessian matrix.
  2. Eigenvalue Decomposition
    Perform eigenvalue decomposition on the Hessian matrix to obtain the eigenvalues.
  3. Adaptive Quantization
    Adjust the quantization levels based on the magnitude of the eigenvalues. Parameters with larger eigenvalues are quantized with more precision.

Example: Calculating Hessian Eigenvalues

Let’s consider a simple neural network with a single hidden layer. The Hessian matrix can be computed using the following steps:

import torch
import torch.nn as nn
import torch.autograd as autograd

# Define a simple neural network
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(10, 5)
self.fc2 = nn.Linear(5, 2)

def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x

# Instantiate the model and define a loss function
model = SimpleNN()
loss_fn = nn.MSELoss()

# Generate dummy input and output
input = torch.randn(1, 10)
output = torch.randn(1, 2)

# Forward pass
pred = model(input)
loss = loss_fn(pred, output)

# Compute the Hessian matrix
hessian = torch.autograd.functional.hessian(loss_fn, (pred, output))

# Perform eigenvalue decomposition
eigenvalues, _ = torch.linalg.eigh(hessian) # eigh - for symmetric matricies
print("Eigenvalues of the Hessian:", eigenvalues)

Adaptive Quantization

With the eigenvalues computed, we can now adjust the quantization levels. Parameters corresponding to larger eigenvalues will be quantized with higher precision.

def adaptive_quantization(param, eigenvalues, bitwidth=8):
max_eigenvalue = max(eigenvalues)
scaling_factor = max_eigenvalue / bitwidth
quantized_param = torch.round(param / scaling_factor) * scaling_factor
return quantized_param

# Apply adaptive quantization to the model parameters
for name, param in model.named_parameters():
param_data = param.data
# Assuming we have eigenvalues for each parameter (in practice, this needs to be computed for each parameter)
quantized_param = adaptive_quantization(param_data, eigenvalues)
param.data.copy_(quantized_param)

Results

Applying this method to models like ResNet-50 and MobileNet has shown significant improvements in accuracy retention compared to traditional asymmetric quantization. For instance, using Hessian eigenvalues, the top-1 accuracy drop on ResNet-50 was reduced from 3.8% to 1.5%.

Conclusion

Leveraging Hessian eigenvalues for asymmetric neural network quantization offers a powerful method to maintain model accuracy while benefiting from computational efficiency. This approach allows for adaptive precision, ensuring critical parameters are accurately represented. By integrating this method into your quantization pipeline, you can deploy high-performance AI models on resource-constrained devices more effectively.

Get Mikkicon’s stories in your inbox

Join Medium for free to get updates from this writer.

Any help appreciated! 👽
buymeacoffee.com/bushinami
patreon.com/bushinami
USDT — 0x61E14543745d53855fBaBa238BFF406c06558B06

--

--

Mikkicon
Mikkicon

Written by Mikkicon

0 followers

Data Scientist