/Tengine

Tengine is a lite, high performance, modular inference engine for embedded device

Primary LanguageCApache License 2.0Apache-2.0

简体中文 | English

Tengine

GitHub license Build Status Build Status Test Status codecov Language grade: C/C++

简介

TengineOPEN AI LAB 主导开发,该项目实现了深度学习神经网络模型在嵌入式设备上的快速高效部署需求。为实现在众多 AIoT 应用中的跨平台部署,本项目使用 C 语言进行核心模块开发,针对嵌入式设备资源有限的特点进行了深度框架裁剪。同时采用了完全分离的前后端设计,有利于 CPU、GPU、NPU 等异构计算单元的快速移植和部署,降低评估、迁移成本。

Tengine 核心代码由 4 个模块组成:

  • device:NN Operators 后端模块,当前提供 CPU 代码,后续逐步开源 GPU、NPU 参考代码;
  • scheduler:框架核心部件,包括 NNIR、计算图、硬件资源、模型解析器的调度和执行模块;
  • operator:NN Operators 前端模块,实现 NN Operators 注册、初始化;
  • serializer:模型解析器,实现 tmfile 格式的网络模型参数解析。

架构简析

Tengine 架构

快速上手

编译

  • 快速编译 基于 cmake 实现简单的跨平台编译。

示例

  • examples 提供基础的分类、检测算法用例,根据 issue 需求持续更新。

模型仓库

转换工具

  • 预编译版本:提供 Ubuntu 18.04 系统上预编译好的模型转换工具;
  • 在线转换版本:基于 WebAssembly 实现(浏览器本地转换,模型不会上传);
  • 源码编译:参考 Tengine-Convert-Tools 项目编译生成,建议采用。

量化工具

  • 预编译版本:提供 Ubuntu 18.04 系统上预编译好的模型量化工具,已支持uint8/int8。

速度评估

  • Benchmark 基础网络速度评估工具,欢迎大家更新。

NPU Plugin

  • TIM-VX VeriSilicon NPU 使用指南。

AutoKernel Plugin

  • AutoKernel 是一个简单易用,低门槛的自动算子优化工具,AutoKernel Plugin实现了自动优化算子一键部署到Tengine中。

Roadmap

致谢

Tengine Lite 参考和借鉴了下列项目:

License

FAQ

技术讨论