Octo

July 14, 2021 ยท View on GitHub

Create tiny ML systems for on-device learning.
Latest version: ver0.8.1-demo.
Edited by ZHOU Qihua, 2021.06.22, Tue.

1. Demo Structure

FolderDescription
simplecnn_lac3-layer CNN (1CONV+2FC) based on QAT&LAC
alexnet_lac8-layerCNN (5CONV+3FC) based on QAT&LAC
vgg11_lac11-layerCNN (8CONV+3FC) based on QAT&LAC
quantizerINT8 quantization module
commonNeural network common modules
datasetMNIST dataset and data loader

2. Core Files

For example, if we use MNIST dataset to train simplecnn_lac model and the core file is simplecnn_lac/train_convnet.py.

Python FileDescription
simplecnn_lac/train_simplecnn_LAC_mnsit.pyMain entrance of the training procedure
simplecnn_lac/simplecnn_LAC_mnist.pyBuild the 3-layer CNN
quantizer/KMQuantizer.py Quatization functions
common/trainerTraining handler
common/layerLayers of the neural network

3. Prerequisites

The following Python packages are required:

  • Python 3.x (3.6 is recommanded)
  • NumPy
  • Matplotlib

4. Run

4.1 Run in command-line interface

Shift into simplecnn_lac folder and excute Python files:

$ cd simplecnn_lac
$ python train_simplecnn_LAC_mnsit.py

4.2 Run in Pycharm (recommanded)

Directly open the root folder, choose train_simplecnn_LAC_mnsit.py, click the run button.

Please configure the Python Interpreter correctly

5. Reference

Octo: INT8 Training with Loss-aware Compensation and Backward Quantization for Tiny On-device Learning, In USENIX Annual Technical Conference (USENIX ATC), July 2021.

BibTeX

@inproceedings{octo_atc21,
title = {Octo: INT8 Training with Loss-aware Compensation and Backward Quantization for Tiny On-device Learning},
author = {Qihua Zhou and Song Guo and Zhihao Qu and Jingcai Guo and Zhenda Xu and Jiewei Zhang and Tao Guo and Boyuan Luo and Jingren Zhou},
booktitle = {2021 {USENIX} Annual Technical Conference ({USENIX} {ATC} 21)},
year = {2021},
url = {https://www.usenix.org/conference/atc21/presentation/zhou-qihua},
publisher = {{USENIX} Association},
month = july,
}