Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Automated Mixed-Precision Quantization Search for Deep Neural Networks

Abstract

This research presents a comprehensive framework for automated mixed-precision quantization of deep neural networks, combining multiple optimization strategies to achieve optimal trade-offs between computational efficiency and model accuracy. We introduce a multi-stage optimization approach that leverages heuristic search, genetic algorithms, and Bayesian optimization to determine layer-wise bitwidth allocations while maintaining competitive performance on the CIFAR-10 benchmark.

Research Overview

image

Technical Innovation

Our framework introduces three complementary optimization strategies:

  1. Heuristic Search: Progressive bitwidth reduction with threshold-based recovery
  2. Genetic Algorithms: Population-based evolutionary optimization
  3. Bayesian Optimization: Probabilistic modeling of the quantization space

Methodology

1. Quantization Framework

Bitwidth-Aware Forward Pass

def update(bw_array, threshold):
    i = 0     
    for name, module in net.named_ol_layers():
        module.ol_update(bw_array[i], threshold)
        i = i + 1
image

2. Optimization Strategies

Strategy 1: Heuristic Search (simple_solution.py)

Stage 1 - Uniform Quantization:

bw = 8
while True:
    bw_array = [bw] * num_layers
    update(bw_array, 0.99)
    test_acc = test()
    if test_acc < max_acc - 1: break
    bw = bw - 1

Stage 2 - Threshold Optimization:

  • Fixed bitwidth with adaptive threshold
  • Progressive layer-wise bitwidth recovery

Strategy 2: Genetic Algorithm (genetic_solution.py)

Evolutionary Optimization:

creator.create("FitnessMin", base.Fitness, weights=(-1.0,))
creator.create("Individual", list, fitness=creator.FitnessMin)

toolbox.register("attr_bool", random.randint, 2, 4)
toolbox.register("individual", tools.initRepeat, creator.Individual, 
                 toolbox.attr_bool, int(num_layers))
image

Strategy 3: Bayesian Optimization (bo_solution.py)

Probabilistic Modeling:

def myf(array):
    acc = update_and_test(array)
    avg_bw = evalAvgBw(array)
    return (94.84 - acc)**2 - (2.5*(4.48 - avg_bw))**2

Search Space Definition:

space = [{'name': 'var_1', 'type': 'discrete', 
          'domain': (2,3,4,5), 'dimensionality': 38}]

Experimental Framework

Dataset and Model

  • Dataset: CIFAR-10 (50,000 training, 10,000 test images)
  • Model: Pre-trained ResNet variant (38 layers)
  • Baseline Accuracy: 94.84% (full quantization)

Evaluation Metrics

  1. Accuracy Preservation: (\text{Accuracy} \geq 93.84%)
  2. Average Bitwidth: Weighted combination of quantized and full-precision operations
  3. Computational Efficiency: Relative reduction in model size and operations

Experimental Results

Baseline Quantization Performance

Bitwidth Threshold Accuracy Avg BW
8-bit 1.0 94.68% 8.00
8-bit 0.99 94.81% 8.08
4-bit 1.0 90.75% 4.00
4-bit 0.95 94.63% 4.60

Technical Implementation

1. Model Architecture Integration

# Load pre-trained model
checkpoint = torch.load('./checkpoint/ckpt_350_lr0.1.t7')
net = checkpoint['net']

# Quantization-aware evaluation
def test():
    net.eval()
    for batch_idx, (inputs, targets) in enumerate(testloader):
        outputs = net(inputs)
        # Accuracy computation

2. Optimization Algorithms

Genetic Algorithm Parameters

pop_num = 20        # Population size
gen_num = 50        # Generations
CXPB, MUTPB = 0.5, 0.2  # Crossover and mutation probabilities

Bayesian Optimization Setup

bo = GPyOpt.methods.BayesianOptimization(myf, space)
bo.run_optimization(max_iter=30, eps=1e-8, verbosity=True)

3. Constraint Handling

Feasibility Check:

def feasible(individual):
    update(individual, threshold)
    test_acc = test()
    return test_acc > max_acc - 1

Penalty-based Optimization:

toolbox.decorate("evaluate", tools.DeltaPenalty(feasible, penalty))

Research Contributions

1. Multi-Strategy Optimization Framework

Comparative Analysis:

  • Heuristic Search: Fast, interpretable, suitable for initial exploration
  • Genetic Algorithms: Robust, handles complex search spaces, population-based
  • Bayesian Optimization: Sample-efficient, probabilistic modeling, global optimization

2. Layer-Wise Quantization Sensitivity

Key Findings:

  • Different layers exhibit varying sensitivity to quantization
  • Early and late layers often require higher precision
  • Middle layers can tolerate aggressive quantization

3. Practical Deployment Insights

Optimal Configurations:

  • Mixed-precision (2-8 bits) outperforms uniform quantization
  • Threshold-based approaches provide computational flexibility
  • Evolutionary methods discover non-intuitive optimal configurations

Applications and Impact

1. Edge Computing

  • Model Compression: Reduced memory footprint for embedded systems
  • Energy Efficiency: Lower computational requirements for battery-powered devices
  • Real-time Inference: Faster processing on resource-constrained hardware

2. Hardware Design

  • Custom Accelerators: Informing design of mixed-precision arithmetic units
  • Memory Hierarchy: Optimizing bandwidth requirements for different precisions
  • Processor Architecture: Guiding support for variable-precision operations

3. Model Development

  • Neural Architecture Search: Integration with automated model design
  • Training-aware Quantization: Joint optimization of training and quantization
  • Cross-platform Deployment: Universal quantization strategies

Installation and Usage

Requirements

# Core dependencies
torch
torchvision
numpy

# Optimization libraries
deap          # Genetic algorithms
GPyOpt        # Bayesian optimization
GPy           # Gaussian processes

Basic Usage

# Load pre-trained model
from simple_solution import test, update

# Evaluate quantization configuration
bw_array = [4, 4, 8, 4, ...]  # 38-layer configuration
update(bw_array, threshold=0.95)
accuracy = test()

Optimization Pipeline

# Run heuristic search
python simple_solution.py

# Run genetic algorithm
python genetic_solution.py

# Run Bayesian optimization
python bo_solution.py

Experimental Validation

Reproducibility

  • Dataset: Standard CIFAR-10 benchmark
  • Model: Publicly available pre-trained weights
  • Metrics: Standard classification accuracy and computational metrics

Statistical Significance

  • Multiple random seeds for stochastic algorithms
  • Cross-validation of optimal configurations
  • Comparison against established quantization baselines

Future Research Directions

1. Algorithmic Improvements

  • Multi-objective Optimization: Joint optimization of accuracy, latency, and energy
  • Transfer Learning: Quantization strategies transferable across architectures
  • Online Adaptation: Dynamic bitwidth adjustment during inference

2. Architectural Extensions

  • Attention-based Networks: Transformer quantization strategies
  • Generative Models: GAN and diffusion model quantization
  • Reinforcement Learning: Policy network optimization

3. Hardware Co-design

  • FPGA Implementation: Custom hardware for mixed-precision operations
  • Neuromorphic Computing: Integration with emerging hardware paradigms
  • Compiler Optimization: Automated code generation for quantized models

Contributing

Researchers are encouraged to extend this work in:

  • Novel Optimization Algorithms
  • Additional Model Architectures
  • Hardware-aware Quantization
  • Theoretical Analysis of Quantization Effects


✨ Author

Saad Abdur Razzaq
Machine Learning Engineer | Effixly AI

LinkedIn Email Website GitHub



About

Automated Mixed-Precision Quantization Search for Deep Neural Networks

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages