快 2 倍,TFLite 推出基于 OpenCL 的 Android 移動(dòng) GPU 推理引擎

TensorFlow Lite(TFLite)現(xiàn)在支持在 Android 設(shè)備上使用 OpenCL 進(jìn)行 GPU 推理,這一改進(jìn)使得 TFLite 性能比使用現(xiàn)有 OpenGL 后端提高了約 2 倍。

快 2 倍,TFLite 推出基于 OpenCL 的 Android 移動(dòng) GPU 推理引擎

TensorFlow Lite 團(tuán)隊(duì)介紹了目前其使用 OpenCL 在移動(dòng) GPU 推理上所取得的進(jìn)展,并宣布正式推出基于 OpenCL 的 Android 移動(dòng) GPU 推理引擎,該引擎在大小合理的神經(jīng)網(wǎng)絡(luò)上可比現(xiàn)有的 OpenGL 后端提供高達(dá) 2 倍的性能提升。

OpenGL ES 3.1 中添加了計(jì)算著色器,但其向后兼容的 API 設(shè)計(jì)決策限制了發(fā)揮 GPU 的全部潛能。另一方面,OpenCL 從一開(kāi)始就是為使用各種加速器進(jìn)行計(jì)算而設(shè)計(jì)的,因此與移動(dòng) GPU 推理領(lǐng)域更加相關(guān)。

因此,TFLite 團(tuán)隊(duì)研究了基于 OpenCL 的推理引擎,引入了一些功能,使得能夠優(yōu)化移動(dòng) GPU 推理引擎。

相比之下,新的移動(dòng) GPU 推理引擎有以下要點(diǎn):
性能分析:與 OpenGL 相比,優(yōu)化 OpenCL 后端要容易得多,因?yàn)?OpenCL 提供了良好的分析功能與高通 Adreno 很好的支持。使用這些概要分析 API,能夠非常精確地測(cè)量每個(gè)內(nèi)核調(diào)度的性能。
優(yōu)化工作組大?。?/strong>高通 Adreno GPU 上的 TFLite GPU 性能對(duì)工作組大小非常敏感,選擇正確的工作組大小可以提高性能,反之亦然。借助上述 OpenCL 中的性能分析功能,能夠?qū)崿F(xiàn)針對(duì)工作組大小的優(yōu)化器,這使平均速度提高了 50%。
原生 16 位精度浮點(diǎn)(FP16):OpenCL 原生支持 FP16,并要求加速器指定數(shù)據(jù)類(lèi)型的可用性。作為正式規(guī)范的一部分,即使是某些較舊的 GPU,例如 2012 年推出的 Adreno 305,也可以發(fā)揮其全部功能。
恒定內(nèi)存(constant memory):OpenCL 具有恒定內(nèi)存的概念。高通增加了一個(gè)物理內(nèi)存能力,使其非常適合與 OpenCL 的恒定內(nèi)存一起使用。

對(duì)于某些特殊情況,例如在神經(jīng)網(wǎng)絡(luò)開(kāi)始或末尾非常薄的層,這被證明是非常有效的。Adreno 上的 OpenCL 通過(guò)與該物理恒定內(nèi)存和上述原生 FP16 支持的協(xié)同作用,能夠大大超越 OpenGL 的性能。

TFLite 具體展示了在 CPU(大內(nèi)核上的單線程)使用現(xiàn)有 OpenGL 后端的 GPU 以及使用新的 OpenCL 后端的 GPU 上的性能對(duì)比。

快 2 倍,TFLite 推出基于 OpenCL 的 Android 移動(dòng) GPU 推理引擎
快 2 倍,TFLite 推出基于 OpenCL 的 Android 移動(dòng) GPU 推理引擎

上圖分別說(shuō)明了在兩個(gè)著名的神經(jīng)網(wǎng)絡(luò) MNASNet 1.3 和 SSD MobileNet v3(大型)上使用 OpenCL 的特定 Android 設(shè)備上推理引擎的性能??梢钥吹?,新的 OpenCL 后端的速度大約是 OpenGL 后端的兩倍,并且 OpenCL 在較大的網(wǎng)絡(luò)上的性能甚至更好。

此外,因?yàn)?OpenCL 本身不屬于 Android 的一部分,某些用戶(hù)可能無(wú)法使用。為了簡(jiǎn)化開(kāi)發(fā),TFLite GPU 委托添加了一些修改,首先在運(yùn)行時(shí)檢查 OpenCL 的可用性,如果可用,將使用新的 OpenCL 后端,否則將退回到現(xiàn)有的 OpenGL 后端。

實(shí)際上,OpenCL 后端自 2019 年中期以來(lái)一直存在于 TensorFlow 存儲(chǔ)庫(kù)中,并且通過(guò) TFLite GPU delegate v2 無(wú)縫集成。

文末彩蛋

另外,現(xiàn)在馬上就是“金九銀十跳槽期”了,有不少朋友都在躍躍欲試了,對(duì)于程序員來(lái)說(shuō),要學(xué)習(xí)的知識(shí)內(nèi)容、技術(shù)有太多太多難點(diǎn),要想不被面試淘汰就只能提前做好復(fù)習(xí)規(guī)劃、認(rèn)真刷題,在學(xué)習(xí)中不斷提升自己,個(gè)人建議在面試之前給自己做一次完整的知識(shí)梳理刷題是必不可少的。做知識(shí)梳理能加深你對(duì)原理的掌握程度,而刷題能提高你對(duì)技術(shù)面試的廣度和深度。

請(qǐng)記住,從來(lái)都是只是我們?nèi)ミm應(yīng)環(huán)境,而不是環(huán)境來(lái)適應(yīng)我們!

附上我之前收集的二十套一二線互聯(lián)網(wǎng)公司Android面試真題(含BAT、小米、華為、美團(tuán)、滴滴)和我自己整理Android復(fù)習(xí)筆記(包含Android基礎(chǔ)知識(shí)點(diǎn)、Android擴(kuò)展知識(shí)點(diǎn)、Android源碼解析、設(shè)計(jì)模式匯總、Gradle知識(shí)點(diǎn)、常見(jiàn)算法題匯總共計(jì)732頁(yè))。

需要①二十套一二線互聯(lián)網(wǎng)公司Android面試真題(含BAT、小米、華為、美團(tuán)、滴滴)+②Android復(fù)習(xí)筆記(包含Android基礎(chǔ)知識(shí)點(diǎn)、Android擴(kuò)展知識(shí)點(diǎn)、Android源碼解析、設(shè)計(jì)模式匯總、Gradle知識(shí)點(diǎn)、常見(jiàn)算法題匯總共計(jì)732頁(yè))的朋友————(此處免費(fèi)打包領(lǐng)?。?/a>

騰訊Android面試真題(Java部分)

騰訊Android面試真題(Android部分)

一二線互聯(lián)網(wǎng)公司Android面試真題分類(lèi)總覽

需要①二十套一二線互聯(lián)網(wǎng)公司Android面試真題(含BAT、小米、華為、美團(tuán)、滴滴)+②Android復(fù)習(xí)筆記(包含Android基礎(chǔ)知識(shí)點(diǎn)、Android擴(kuò)展知識(shí)點(diǎn)、Android源碼解析、設(shè)計(jì)模式匯總、Gradle知識(shí)點(diǎn)、常見(jiàn)算法題匯總共計(jì)732頁(yè))的朋友
————(此處免費(fèi)打包領(lǐng)?。?/a>

友情鏈接更多精彩內(nèi)容