来源:腾讯技术工程微信号
作者:腾讯优图
从学界到工业界,“开源”已经成为 AI 领域的一个关键词。一方面,它以“授人以渔”的方式为 AI 构建了一个开放共进的生态环境,帮助行业加速 AI 应用落地;另一方面,在解决行业实际问题时持续更新和迭代,源源不断地给 AI 领域输送重要的技术养料和创造力,可以说开源是 AI 落地和繁荣不可或缺的源动力。
6 月 10 日,腾讯优图实验室宣布正式开源新一代移动端深度学习推理框架 TNN,通过底层技术优化实现在多个不同平台的轻量部署落地,性能优异、简单易用。基于 TNN,开发者能够轻松将深度学习算法移植到手机端高效的执行,开发出人工智能 APP,真正将 AI 带到指尖。
轻量级部署,TNN 助力深度学习提速增效
深度学习对算力的巨大需求一直制约着其更广泛的落地,尤其是在移动端,由于手机处理器性能弱、算力无法多机拓展、运算耗时长等因素常常导致发热和高功耗,直接影响到 app 等应用的用户体验。腾讯优图基于自身在深度学习方面的技术积累,并借鉴业内主流框架优点,推出了针对手机端的高性能、轻量级移动端推理框架 TNN。
TNN 在设计之初便将移动端高性能融入核心理念,对 2017 年开源的 ncnn 框架进行了重构升级。通过 GPU 深度调优、ARMSIMD 深入汇编指令调优、低精度计算等技术手段,在性能上取得了进一步提升。以下是 MNN,ncnn, TNN 框架在多款主流平台的实测性能:
TNN在麒麟970、骁龙835、骁龙845,骁龙615平台实测性能数据
注:纵轴单位:ms 测试分支:MNN:1.0.0(2020.05.07), ncnn:20200413, TNN: master(2020.06.10)
低精度计算的运用对 TNN 的性能提升发挥了重要作用。在神经网络计算中,浮点精度在许多研究和业务落地成果上都被证明存在一定冗余,而在计算、内存资源都极为紧张的移动端,消除这部分冗余极为必要。TNN 引入了 INT8、FP16、BFP16 等多种计算低精度的支持,相比大部分仅提供 INT8 支持的框架,不仅能灵活适配不同场景,还让计算性能大大提升。TNN 通过采用 8bit 整数代替 float 进行计算和存储,模型尺寸和内存消耗均减少至 1/4,在计算性能上提升 50%以上。同时引入 arm 平台 BFP16 的支持,相比浮点模型,BFP16 使模型尺寸、内存消耗减少 50%,在中低端机上的性能也提升约 20%。骁龙 615 平台实测:
通用、轻便是 TNN 框架的另一大亮点。长久以来,不同框架间的模型转换都是 AI 项目应用落地的痛点。TNN 设计了与平台无关的模型表示,为开发人员提供统一的模型描述文件和调用接口,支持主流安卓、iOS 等操作系统,适配 CPU、GPU、NPU 硬件平台。企业一套流程就能部署到位,简单易用、省时省力。同时,TNN 通过 ONNX 可支持 TensorFlow, PyTorch, MXNet,Caffe 等多种训练框架,目前支持 ONNX 算子超过 80 个,覆盖主流 CNN 网络。TNN 所有算子均为源码直接实现,不依赖任何第三方,接口易用,切换平台仅需修改调用参数即可。
开源文化兴起,AI 底层技术助推产业发展
事实上,作为腾讯旗下顶级 AI 实验室,腾讯优图长期致力于 AI 基础设施的研发和推进。此前,腾讯优图已开发了 Rapidnet 前向计算框架、RapidAIoT 边缘计算框架,实现了业界首个专注移动端的推断框架 ncnn 的开源,并在业界受到广泛推崇。从 2017 年开源至今,ncnn 在 GitHub 上 star(8.9k)和 fork(2.3k)数均领先于其它各大推理框架。
据悉,TNN 已于 3 月中旬在腾讯内部开源,为腾讯 QQ、QQ 空间、腾讯微视、腾讯云、天天 P 图等多款产品和服务中持续提供技术能力,释放出更多效能。
“TNN 已在 GitHub 上开源,欢迎业界人士参与协同共建,共同打造更优的移动端推理框架。“腾讯优图实验室副总经理吴永坚介绍,腾讯优图后续将在现有 CV 业务的基础上研发更多的 AI 推理模型,如语音、NLP 等相关业务,同时开展针对 CPU、GPU 服务器端的服务,为业界公司提供更广泛的优化服务。
“作为产业发展的高速公路,以深度学习框架、组件为代表的 AI 基础设施将是未来的主流趋势,腾讯优图也将以此为着力点,助推产业发展。”吴永坚表示,腾讯优图还将持续开发模型训练组件、模型压缩组件、基础算法组件,并择机开源,希望从框架到平台、到算法,打造一体化的 AI 基础设施,降低 AI 门槛,加速产业发展。
随着以开源为代表的新代码文化的兴起,腾讯近年来在开源领域表现亮眼:在全球最大的代码托管平台 GitHub 上,腾讯发布的开源项目已经超过一百个,涵盖云原生、大数据、AI、云计算、安全、硬件等多个热门的技术方向。
通过开源协同,腾讯将各个事业群最底层和共性的技术能力进行梳理和拉通,在业务实践和海量用户检验下,优质的内部开源项目不仅在公司层面推广复用,同时也对外贡献整个开源社区。仅在 Github 上,腾讯的开源项目就收获了 30w+star 数,跻身国际上有影响力的开源企业之一。
在开源的道路上,腾讯不仅将内部优质项目持续对外开放,也积极与开源社区协同合作,发挥中国企业的科技力量,推动开源和开放进一步升级。
开源地址:https://github.com/Tencent/TNN
推荐阅读:
更多腾讯AI相关技术干货,请关注专栏腾讯技术工程