當前位置:
首頁 > 新聞 > 賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

雷鋒網按:隨著Facebook 2017年開發者大會F8的召開,Caffe2框架開源,機器學習和深度學習開發社區再一次迎來興奮時刻。在F8大會上,Facebook AML實驗室的 Andrew Tullock和賈揚清上台介紹了Caffe2輕巧、易用和可擴展的特性。二人還強調了「unix 哲學」(即unframework)的設計理念。就像賈揚清在知乎上所說的:「framework不重要,重要的是技術,這也是我一直主張把核心軟體比如說Gloo,NNPAXK,FAISS這些單獨放出來,不放在框架裡面的原因--每個框架都可以拿這些軟體來優化,這才是做community的道理。」 以下為Andrew Tullock和賈揚清演講視頻,另附文字版,由雷鋒網編譯。

Andrew Tullock:Caffe2 在移動端的開發和應用

大家好,我的名字是Andrew Tullock,來自Facebook AML實驗室,與我一起演講的還有我的同事賈揚清。我主要講一下如何將機器學習和深度學習模型裝載到移動端上運行,包括Caffe2涉及到的一些開源的演算法、軟體和工具。揚清會談一談這些技術如何在移動端之外的設備上擴展。

這裡是一個實時神經風格遷移的例子,已經在本周很多Keynote場合提到了。

賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

一年半之前,當風格遷移的技術剛開始應用的時候,在大型GPU集群上處理一幀的圖像,都要花費好幾分鐘的時間。經過我們和其他同仁在演算法和軟體上的改進,這項技術如今變成了可以「實時進行」,並且是在你的手機上實現實時風格轉換,這比幾個月之前進步了好幾個數量級。

我們有一個圖像資料庫,裡面有一些風格化的圖像,比如莫奈或畢加索的畫,拿來訓練CNN。訓練目標是,輸出的圖片風格轉變,但是圖片內容不變,模型訓練完成後,輸入其它圖像,就會發生風格相似的轉變。一開始我們是在Facebook的數據中心的GPU上做離線的模型訓練,後來就轉移到手機上運行,這其中就涉及到iOS和Android系統上高度優化且開源的Caffe2框架。

  • 為什麼Facebook一定要在移動端建造深度學習?

Facebook有數百萬的移動端用戶,但是現在大部分機器學習任務都只能在雲上進行。但是,在移動端進行機器學習任務有以下好處:保護隱私,因為數據不會離開你的移動端;避免網路延遲和帶寬問題;提升用戶體驗,比如優化feed ranking功能。所以我們開始著手,從底層建造一個專門為移動端優化的機器學習框架。

賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

建造的過程中,有幾個關鍵之處。首先一個關鍵,就是我們遵循「unix 哲學」,先建立輕巧的框架核心,之後再盡量完善整個生態。這個框架核心具有很強的擴展性,可以在小型的移動設備和大型GPU集群的伺服器上運行機器學習和深度學習模型。

另一個關鍵之處,是性能。尤其是在運算能力不強的設備上,性能成為瓶頸,這就需要進行一些特殊的設計來改善。首先,在目標平台上使用最高效的底層函數庫(primitive),這裡面會涉及到在GPU上運行的cuDNN、在英特爾CPU上運行的MKL DNN等等。

第三個關鍵之處,就是優化這個框架核心所佔用空間(footprint)。這個涉及到代碼尺寸(code size)以及模型尺寸,將代碼尺寸最小化是圍繞著極簡框架核心(minimal core)展開的,極簡框架核心是一個可以加入插件的架構。而縮小模型尺寸,涉及到便捷地使用最新模型壓縮技術。

賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

  • 針對CPU的優化

Facebook希望在多種類型的設備上快速運行機器學習和深度學習模型,但是並沒有一個通用的模型尺寸適用於所有的設備的後端。我們基線單元(baseline unit)就是現今大部分手機使用的ARM CPU,對於一些新型設備,我們也為GPU甚至是DSP做特定優化。ARM CPU是目前手機上比較常見的進行浮點運算的晶元,其中的一個關鍵點,就是使用 SIMD 單元,所以我們寫了一套定製的 NEON Kernel,這些已經在開源的Caffe2go項目裡面了,這比現存其它的 NEON Kernel 性能有了大幅提升。

對於卷積而言,我們的一個團隊成員和一位實習生,開發了NNPack 庫,包含了一系列先進的卷積演算法(比如針對3x3的卷積的Winograd"s minimal filtering演算法),並且提供了大幅提升性能的工具。我們以上的這些工作,確實換來了性能的大幅提升,尤其是對於圖像映射任務中的大型卷積的效果很好。

賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

  • 針對GPU的優化

再次強調,後端需要足夠小的框架核心,因為我們想把它放到任何地方。我們做到了大約只需要幾百KB,就可以裝載這個框架核心。針對高端的最新iPhone,我們的機器學習和深度學習系統對於GPU的數據並行性是非常友好的。所以我們寫了一套定製的Metal Kernel,也使用了蘋果的Metal Shader庫,為Caffe2打造一個定製的GPU後端。這帶來一系列好處,其中一個就是速度提升,比完全改造之前的速度提升了十倍;相比於已經優化過的CPU庫,針對不同的問題,可以提升2-5倍速度。同時能耗也有了本質提升,所以我們可以進行更多的計算。

賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

Android系統上的GPU也類似,我們與高通合作開發了「驍龍神經處理引擎」(SNPE),如今高通驍龍SoC晶元為大量的手機服務,現在是Caffe2的首要概念( first class concept),我們可以利用這些CPU和DSP,從本質上提升能效和性能。

賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

下圖是一個性能提升的例子。

賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

當我們將模型裝載到數十億移動客戶端上時,最小化overhead就變得尤為重要。你可以把這些模型看做是數百萬、數千萬的浮點數字集合,我們使用模型壓縮技巧,在保持原有質量的同時縮小模型尺寸。我們的工具,來自韓松(Song Han)在2016年ICLR的一篇論文,他曾經也是我們團隊的一名實習生。壓縮的過程分好幾步,首先我們對這些模型進行剪枝(pruning),丟掉一些不那麼重要權重。當我們進行剪枝的時候,我們可以應用一些標準的量化技巧。你可以把這個過程想像成,在數十萬的浮點數字中應用了一個標準的聚類演算法技巧,

賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

我們可以把每個32位的浮點數字都壓縮到幾個比特,代表其成本指數( cost index)。所以,這個過程大幅縮小了模型尺寸,之後可以經過重新訓練,來彌補任何的量化損失,把精確度恢復過來。這當中,我們得到了一套碼本(code book),代表了每一個權重的聚類分配。然後,我們可以應用標準通用的壓縮演算法,我們找到了一個最好用的「ZSTD演算法」,能夠提供異常高水平的壓縮性能。

綜合以上工具,我們可以讓機器學習模型在壓縮5-50倍的情況下,保持同樣的精度。下面,讓我的同事賈揚清給大家講講,這個系統如何應用到更廣闊的機器學習生態里。

賈揚清:Caffe2 擴展到其它設備中

我們想要做的,是建造通用的機器學習和深度學習庫,既可以擴展到數千種的雲端設備中,也可以縮小至你手掌大小的移動設備里。

  • 作為通用系統的Caffe2

機器學習模型可以在很多設備上運行,包括手機、伺服器、雲端、Raspberry Pi等,它也可以適用於工業級應用,比如自動駕駛。所有的這些應用場景特點不一,需求也不一樣,開發出一套系統來適應這些不同的需求,是非常具有挑戰性的。

Andrew在前面提到了「unix 哲學」,這就是我們一直遵守的原則。我們打造非常輕巧便攜的框架核心,可以適用於各種移動端平台。這個核心用來管理各種底層函數庫,也就是一個機器學習系統涉及的各個方面(包括卷積、池化等等)。然後,我們根據不同的運行環境插入不同的組件,來運行這些底層函數庫。在伺服器端,我們使用Gloo來進行大規模的訓練,在移動端用NNPack庫,在其它設備上使用Metal,等等。

賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

  • Caffe2的易用性

當然,我們意識到,光靠Facebook的力量,不可能將這個系統放到所有的設備中。所以我們要打造的平台系統,非常注重開發的易用性,來便捷地運行不同特色的代碼。這裡有一個例子,機器學習領域有一個應用叫做 TSNE(高維數據可視化工具)的工具,在Caffe2里使用這個非常簡單,代碼如下,體現出Caffe2的彈性和可定製化。

賈揚清F8現場演講:從手機到大型伺服器集群,Caffe2如何適用於不同設備和場景?(附視頻)

  • 健康生態需要合作夥伴共同開發

以上我們提到的功能,已經應用到了Facebook的很多產品里,例如計算機視覺、機器翻譯、語音識別和預測。如今移動設備、PC機、可穿戴設備、雲端等構成了大型生態,所以非常重要的一點是,整個行業夥伴合作起來構建一個聯盟,創造健康的生態來持續推進深度學習的發展。

在這裡,我們非常高興地向大家展示一個產業線合作的成功案例。我想,大家應該都知道GPU對如今的機器學習發展很重要,我們與Nvidia進行多方位的合作,比如我們將cuDNN庫整合進我們的系統中,打造成了可能是迄今為止最快的一個計算機視覺系統,可以將數百萬的圖像在幾分鐘內處理完。

另外一個例子,就是與英特爾合作。當進入部署的環節,將一個深度學習系統放到雲端,非常重要的一點就是,有高性能的CPU庫。其中有一系列的工作稱為MLP(多層感知),對於預測工作非常重要,我們與英特爾合作開發了一個MKL DNN庫,整合進Caffe2當中。

前面我們談到,在移動端與高通驍龍合作了SNPE庫,可以運行機器學習模型,尤其是CNN,往往能在非常優秀的能耗表現下,保持快5倍的速度。使用者不用擔心具體的硬體,快速上手使用GPU和DSP等新型硬體。當然,如今離開雲什麼也幹不了,或許你在用PC機運行機器學習模型的時候,會感到很困難,所以我們也與亞馬遜及微軟合作,將這些深度學習庫部署在雲上。你可以使用一個雲端實例,從而集中於手頭的研究和產品工作,而不需要越過重重關卡自己去編製一個庫。

Caffe2已經在Facebook內部進行了很多嚴格測試,現在能夠跟各位合作夥伴一起共同推進Caffe2在深度學習里的應用,我們感到很激動,也很榮幸。以上談到的工具和庫都已經放到網上了,我們將會持續致力於社區的工作,讓AI提升人們的生活水平,拉近人們之間的關係,創造一個更友善的世界。

註:恆亮和黃鑫對本文亦有貢獻。

更多雷鋒網文章:

專訪FPGA 2017最佳論文得主深鑒科技:深度學習的最大瓶頸是帶寬問題而非計算

對話李志飛:時隔四年,出門問問為何又殺入語音助手市場?

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

從NLP到「自然語言理解」,Facebook如何讓Messenger更懂人類?
觀點 | 智能網聯汽車的人機交互體驗與安全策略
抓住那個亂「嗶——」的人!
「光語者"謝崇進:我對摩爾定律的承諾
深度 | 「光語者」阿里技術總監謝崇進: 我對摩爾定律的承諾

TAG:雷鋒網 |

您可能感興趣

賈揚清 F8 現場演講:從手機到大型伺服器集群,Caffe2 如何適用於不同設備和場景?
Phone Drive:超實用的手機對手機/電腦文件傳輸管理工具 iOS
Pixelio便攜3d掃描儀 需與手機配合使用
[視頻]手機秒投平板:99 美元的 Superscreen 帶給你更好的大屏體驗
滿場網紅,Anglababy 也到現場,美圖 M8 手機夠「時尚」?
[視頻]Mophie推出新款Galaxy S8電池手機套:兼容無線快充
Moto C/C Plus曝光:針對首次接觸智能手機的入門用戶
微軟Surface Phone概念手機:雙攝3D掃描鏡頭、可摺疊
Galaxy S8 mini版手機或將推出,更小的屏幕和電池
Google 谷歌 Pixel XL智能手機攝像頭拍攝體驗報告 [Soomal]
evleaks:Moto C/C Plus針對首次接觸智能手機的用戶
Huawei 華為 Mate9 Pro 智能手機 圖集 [Soomal]
vivo Xplay6磨砂黑版 智能手機 圖集 [Soomal]
遠離科技的小鎮:禁用WiFi和手機
Huawei 華為 Mate9 Pro 智能手機屏幕測評報告 [Soomal]
HTC 在 Android 陣營的 9 年演變史,一支手機一場夢
Nextbit Robin 體驗:一台容量「永遠夠用」的手機
HTC U手機泄漏,代號為Ocean,將配備Sense 9
iPhone 8與Galaxy S8 大屏幕智能手機之爭