tengine 介绍和环境搭建
介绍
Tengine概述:
Tengine是OPEN AI LAB(开放智能)推出的边缘AI推理框架,致力于应用场景下多厂家多种类的边缘智能芯片与多样的训练框架、算法模型之间的相互兼容适配,同时提升算法在芯片上的运行性能,将从云端完成训练后的算法高效迁移到异构的边缘智能芯片上执行,缩短AI应用开发与部署周期,助力加速AI产业化落地。
Tengine重点关注嵌入式设备上的边缘AI计算推理,为大量应用和设备提供高性能AI推理的技术支持。一方面可以通过异构计算技术同时调用CPU、GPU、DSP、NPU等不同计算单元来完成AI网络计算,另一方面,它支持TensorFlow、Caffe、MXNet、PyTorch、MegEngine、DarkNet、ONNX、ncnn等业内主流框架,是国际上为数不多的通过ONNX官方认证的战略合作伙伴之一。
Tengine特点:
-
通用性体现在 Tengine 支持 Tensorflow/Tensorflow-Lite,MXNet,Caffe,ONNX 等主流网络模型格式,并且可以支持 NHWC/NCHW 两种数据排布。同时,还支持 CNN,RNN/LSTM,GAN 等常用网络。
-
开放性指的 Tengine 对外提供了高度可扩展的接口,用户可以很方便的在 Tengine 代码库之外,开发和扩展自己需要的功能。用户可以通过 Serializer 接口, 定义自己的专有模型格式的加载和存储,以及实现模型加密的功能;用户可以通过 Operator 接口,定义自己特有的算子;可以通过 Driver 接口,实现自己专有的设备接入 Tengine。
- 高性能是指 Tengine 对于端侧计算平台,做了大量定制和优化,从而实现在设备上高效运行神经网络。CPU上核心运算的代码都是针对微架构手工优化的汇编代码,且针对不同参数和形状的卷积,高效实现了多种优化算法,把 ARM CPU 的算力发挥到极致,保证了任意形状卷积推理的高性能。
Tengine 310库:
Tengine 预编译库路径: /usr/local/AID/Tengine/
查看预编译库:
[openailab@localhost ~]$ ls /usr/local/AID/Tengine/lib/
libhclcpu.so libtengine.so
查看头文件
[openailab@localhost ~]$ ls /usr/local/AID/Tengine/include/
cpu_device.h tengine_c_api.h tengine_c_compat.h tengine_operations.h
输入下列命令可以查看Tengine 版本信息: sudo dnf info Tengine
详细信息格式如下:
Name : tengine
Version : 1.7.1
Release : 1.openailab.fc28
Arch : aarch64 Size : 5.8 M
Source : tengine-1.7.1-1.openailab.fc28.src.rpm
Repo : @System
Summary : openailab tengine library
URL : https://github.com/OAID/Tengine
如果需要升级 tengine,可以输入下列命令升级Tengine 版本: sudo dnf update Tengine
tengine 开源介绍
Tengine 是开源软件,链接:https://github.com/OAID/Tengine
主要需要注意的是:
- 编译
- 示例
- 模型仓库
- 转换工具
- 量化工具
编译
编译先要准备好需要的编译环境, git, g++, cmake, make 等,然后通过这些工具编译出Libtengine-lite.so 这个库文件。
Pytengine 本身的运行也需要这个库文件。
模型仓库
Baidu 网盘中会保存对应版本的模型文件,注意不同网络结构,以及模型格式,是否量化等。
模型如果和 tengine 没有对应,也会导致很多种报错,最常见的是输入数组大小和tensor 大小不一致。碰到这样,就说明模型不匹配,注意检查。
转换工具
转换工具提供三种形式:
- 二进制预编译版本,只提供 ubuntu 18.04
- WebAssembly 在线版本
- 提供源码,自行编译 https://github.com/OAID/Tengine-Convert-Tools
tengine 环境搭建
编译
linux 环境
linux 环境本地编译,编译 Tengine Lite 依赖 git, g++, cmake, make 等基本工具,如果没有安装:
Debian 系发行版命令:sudo apt-get install cmake make g++ git
Redhat 系发行版命令:sudo dnf install cmake make g++ git
下载代码:git clone https://github.com/OAID/Tengine.git tengine-lite
编译:
cd tengine-lite
mkdir build
cd build
cmake ..
make
make install --> 这一步可以不用执行,只要后面指定位置就行
编译完成后,build 目录下面需要有 libtengine-lite.so, tengine_c_api.h, tm_benchmark, tm_classification, tm_mobilenet_ssd.
win 环境
win 环境本地编译,编译 Tengine Lite 依赖 git, g++, cmake, make 等基本工具,并且 CMake >= 3.13, Visual Studio >= 2015, 如果需要 CUDA 和 TensorRT 那么 CMake >= 3.18 : https://cmake.org/download/
下载代码: git clone https://github.com/OAID/Tengine.git tengine-lite
打开 x64 Native Tools Command Prompt for VS 201x,进行编译:
set PATH=X:/your/cmake/bin;%PATH%
cd /d X:/your/downloaded/Tengine
md build
cd build
cmake.exe -G "Visual Studio 15 2017 Win64" -DTENGINE_OPENMP=OFF -DTENGINE_BUILD_EXAMPLES=OFF ..
::cmake.exe -G "Visual Studio 16 2019" -A x64 -DTENGINE_OPENMP=OFF ..
cmake.exe --build . --parallel %NUMBER_OF_PROCESSORS%
cmake.exe --build . --target install
pytengine 环境
tengine-lite python 版本,最新一期是 fcf2da5a14bd26a43d5fe09cb577caac3ecd3b3c,更加新的版本暂时取消了 pytengine。
pip3 install numpy –user
sudo yum install python3-opencv / sudo apt install python3-opencv
cd pytengine
python3 setup.py install --user
测试环境
export LD_LIBRARY_PATH=./build/src
./build/examples/tm_classification -m models/mobilenet.tmfile -i images/cat.jpg -g 224,224 -s 0.017,0.017,0.017 -w 104.007,116.669,122.679
参考
https://github.com/OAID/Tengine/tree/fcf2da5a14bd26a43d5fe09cb577caac3ecd3b3c/pytengine
https://github.com/OAID/Tengine/blob/fcf2da5a14bd26a43d5fe09cb577caac3ecd3b3c/doc/compile.md