简体中文 | English
Tengine
简介
Tengine 由 OPEN AI LAB 主导开发,该项目实现了深度学习神经网络模型在嵌入式设备上的快速、高效部署需求。为实现在众多 AIoT 应用中的跨平台部署,本项目使用 C 语言进行核心模块开发,针对嵌入式设备资源有限的特点进行了深度框架裁剪。同时采用了完全分离的前后端设计,有利于 CPU、GPU、NPU 等异构计算单元的快速移植和部署,降低评估、迁移成本。
Tengine 核心代码由 4 个模块组成:
- device:NN Operators 后端模块,已提供 CPU、GPU、NPU 参考代码;
- scheduler:框架核心部件,包括 NNIR、计算图、硬件资源、模型解析器的调度和执行模块;
- operator:NN Operators 前端模块,实现 NN Operators 注册、初始化;
- serializer:模型解析器,实现 tmfile 格式的网络模型参数解析。
架构简析
快速上手
编译
- 快速编译 基于 cmake 实现简单的跨平台编译。
示例
模型仓库
-
百度网盘 (提取码:7ke5)
转换工具
- 预编译版本 :提供 Ubuntu 18.04 系统上预编译好的模型转换工具;
- 在线转换版本 :基于 WebAssembly 实现(浏览器本地转换,模型不会上传;
- 源码编译 :建议在服务器或者PC上编译,指令如下:
mkdir build && cd build cmake -DTENGINE_BUILD_CONVERT_TOOL=ON .. make -j`nproc`
量化工具
- 源码编译:已开源量化工具源码,已支持 uint8/int8。
速度评估
- Benchmark 基础网络速度评估工具,欢迎大家更新。
NPU Plugin
- TIM-VX VeriSilicon NPU 使用指南。
AutoKernel Plugin
- AutoKernel 是一个简单易用,低门槛的自动算子优化工具,AutoKernel Plugin实现了自动优化算子一键部署到 Tengine 中。
Container
- SuperEdge 借助 SuperEdge 边缘计算的开源容器管理系统,提供更便捷的业务管理方案;
- How to use Tengine with SuperEdge 容器使用指南;
- Video Capture user manual Demo 依赖文件生成指南。
Roadmap
致谢
Tengine Lite 参考和借鉴了下列项目:
- Caffe
- Tensorflow
- MegEngine
- ONNX
- ncnn
- FeatherCNN
- MNN
- Paddle Lite
- ACL
- stb
- convertmodel
- TIM-VX
- SuperEdge
License
澄清说明
- [在线上报功能] 在线上报功能主要目的是了解Tengine的使用信息,信息用于优化和迭代Tengine,不会影响任何正常功能。该功能默认开启,如需关闭,可修改如下配置关闭:(主目录 CMakeLists.txt ) OPTION (TENGINE_ONLINE_REPORT "online report" OFF)
FAQ
技术讨论
- Github issues
- QQ 群: 829565581
- Email: [email protected]