【安防展覽網 市場分析】 6月10日,騰訊優圖團隊開源了全新升級的輕量級深度學習前端推理框架TNN,通過底層技術優化實現在多個不同平臺的輕量部署落地,性能優異、簡單易用。
開源助力底層技術發展
作為騰訊旗下頂級AI實驗室,騰訊優圖長期致力于AI基礎設施的研發和推進。
此前,騰訊優圖已開發了 Rapidnet 前向計算框架、RapidAIoT 邊緣計算框架,實現了業界專注移動端的推斷框架 ncnn 的開源,并在業界受到廣泛推崇。
從2017年開源至今,ncnn在GitHub上的star(8.9k)數和fork(2.3k)數均于其它推理框架。
據悉,TNN已于3月中旬在騰訊內部開源,為騰訊QQ、QQ空間、騰訊微視、騰訊云、天天P圖等多款產品和服務持續提供技術能力,釋放出更多效能。
TNN框架結構圖
TNN框架特性總結:
TNN采用統一的ONNX模型作為中轉,兼容各大框架,這也反映出業界對于ONNX模型的中轉方式的認可和推動;
TNN支持FP16和int8的量化;
TNN支持計算圖的優化,至于具體采用了何種優化模式進行優化,還需要進一步深入代碼了解;
TNN通過抽象化的kernel接口使得算子可以跑在不同的硬件平臺之上,支持ARM,GPU,NPU等計算。
另外,根據TNN的描述,它還具有優點:
通過ONNX支持TensorFlow,PyTorch,MXNet,Caffe等多種訓練框架,充分利用和融入不斷完善的ONNX開源生態。當前支持ONNX算子55個,近期會完善到約80個,覆蓋主流CNN網絡;
支持主流安卓、iOS、Embedded Linux 操作系統,支持ARM CPU,GPU硬件平臺(近期還會加入達芬奇 NPU 支持);
模塊化設計,將模型解析、計算圖構建、優化、底層硬件適配、高性能kernel實現各部分抽象隔離,通過Factory Mode注冊、構建設備,方便接入更多的底層硬件、加速方案;
Runtime無任何第三方庫依賴,CPU動態庫尺寸僅約400KB,并提供基礎圖像變換操作,調用簡單便捷??缙脚_模型統一、調用接口統一,通過單個配置參數快速切換。
輕量級部署,TNN助力深度學習提速增效
深度學習對算力的巨大需求一直制約著其更廣泛的落地,尤其是在移動端,由于手機處理器性能弱、算力無法多機拓展、運算耗時長等因素常常導致發熱和高功耗,直接影響到app等應用的用戶體驗。
針對這些問題,優圖團隊對TNN框架做出了三類主要優化:
? 計算優化
針對不同架構在硬件指令發射、吞吐、延遲、緩存帶寬、緩存延遲、寄存器數量等特點,深度優化底層算子,*利用硬件算力;
主流硬件平臺(CPU: ARMv7,ARMv8,GPU: Mali,Adreno, Apple) 深度調優;
CNN核心卷積運算通過Winograd,Tile-GEMM,Direct Conv等多種算法實現,保證不同參數、計算尺度下高效計算;
Op融合:離線分析網絡計算圖,多個小Op(計算量小、功能較簡單)融合運算,減少反復內存讀取、kernel 啟動等開銷。
?低精度優化
支持INT8,FP16低精度計算,減少模型大小、內存消耗,同時利用硬件低精度計算指令加速計算;
支持INT8 Winograd算法,(輸入6bit),在精度滿足要求的情況下,進一步降低模型計算復雜度;
支持單模型多種精度混合計算,加速計算同時保證模型精度。
? 內存優化
高效”內存池”實現:通過 DAG 網絡計算圖分析,實現無計算依賴的節點間復用內存,降低 90% 內存資源消耗;
跨模型內存復用:支持外部實時*用于網絡內存,實現“多個模型,單份內存”。
騰訊優圖基于自身在深度學習方面的技術積累,并借鑒業內主流框架優點,推出了針對手機端的高性能、輕量級移動端推理框架TNN。
TNN在設計之初便將移動端高性能融入核心理念,對2017年開源的ncnn框架進行了重構升級。通過GPU深度調優、ARMSIMD深入匯編指令調優、低精度計算等技術手段,在性能上取得了進一步提升。
目前TNN框架在騰訊QQ、騰訊微視、天天P圖等應用中的落地,也獲得了廣泛的好評。優圖團隊的框架開源,顯示出騰訊在推動底層技術革新和擁抱開源文化的態度。
近期,繼曠視天元Brain++,華為MindSpore框架后,騰訊也開源了其深度學習推理框架。
目前人工智能技術的火熱發展,離不開作為基礎設施的深度學習組件、框架的積累。
在開源文化興起的大環境下,頭部企業對于底層框架的開源,將帶動整個行業對底層技術的關注和投入,從而更好地推動人工智能技術地發展與升級。