Model Compression Toolkit (MCT)
Model Compression Toolkit (MCT) is an open-source project for neural network model optimization under efficient, constrained hardware. This project provides researchers, developers, and engineers tools for optimizing and deploying state-of-the-art neural networks on efficient hardware. Specifically, this project aims to apply quantization and pruning schemes to compress neural networks.
Currently, this project supports hardware-friendly post-training quantization (HPTQ) with Tensorflow 2 and Pytorch [1].
The MCT project is developed by researchers and engineers working at Sony Semiconductors Israel.
For more information, please visit our project website.
Table of Contents
Getting Started
This section provides a quick starting guide. We begin with installation via source code or pip server. Then, we provide a short usage example.
Installation
See the MCT install guide for the pip package, and build from the source.
From Source
git clone https://github.com/sony/model_optimization.git
python setup.py install
From PyPi - latest stable release
pip install model-compression-toolkit
A nightly package is also available (unstable):
pip install mct-nightly
To run MCT, one of the supported frameworks, Tenosflow/Pytorch, needs to be installed.
For using with Tensorflow please install the packages: tensorflow, tensorflow-model-optimization
For using with Pytorch (experimental) please install the packages: torch
MCT is tested with:
- Tensorflow version 2.7
- Pytorch version 1.10.0
Usage Example
For an example of how to use the post-training quantization, using Keras, please use this link.
For an example using Pytorch (experimental), please use this link.
For more examples please see the tutorials' directory.
Supported Features
Quantization:
- Post Training Quantization for Keras models.
- Post Training Quantization for Pytorch models (experimental).
- Gradient-based post-training (Experimental, Keras only).
- Mixed-precision post-training quantization (Experimental).
Tensorboard Visualization (Experimental):
- CS Analyzer: compare a model compressed with the original model to analyze large accuracy drops.
- Activation statistics and errors
Results
Keras
As part of the MCT library, we have a set of example networks on image classification. These networks can be used as examples when using the package.
- Image Classification Example with MobileNet V1 on ImageNet dataset
| Network Name | Float Accuracy | 8Bit Accuracy | Comments |
|---|---|---|---|
| MobileNetV1 [2] | 70.558 | 70.418 |
For more results please see [1]
Pytorch
We quantized classification networks from the torchvision library. In the following table we present the ImageNet validation results for these models:
| Network Name | Float Accuracy | 8Bit Accuracy |
|---|---|---|
| MobileNet V2 [3] | 71.886 | 71.444 |
| ResNet-18 [3] | 69.86 | 69.63 |
| SqueezeNet 1.1 [3] | 58.128 | 57.678 |
Contributions
MCT aims at keeping a more up-to-date fork and welcomes contributions from anyone.
*You will find more information about contributions in the Contribution guide.
License
References
[1] Habi, H.V., Peretz, R., Cohen, E., Dikstein, L., Dror, O., Diamant, I., Jennings, R.H. and Netzer, A., 2021. HPTQ: Hardware-Friendly Post Training Quantization. arXiv preprint.
[2] MobilNet from Keras applications.
Metadata
Release files for mct-nightly 1.4.0.2072022.post722
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mct-nightly-1.4.0.2072022.post722.tar.gz | 232.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mct_nightly-1.4.0.2072022.post722-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 672.7 kB
Release files / mct-nightly-1.4.0.2072022.post722.tar.gz
| Download URL | mct-nightly-1.4.0.2072022.post722.tar.gz |
|---|---|
| Size | 232.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
913477ae1b5b3621dfe29f2b1b4619ecea6f885532b6bd409eeb1de4387f3a21
|
|
BLAKE2b-256 checksum How to use checksums |
9c6973b58d7133f1722c7847dfff87627a6b16e0e016dfa5fa6a58967c6d7d11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.8.13
|
Release files / mct_nightly-1.4.0.2072022.post722-py3-none-any.whl
| Download URL | mct_nightly-1.4.0.2072022.post722-py3-none-any.whl |
|---|---|
| Size | 440.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5875eab95295f31e651e634dad3830196c09302ba3f28b7eba64bdc409f1e13f
|
|
BLAKE2b-256 checksum How to use checksums |
e2cec54ca9a6b9d68b9c97cbac1f43d15e81d7f304c50ee9822311fb64e2717e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.8.13
|