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 \