MQBench Quantization Aware Training with PyTorch
I am using MQBench(Model Quantization Benchmark)(http://mqbench.tech/) to quantize the model for deployment.
MQBench is a benchmark and framework for evluating the quantization algorithms under real world hardware deployments.
Prerequisites
- Python 3.7+
- PyTorch 1.8.1+
Install MQBench Lib
Before run this repository, you should install MQBench:
git clone https://github.com/ModelTC/MQBench.git
cd MQBench
python setup.py build
python setup.py install
Training Fp32 Model
# Start training fp32 model with:
# model_name can be ResNet18, MobileNet, ...
python main.py model_name
# You can manually config the training with:
python main.py --resume --lr=0.01
Training Quantize Model
# Start training quantize model with:
# model_name can be ResNet18, MobileNet, ...
python main.py model_name --quantize
# You can manually config the training with:
python main.py --resume --parallel DP --BackendType Tensorrt --quantize
python -m torch.distributed.launch main.py --local_rank 0 --parallel DDP --resume --BackendType Tensorrt --quantize
Fp32 Accuracy
| Model | Acc. |
|---|---|
| VGG16 | 92.64% |
| ResNet18 | 93.02% |
| ResNet50 | 93.62% |
| ResNet101 | 93.75% |
| RegNetX_200MF | 94.24% |
| RegNetY_400MF | 94.29% |
| MobileNetV2 | 94.43% |
| ResNeXt29(32x4d) | 94.73% |
| ResNeXt29(2x64d) | 94.82% |
| SimpleDLA | 94.89% |
| DenseNet121 | 95.04% |
| PreActResNet18 | 95.11% |
| DPN92 | 95.16% |
| DLA | 95.47% |