TNN是一款移动端推理框架,具有高性能、轻量级的特点,拥有跨平台、高性能、模型压缩、代码裁剪等众多优势。目前TNN已经在手机QQ、微视、P图等应用中落地。
TNN框架在原有Rapidnet、ncnn框架的基础上进一步加强了对移动端设备的支持,在性能方面也有所优化,同时借鉴了业界主流开源框架的优点,高性能和良好拓展性。
这次腾讯优图开源TNN,也是希望其推理框架能够进一步完善,共同为AI构建一个开放共进的生态环境,同时保持不断的迭代更新。
腾讯优图已在GitHub上开源的TNN,可以通过下面的网址进入
https://github.com/Tencent/TNN
计算优化,算力强
TNN对主流平台的适应性强,对CPU: ARMv7, ARMv8, GPU: Mali, Adreno, Apple) 深度调优。
同时优化了对移动端的适应性,轻量级,高算力。针对不同架构在硬件指令发射、吞吐、延迟、缓存带宽、缓存延迟、寄存器数量等特点,深度优化底层算子,极致利用硬件算力。
CNN 核心卷积运算通过 Winograd,Tile-GEMM, Direct Conv 等多种算法实现,保证不同参数、计算尺度下高效计算。
保证低精度优化,支持 INT8, FP16 低精度计算,减少模型大小、内存消耗,同时利用硬件低精度计算指令加速计算;支持 INT8 Winograd 算法,(输入6bit), 在精度满足要求的情况下,进一步降低模型计算复杂度;支持单模型多种精度混合计算,加速计算同时保证模型精度。
内存优化,轻量级匹配深度学习
通过 DAG 网络计算图分析,实现无计算依赖的节点间复用内存,降低 90% 内存资源消耗。同时支持外部实时指定用于网络内存,实现「多个模型,单份内存」。
TNN上手容易,三个步骤就能完成模型在目标平台上的部署。训练好的模型可以用TNN提供的工具转换成TNN模型;然后编译目标平台的TNN引擎;最后在自己的应用程序中嵌入对TNN的调用,都有详细的模型来辅助完成。
腾讯优图不断对优质项目持续开源,促进构建友好开发者生态,为中国企业的力量添砖加瓦。