TNN是一款移動(dòng)端推理框架,具有高性能、輕量級(jí)的特點(diǎn),擁有跨平臺(tái)、高性能、模型壓縮、代碼裁剪等眾多優(yōu)勢(shì)。目前TNN已經(jīng)在手機(jī)QQ、微視、P圖等應(yīng)用中落地。
TNN框架在原有Rapidnet、ncnn框架的基礎(chǔ)上進(jìn)一步加強(qiáng)了對(duì)移動(dòng)端設(shè)備的支持,在性能方面也有所優(yōu)化,同時(shí)借鑒了業(yè)界主流開源框架的優(yōu)點(diǎn),高性能和良好拓展性。
這次騰訊優(yōu)圖開源TNN,也是希望其推理框架能夠進(jìn)一步完善,共同為AI構(gòu)建一個(gè)開放共進(jìn)的生態(tài)環(huán)境,同時(shí)保持不斷的迭代更新。
騰訊優(yōu)圖已在GitHub上開源的TNN,可以通過下面的網(wǎng)址進(jìn)入
https://github.com/Tencent/TNN
計(jì)算優(yōu)化,算力強(qiáng)
TNN對(duì)主流平臺(tái)的適應(yīng)性強(qiáng),對(duì)CPU: ARMv7, ARMv8, GPU: Mali, Adreno, Apple) 深度調(diào)優(yōu)。
同時(shí)優(yōu)化了對(duì)移動(dòng)端的適應(yīng)性,輕量級(jí),高算力。針對(duì)不同架構(gòu)在硬件指令發(fā)射、吞吐、延遲、緩存帶寬、緩存延遲、寄存器數(shù)量等特點(diǎn),深度優(yōu)化底層算子,極致利用硬件算力。
CNN 核心卷積運(yùn)算通過 Winograd,Tile-GEMM, Direct Conv 等多種算法實(shí)現(xiàn),保證不同參數(shù)、計(jì)算尺度下高效計(jì)算。
保證低精度優(yōu)化,支持 INT8, FP16 低精度計(jì)算,減少模型大小、內(nèi)存消耗,同時(shí)利用硬件低精度計(jì)算指令加速計(jì)算;支持 INT8 Winograd 算法,(輸入6bit), 在精度滿足要求的情況下,進(jìn)一步降低模型計(jì)算復(fù)雜度;支持單模型多種精度混合計(jì)算,加速計(jì)算同時(shí)保證模型精度?! ?strong>
內(nèi)存優(yōu)化,輕量級(jí)匹配深度學(xué)習(xí)
通過 DAG 網(wǎng)絡(luò)計(jì)算圖分析,實(shí)現(xiàn)無計(jì)算依賴的節(jié)點(diǎn)間復(fù)用內(nèi)存,降低 90% 內(nèi)存資源消耗。同時(shí)支持外部實(shí)時(shí)指定用于網(wǎng)絡(luò)內(nèi)存,實(shí)現(xiàn)「多個(gè)模型,單份內(nèi)存」。
TNN上手容易,三個(gè)步驟就能完成模型在目標(biāo)平臺(tái)上的部署。訓(xùn)練好的模型可以用TNN提供的工具轉(zhuǎn)換成TNN模型;然后編譯目標(biāo)平臺(tái)的TNN引擎;最后在自己的應(yīng)用程序中嵌入對(duì)TNN的調(diào)用,都有詳細(xì)的模型來輔助完成。
騰訊優(yōu)圖不斷對(duì)優(yōu)質(zhì)項(xiàng)目持續(xù)開源,促進(jìn)構(gòu)建友好開發(fā)者生態(tài),為中國(guó)企業(yè)的科技力量添磚加瓦。