TensorFlow Lite(TFLite)現(xiàn)在支持在 Android 設(shè)備上使用 OpenCL 進行 GPU 推理陕赃,這一改進使得 TFLite 性能比使用現(xiàn)有 OpenGL 后端提高了約 2 倍。
TensorFlow Lite 團隊介紹了目前其使用 OpenCL 在移動 GPU 推理上所取得的進展晨抡,并宣布正式推出基于 OpenCL 的 Android 移動 GPU 推理引擎氛悬,該引擎在大小合理的神經(jīng)網(wǎng)絡(luò)上可比現(xiàn)有的 OpenGL 后端提供高達(dá) 2 倍的性能提升。
OpenGL ES 3.1 中添加了計算著色器耘柱,但其向后兼容的 API 設(shè)計決策限制了發(fā)揮 GPU 的全部潛能如捅。另一方面,OpenCL 從一開始就是為使用各種加速器進行計算而設(shè)計的调煎,因此與移動 GPU 推理領(lǐng)域更加相關(guān)镜遣。
因此,TFLite 團隊研究了基于 OpenCL 的推理引擎士袄,引入了一些功能悲关,使得能夠優(yōu)化移動 GPU 推理引擎。
相比之下娄柳,新的移動 GPU 推理引擎有以下要點:
性能分析:與 OpenGL 相比寓辱,優(yōu)化 OpenCL 后端要容易得多,因為 OpenCL 提供了良好的分析功能與高通 Adreno 很好的支持赤拒。使用這些概要分析 API秫筏,能夠非常精確地測量每個內(nèi)核調(diào)度的性能。
優(yōu)化工作組大锌嫱凇:高通 Adreno GPU 上的 TFLite GPU 性能對工作組大小非常敏感这敬,選擇正確的工作組大小可以提高性能,反之亦然蕉朵。借助上述 OpenCL 中的性能分析功能鹅颊,能夠?qū)崿F(xiàn)針對工作組大小的優(yōu)化器,這使平均速度提高了 50%墓造。
原生 16 位精度浮點(FP16):OpenCL 原生支持 FP16堪伍,并要求加速器指定數(shù)據(jù)類型的可用性。作為正式規(guī)范的一部分觅闽,即使是某些較舊的 GPU帝雇,例如 2012 年推出的 Adreno 305,也可以發(fā)揮其全部功能蛉拙。
恒定內(nèi)存(constant memory):OpenCL 具有恒定內(nèi)存的概念尸闸。高通增加了一個物理內(nèi)存能力,使其非常適合與 OpenCL 的恒定內(nèi)存一起使用孕锄。
對于某些特殊情況吮廉,例如在神經(jīng)網(wǎng)絡(luò)開始或末尾非常薄的層,這被證明是非常有效的畸肆。Adreno 上的 OpenCL 通過與該物理恒定內(nèi)存和上述原生 FP16 支持的協(xié)同作用宦芦,能夠大大超越 OpenGL 的性能。
TFLite 具體展示了在 CPU(大內(nèi)核上的單線程)使用現(xiàn)有 OpenGL 后端的 GPU 以及使用新的 OpenCL 后端的 GPU 上的性能對比轴脐。
上圖分別說明了在兩個著名的神經(jīng)網(wǎng)絡(luò) MNASNet 1.3 和 SSD MobileNet v3(大型)上使用 OpenCL 的特定 Android 設(shè)備上推理引擎的性能大咱√窠В可以看到,新的 OpenCL 后端的速度大約是 OpenGL 后端的兩倍碴巾,并且 OpenCL 在較大的網(wǎng)絡(luò)上的性能甚至更好溯捆。
此外草慧,因為 OpenCL 本身不屬于 Android 的一部分苔货,某些用戶可能無法使用。為了簡化開發(fā)一汽,TFLite GPU 委托添加了一些修改旷痕,首先在運行時檢查 OpenCL 的可用性碳锈,如果可用,將使用新的 OpenCL 后端欺抗,否則將退回到現(xiàn)有的 OpenGL 后端售碳。
實際上,OpenCL 后端自 2019 年中期以來一直存在于 TensorFlow 存儲庫中绞呈,并且通過 TFLite GPU delegate v2 無縫集成贸人。
文末彩蛋
另外,現(xiàn)在馬上就是“金九銀十跳槽期”了佃声,有不少朋友都在躍躍欲試了艺智,對于程序員來說,要學(xué)習(xí)的知識內(nèi)容圾亏、技術(shù)有太多太多難點十拣,要想不被面試淘汰就只能提前做好復(fù)習(xí)規(guī)劃封拧、認(rèn)真刷題,在學(xué)習(xí)中不斷提升自己夭问,個人建議在面試之前給自己做一次完整的知識梳理和刷題是必不可少的泽西。做知識梳理能加深你對原理的掌握程度,而刷題能提高你對技術(shù)面試的廣度和深度缰趋。
請記住捧杉,從來都是只是我們?nèi)ミm應(yīng)環(huán)境,而不是環(huán)境來適應(yīng)我們秘血!
附上我之前收集的二十套一二線互聯(lián)網(wǎng)公司Android面試真題(含BAT味抖、小米、華為灰粮、美團仔涩、滴滴)和我自己整理Android復(fù)習(xí)筆記(包含Android基礎(chǔ)知識點、Android擴展知識點谋竖、Android源碼解析红柱、設(shè)計模式匯總、Gradle知識點蓖乘、常見算法題匯總共計732頁)锤悄。
需要①二十套一二線互聯(lián)網(wǎng)公司Android面試真題(含BAT、小米嘉抒、華為零聚、美團、滴滴)+②Android復(fù)習(xí)筆記(包含Android基礎(chǔ)知識點些侍、Android擴展知識點隶症、Android源碼解析、設(shè)計模式匯總岗宣、Gradle知識點蚂会、常見算法題匯總共計732頁)的朋友————(此處免費打包領(lǐng)取)
騰訊Android面試真題(Java部分)
騰訊Android面試真題(Android部分)
一二線互聯(lián)網(wǎng)公司Android面試真題分類總覽
需要①二十套一二線互聯(lián)網(wǎng)公司Android面試真題(含BAT耗式、小米胁住、華為、美團刊咳、滴滴)+②Android復(fù)習(xí)筆記(包含Android基礎(chǔ)知識點彪见、Android擴展知識點、Android源碼解析娱挨、設(shè)計模式匯總余指、Gradle知識點、常見算法題匯總共計732頁)的朋友
————(此處免費打包領(lǐng)弱伟印)