介绍

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 大小不一致。碰到这样,就说明模型不匹配,注意检查。

转换工具

转换工具提供三种形式:

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

标签: deep_learning

添加新评论