SGS IPU SDK Installation and Test

System Requirement

AVX2

SGS IPU SDK is compiled based on AVX2 instruction set. Please use Intel® processor that supports AVX2 to run the SGS IPU SDK.

Hardware

Component Requirement
CPU Intel® Core i7 or Higher
RAM 8G or Higher

SGS IPU SDK Files

List of SGS docker v1.6

$ cd <path to SGS docker>/docker_v1.6
$ ls
readme.txt     sgs_docker_v1.6.tar.xz
run_docker.sh  sgs_docker_v1.6.tar.xz_md5.txt

List of SGS IPU SDK

$ ls ~/SGS_IPU_SDK
DirectoryDescription.txt  Netron           Scripts  cfg         doc
DumpDebug                 ReleaseNote.txt  bin      cfg_env.sh  libs

List of SGS Models

$ ls ~/SGS_Models
caffe  resource  tensorflow

Please put SGS_Models and SGS_IPU_SDK under the main directory ~/.

Installation

You may skip this Installation section if SGS docker is used.

Installing Dependencies:

Package Installation Command
i386 dpkg --add-architecture i386
build-essential sudo apt install build-essential
cmake sudo apt install cmake
libc6-dev sudo apt install libc6-dev libc6-dev:i386 libc6-dev-i386
libbz2-dev sudo apt install libbz2-dev libbz2-dev:i386
libncurses5-dev sudo apt install libncurses5-dev libncurses5-dev:i386
libglib2.0-dev sudo apt install libglib2.0-dev libglib2.0-dev:i386
libsm6 sudo apt install libsm6 libsm6:i386
libxrender1 sudo apt install libxrender1 libxrender1:i386
libxext6 sudo apt install libxext6 libxext6:i386
libgdbm-dev sudo apt install libgdbm-dev libgdbm-dev:i386
liblzma-dev sudo apt install liblzma-dev liblzma-dev:i386
libsqlite3-dev sudo apt install libsqlite3-dev libsqlite3-dev:i386
libssl-dev sudo apt install libssl-dev libssl-dev:i386
libreadline6-dev sudo apt install libreadline6-dev libreadline6-dev:i386
libffi-dev sudo apt install libffi-dev libffi-dev:i386
zlib1g-dev sudo apt install zlib1g-dev zlib1g-dev:i386
libncursesw5-dev sudo apt install libncursesw5-dev libncursesw5-dev:i386
libsqlite3-dev sudo apt install libsqlite3-dev libsqlite3-dev:i386
libgdbm-dev sudo apt install libgdbm-dev libgdbm-dev:i386
libbz2-dev sudo apt install libbz2-dev libbz2-dev:i386
checkinstall sudo apt install checkinstall
openssl sudo apt install openssl

Installing Python Dependencies

To use the SigmaStar IPU SDK, the following libraries should be installed:

Software Installation Command Tested Version
Python 3.7
enum34 pip install enum34==1.1.10 ==1.1.10
numpy pip install numpy==1.16.6 ==1.16.6
protobuf pip install protobuf >=3.8.0
six pip install six >=1.12.0
OpenCV-python pip install opencv-python ==4.2.0.34
TensorFlow pip install tensorflow ==1.14.0
Cython pip install cython >=0.29.13
pycocotools pip install pycocotools >=2.0.0
matplotlib pip install matplotlib >=3.0.3
SciPy pip install scipy >=1.3.1
Pillow pip install pillow ==6.1.0
joblib pip install joblib ==0.13.2
onnx-simplifier pip install onnx-simplifier ==0.2.10
sympy pip install sympy ==1.6.1
packaging pip install packaging ==20.4
onnx pip install onnx ==1.8.1
onnxruntime pip install onnxruntime ==1.7.0
onnxoptimizer pip install onnxoptimizer==0.2.4 ==0.2.4
python3-tk sudo apt install python3-tk
libc6 sudo apt install libc6-dev-i386
libstdc++6 sudo apt install libstdc++6
python-qt4 sudo apt install python-qt4
torch sudo install torch==1.8.0+cpu ==1.8.0
torchvision sudo install torchvision==0.9.0+cpu ==0.9.0
wheel sudo install wheel
scikit-image sudo install scikit-image
scikit-learn sudo install scikit-learn
pulp sudo install pulp

To quickly install the dependencies, run the following command:

sudo apt update
sudo apt install python3-tk python-qt4 libc6-dev-i386 libstdc++6
cd ~/SGS_IPU_SDK
pip3 install -r Scripts/calibrator/setup/requirements.txt –i https://pypi.tuna.tsinghua.edu.cn/simple

Test

Note

  • Please put SGS_Models and SGS_IPU_SDK under the main directory ~/. The following commands are based on this directory structure. Please use Linux platform to run the tool.

  • SGS IPU SDK is compiled based on AVX2 instruction set. Please use Intel® processor that supports AVX2 to run the SigmaStar IPU SDK. If a virtual machine environment such as docker is used, make sure that a minimum of 6G memory is allocated at the virtual machine.

To set up the environment, run the following command:

cd ~/SGS_IPU_SDK
source cfg_env.sh

The example illustrated here is based on caffe_mobilenet_v2 trained via Caffe framework.

To run SGS IPU SDK tools under ~/SGS_IPU_SDK/caffe_mobilenet_v2:

cd ~/SGS_IPU_SDK
mkdir caffe_mobilenet_v2
cd caffe_mobilenet_v2

Convert Tool

The Convert Tool converts original model into SigmaStar floating-point network model.

Enter ~/SGS_IPU_SDK/caffe_mobilenet_v2 directory and run the following:

python3 ~/SGS_IPU_SDK/Scripts/ConvertTool/ConvertTool.py caffe \
--model_file ~/SGS_Models/caffe/caffe_mobilenet_v2_shicai/caffe_mobilenet_v2_shicai.prototxt \
--weight_file ~/SGS_Models/caffe/caffe_mobilenet_v2_shicai/caffe_mobilenet_v2_shicai.caffemodel \
--input_arrays data \
--output_arrays prob \
--output_file ./caffe_mobilenet_v2_float.sim \
--input_config ~/SGS_Models/caffe/caffe_mobilenet_v2_shicai/input_config.ini

Calibrator

The Calibrator converts SigmaStar floating-point network model into SigmaStar fixed-point network model.

Enter ~/SGS_IPU_SDK/caffe_mobilenet_v2 directory and run the following:

python3 ~/SGS_IPU_SDK/Scripts/calibrator/calibrator.py \
-i ~/SGS_Models/resource/classify/ilsvrc2012_calibration_set32/ \
-m ./caffe_mobilenet_v2_float.sim \
-c Classification \
--input_config ~/SGS_Models/caffe/caffe_mobilenet_v2_shicai/input_config.ini \
-n caffe_mobilenet_v2

Note

It takes a few minutes to complete the conversion process. Please wait until the message Run convert model OK shows up.

Compiler

The Compiler converts SigmaStar fixed-point network model into SigmaStar offline network model.

Enter ~/SGS_IPU_SDK/caffe_mobilenet_v2 directory and run the following:

python3 ~/SGS_IPU_SDK/Scripts/calibrator/compiler.py \
-m ./caffe_mobilenet_v2_fixed.sim

Simulator

The Simulator verifies floating-point network model by simulation.

Enter ~/SGS_IPU_SDK/caffe_mobilenet_v2 directory and run the following:

python3 ~/SGS_IPU_SDK/Scripts/calibrator/simulator.py \
-i ~/SGS_Models/resource/classify/ilsvrc2012_val_set100 \
-l ~/SGS_Models/resource/classify/caffe_labels.txt \
-m ./caffe_mobilenet_v2_float.sim \
-c Classification \
-t Float \
-n ~/SGS_Models/caffe/caffe_mobilenet_v2_shicai/caffe_mobilenet_v2_shicai.py \
--num_process 20

To verify fixed-point network model using simulator:

python3 ~/SGS_IPU_SDK/Scripts/calibrator/simulator.py \
-i ~/SGS_Models/resource/classify/ilsvrc2012_val_set100 \
-l ~/SGS_Models/resource/classify/caffe_labels.txt \
-m ./caffe_mobilenet_v2_fixed.sim \
-c Classification \
-t Fixed \
-n ~/SGS_Models/caffe/caffe_mobilenet_v2_shicai/caffe_mobilenet_v2_shicai.py \
--num_process 20

To verify offline network model using simulator:

python3 ~/SGS_IPU_SDK/Scripts/calibrator/simulator.py \
-i ~/SGS_Models/resource/classify/ILSVRC2012_test_00000002.bmp \
-m caffe_mobilenet_v2_fixed.sim_sgsimg.img \
-l ~/SGS_Models/resource/classify/labels.txt \
-c Classification \
-t Offline \
-n ~/SGS_Models/caffe/caffe_mobilenet_v2_shicai/caffe_mobilenet_v2_shicai.py \