OpenCL版Caffe:高速跨平臺(tái)機(jī)器學(xué)習(xí)框架

原作者:Murat Demirbas? ? 2017年9月16日星期六

翻譯:Wanglin Luo

????2016年該論文發(fā)表了基于OpenCL架構(gòu)的深度學(xué)習(xí)框架Caffe。文中明確指出,Caffe已經(jīng)將底層基礎(chǔ)開發(fā)架構(gòu)CUDA替換成了通用規(guī)范的開源架構(gòu)OpenCL。Caffe源碼最先提交在AMD公司的GitHub開源倉(cāng)庫(kù)https://github.com/amd/OpenCL-caffe下,然后最終提交至了伯克利大學(xué)視覺(jué)實(shí)驗(yàn)室https://github.com/BVLC/caffe/tree/opencl進(jìn)行維護(hù)。

????日常開發(fā)中,一旦我們開發(fā)訓(xùn)練好DNN(深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò))模型后,我們總希望能以最簡(jiǎn)單的方式將其部署到各個(gè)平臺(tái)的不同應(yīng)用程序中,比如服務(wù)器、NVDIA GPU、AMD GPU、ARM GPU、甚至智能手機(jī)和平板電腦等。但事與愿違,大多數(shù)深度學(xué)習(xí)框架,為兼容英偉達(dá)GPUs,也包括Caffe在內(nèi)都集成了CUDA工具庫(kù),然而這限制了跨平臺(tái)的兼容性。

????OpenCL 支持異構(gòu)計(jì)算,具有跨平臺(tái)遷移的能力。因?yàn)樗@得了大部分商業(yè)芯片制造商的支持,例如Altera,AMD,Apple,ARM Holdings,Creative Technology,IBM,Imagination Technologies,Intel,Nvidia,Qualcomm,Samsung,Vivante,Xilinx,ZiiLABS等。為了保證平臺(tái)兼容性,OpenCL 會(huì)檢查特定的驅(qū)動(dòng)并在運(yùn)行時(shí)編譯。

????OpenCL最初由Apple公司開發(fā),后來(lái)將這一草案提交至Khronos Group團(tuán)隊(duì)。它被 Android、Linux、FreeBSD、MacOS 和 Windows 在內(nèi)的很多操作系統(tǒng)支持。

OpenCL基礎(chǔ)架構(gòu)遷移和優(yōu)化

????Caffe框架最初是用C++和CUDA編寫開發(fā)。Caffe的CUDA層負(fù)責(zé)優(yōu)化硬件資源分配和使用,例如CPU和GPU間任務(wù)調(diào)度、內(nèi)存管理和任務(wù)傳輸。由于 CUDA和OpenCL在設(shè)備抽象、緩存管理、同步處理和數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)上的差異,將底層基礎(chǔ)開發(fā)架構(gòu)CUDA替換成通用規(guī)范的開源架構(gòu)OpenCL并沒(méi)有看上去那么簡(jiǎn)單。

????文中的解決方案是,將OpenCL遷移過(guò)程分為兩個(gè)階段。第一階段是C++機(jī)器學(xué)習(xí)接口、OpenCL封裝器和GPU內(nèi)核這三個(gè)層的分層遷移。分層遷移意味著逐層移植各層,并使其各層進(jìn)行單元測(cè)試,以確保DNN深度神經(jīng)網(wǎng)絡(luò)算法的正確性和收斂性。

????在階段一中將接口、封裝器和內(nèi)核逐層都遷移到OpenCL下之后,階段二將著重優(yōu)化其性能。通過(guò)使用AMD分析工具、CodeXL、并結(jié)合OpenCL事件日志發(fā)現(xiàn),完成第一階段OpenCL的遷移后,還存在一些大的性能瓶頸。OpenCL 的在線編譯器會(huì)頻繁調(diào)用 clBuildProgram 來(lái)創(chuàng)建 GPU 內(nèi)核——訓(xùn)練 Cifar 數(shù)據(jù)集的 100 次迭代中,clBuildProgram 就調(diào)用了 63 次,占用總運(yùn)行時(shí)間多達(dá) 68%;另一個(gè)瓶頸在于,卷積層占用了大多數(shù)計(jì)算時(shí)間。由于不同層間矩陣形狀不規(guī)則(矩陣長(zhǎng)寬比過(guò)大),BLAS 的效果相當(dāng)差。

????為了解決這些問(wèn)題,本文提出了三種關(guān)鍵的優(yōu)化技術(shù),包括內(nèi)核緩存以避免OpenCL在線編譯開銷,一種用于提升數(shù)據(jù)并行性的批處理數(shù)據(jù)布局方案,以及用于提升任務(wù)并行性的多個(gè)命令隊(duì)列。優(yōu)化技術(shù)有效地將DNN問(wèn)題大小映射到現(xiàn)有的OpenCL數(shù)學(xué)庫(kù)中,并提高硬件資源利用率,其性能將提高4.5倍。

測(cè)評(píng)

????該測(cè)評(píng)對(duì)比了Caffe在CUDA與OpenCL等架構(gòu)下,分別在NVIDIA TitanX和AMD R9 Fury顯卡上,對(duì)ImageNet視覺(jué)資源庫(kù)進(jìn)行AlexNet DNN深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練,且在100頻次小批量的Alexnet模型訓(xùn)練中的性能表現(xiàn),其中CUDA下兼并了cuBLAS矩陣加速庫(kù)和cuDNN GPU加速庫(kù)的第二個(gè)版本。OpenCL兼并了clBLAS矩陣加速庫(kù)的原始版本和高性能的批處理。下圖所示優(yōu)化了clBLAS的OpenCL Caffe與cuBLAS Caffe的性能對(duì)比。

示圖

????相對(duì)于最佳性能下的機(jī)器學(xué)習(xí)cuDNN庫(kù),OpenCL Caffe仍然存在2倍的性能差距,因?yàn)樗狈ψ罴研阅?。作者認(rèn)為,綜合大約市價(jià)560美元的AMD R9 Fury和大約市價(jià)1000美元的NVIDIA TitanX的價(jià)格差異,以及目前的性能表現(xiàn),OpenCL caffe在性價(jià)比方面仍具有競(jìng)爭(zhēng)力。

跨平臺(tái)能力分析

????很自然地會(huì)考慮到一個(gè)問(wèn)題,就是通過(guò)在AMD顯卡上的測(cè)試,OpenCL架構(gòu)上的Caffe是否與ARM和MALI兼容呢?這方面的測(cè)試可以很好地反映 OpenCL 版 Caffe 的兼容性,然而并沒(méi)有在這篇文章中提及。

????但是,作者也覺(jué)察到了兼容性方面的問(wèn)題?!疤囟ㄖ圃焐痰臄U(kuò)展性和模板關(guān)鍵字方面存在一些差異。例如caffe在GPU內(nèi)核中使用了大量模板來(lái)支持不同的浮點(diǎn)精度。但事實(shí)證明,不同制造商的模板關(guān)鍵字不同,這增加了相同代碼不經(jīng)修改在不同平臺(tái)運(yùn)行的難度?!?

OpenCL深度學(xué)習(xí)框架的支持仍然不是很好,但愿它每天都在不斷優(yōu)化改進(jìn),正如本文所示。

論文幻燈片演示文稿地址:

http://www.iwocl.org/wp-content/uploads/iwocl-2016-opencl-caffe.pdf


感謝InfoQ翻譯團(tuán)隊(duì)Alice Ding的點(diǎn)評(píng):-)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Caffe是一個(gè)深度學(xué)習(xí)框架,具有表達(dá)力強(qiáng)、速度快和模塊化的思想,由伯克利視覺(jué)學(xué)習(xí)中心(BVLC)和社區(qū)貢獻(xiàn)者開發(fā)...
    梁睿坤閱讀 1,593評(píng)論 0 4
  • GPU虛擬化 一、GPU概述 GPU的英文名稱為Graphic Processing Unit,GPU中文全稱為計(jì)...
    oo水桶oo閱讀 3,280評(píng)論 0 2
  • CUDA和OpenCL都是實(shí)現(xiàn)計(jì)算機(jī)異構(gòu)并行計(jì)算架構(gòu),然而CUDA是針對(duì)NVIDIA公司的GPU,而OpenCL是...
    王偵閱讀 8,250評(píng)論 0 4
  • CUDA和OpenCL都是實(shí)現(xiàn)計(jì)算機(jī)異構(gòu)并行計(jì)算架構(gòu),然而CUDA是針對(duì)NVIDIA公司的GPU,而OpenCL是...
    ai領(lǐng)域閱讀 18,448評(píng)論 0 4
  • 2017年的金秋季節(jié)快要結(jié)束了,每件衣服在這個(gè)時(shí)候于我而言就是一個(gè)個(gè)的擺設(shè),看著鏡子里的那個(gè)肉乎乎的模樣,...
    喜馬拉雅兀鷲閱讀 865評(píng)論 0 1

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