Jeff Dean與David Patterson:不思考體系結構的深度學習研究者不是好工程師

機器之心原創,做者:邱陸陸。算法

今年 1 月,谷歌人工智能負責人 Jeff Dean(當時仍是谷歌大腦負責人)與 2017 年圖靈獎得主、體系結構巨擘 David Patterson(當時獲獎結果還沒有公佈)聯合發表了題爲《計算機體系結構黃金時代:賦能機器學習革命》的文章。文章指出,機器學習算法正在革命性地着手解決人類社會最爲巨大的一些挑戰,所以,不難想象,在不遠的未來,不管是數據中心仍是終端設備,都將會出現專用於機器學習計算的硬件。這樣的硬件會具備什麼特性?在文章中,做者列出了一系列硬件設計者須要考慮到的關鍵問題,這些問題對深度學習研究者也十分具備啓發性。網絡

另外一方面,在摩爾定律逐漸失效和深度學習的算力需求如無底洞般膨脹的今天,深度學習研究者們也在思考:可否改進算法以使其更適應計算硬件?可否幫助優化系統配置?在近日舉行的首屆「清華-谷歌 AI 學術研討會」上,Jeff Dean 談了談「接下來咱們但願設計什麼樣的模型」,來自谷歌大腦的研究員 Azalia Mirhoseini 則給出了主題演講「如何用強化學習方法進行系統優化」。數據結構

谷歌人工智能負責人 Jeff Dean

若是將這幾份工做聯繫起來,咱們彷佛就能看出,在深度學習這個 Arxiv 論文增速超越摩爾定律的領域裏,谷歌大腦的研究者們如何同時思考軟硬件問題以實現系統最佳性能與最佳效率。架構

「超越摩爾定律」的機器學習

在《黃金時代》論文裏,Jeff 和 David 以谷歌開發的兩代機器學習 ASIC(用於加速推理的 TPUv1 和用於加速訓練的 TPUv2)爲例,介紹了不少設計專用硬件的思路。進行硬件設計要着眼於至少 5 年後的模型:如今開始一款 ASIC 的設計,它大約能夠在 2 年後投入使用,而一款專用硬件至少須要可以保持 3 年的競爭力纔有價值。那麼在這樣的前提下,設計深度學習專用硬件要考慮哪些問題?在文章中,做者列出了六個這樣的關鍵點,按照從「純架構相關」到「純機器學習算法相關」的順序,分別是:訓練、批規模、稀疏性與嵌入、參數量化與提煉、帶有軟記憶機制的神經網絡以及元學習。機器學習


訓練函數

谷歌從 2013 年開始設計的第一代 TPU 是針對推理而非訓練工做設計的,必定程度上是爲訓練設計硬件架構要更加困難:性能

  • 第一,訓練的運算量是推理的 3 倍以上。
  • 第二,由於要將所有激活值存儲以進行反向傳播,訓練過程所需的存儲也遠比推理高。
  • 最後,訓練的可擴展性遠不如推理,由於須要進行大量昂貴的序列計算。

可是,爲訓練設計 ASIC 是有價值的,由於研究者的時間是寶貴的而耐心是有限的,若是一次實驗須要跑 30 天甚至更長,大概大多數人會選擇放棄探索這個方向。學習

第二代 TPU 就面向訓練開發。Jeff 在屢次演講中提到了一些 TPU v2 的成功應用案例,包括用四分之一個 pod 把谷歌的搜索排序模型的訓練提速到 14.2 倍,把處理圖片的模型訓練提速到 9.8 倍等。優化

TPUv2 在谷歌內部的應用案例

並且,TPUv2 具備幾乎是線性的擴展性,64 塊 TPU 能夠組成一個 TPU pod,提供最高 11.5 PFLOPS 的算力。用一塊 TPUv2 把 ResNet-50 訓練到 76% 準確度須要 1402 分鐘,用二分之一個 pod(32 塊 TPUv2)只須要 45 分鐘(31.2 倍速)。人工智能

TPUv2 近乎線性可擴展

雖然 TPU 雲價格不菲,但時間就是生命,生命就是金錢。另外,若是你是一位有志於機器學習研究並致力於開源本身的工做,谷歌正以 TensorFlow 研究雲的形式向研究者免費提供一千塊 TPU。


批規模(batch size)

批量是越大越好仍是越小越好?這是一個在研究上仍然有爭議的問題。

直覺上,理想選擇是帶有動量的批規模爲 1 的隨機梯度降低(SGD with momentum at a minibatch size of 1),這時單位計算量帶來的準確率提高最大。另外選擇一個大於 1 的批規模至關於把輸入維度直接提高了一維(Jeff 原話:一想到這兒我就頭痛。)然而在當前用於訓練的硬件中,以 GPU 爲例,它執行程序時的基本單元,即每一個 warp 包含 32 個線程(threads),所以若是你的批規模不是 32 的整數倍,將會致使效率下降,因此現行的模型一般都採用 32 或者 64 做爲批規模。

批規模與計算效率

可是,從 2017 年開始,有一些看起來前景明朗的研究顯示,咱們能夠用 8192 甚至 32768 做爲批規模來高效訓練用於圖像的卷積神經網絡。

直到批規模上升到 8k 左右,驗證集的錯誤率仍然能保持相對低的水平

source:Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour (1706.02677)

值得一提的是,Yann LeCun 對於增長批量持有強烈反對態度,他曾經在今年 4 月份轉發一篇支持小批量的論文稱,「用巨型批量作訓練有害健康……選擇 32 而不是 1 作批量只能說明咱們的硬件不好勁。」

哦,8192 那篇論文是 Facebook 的工做,做者列表裏包括 Ross Girshick,賈揚清,還有何愷明……


稀疏性與嵌入(Sparsity and Embeddings)

「咱們想要更大的模型,但但願每個樣本只激活它的一小部分。」又是一個 Jeff 反覆提到的趨勢。

「咱們想要什麼樣的模型?」

大模型是好的,由於巨大的參數量意味着咱們能夠記住數據集方方面面的特性。可是若是咱們在處理每個數據的時候都須要激活整個模型,這意味着巨大的計算成本。所以,最理想的狀態是擁有一個能夠分割成衆多獨立的小部分的龐大模型,每一部分都承擔不一樣分工,當數據進入模型時,模型按任務需求激活少數幾個部,讓大部分保持閒置狀態。這樣的特性又能夠稱做「粗粒度稀疏性」。

粗粒度稀疏性Source: Exploring the Regularity of Sparse Structure in Convolutional Neural Networks (1705.08922)

谷歌在 ICLR2017 的一篇論文上就提出了一個叫作混合專家層(MoE)的概念。每個「專家」至關於神經網絡中的一小撮參數,只不過比普通神經網絡裏的參數更容易訓練,而一層由超過 2000 個專家組成。

MoE 層的結構Source: Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer (1701.06538)

訓練過程當中,除了學習模型參數,還要學習如何作路由選擇(routing),即如何根據一個樣本選擇激活的「專家」。在語言任務裏,模型學會了如何根據語境選擇「專家」:專家 381 擅長談論科學研究,專家 752 擅長「領導力」,若是涉及速度,那就交給專家 2004 吧。

路由選擇學到了什麼 Source: Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer (1701.06538)

在英-法翻譯任務裏,相比於以前的 STOA 模型 GNMT,模型的規模上升了 35 倍,卻能夠用更少的 GPU 在六分之一的訓練時間內完成。

相比於 MoE,應用更爲普遍的動態路由的案例是嵌入機制。不管是將單詞從數萬維的獨熱向量映射到幾百維的詞嵌入,仍是給每個 YouTube 視頻賦予一個數千維的、可以捕捉它與其餘視頻間關係的表徵,都是一個須要爲了一個樣本,從龐大的數據結構(可能高達數百 G)中隨機地讀取很是少的數據(數十或數百字節,不到 1KB)。

現有硬件結構裏還鮮有專門處理動態路由選擇的高效讀取的解決方案。


參數量化與提煉(Quantization and Distillation)

稀疏性和嵌入的共同點是保留「大模型」,而關注如何能精肯定位到其中的「小部分」。參數量化與提煉則直接追求「小模型」。

參數量化的是低精度運算的另外一種說法。

如今常見的作法是,在訓練階段採用浮點數,而在推理中採用定點數。例如在 TPU 的例子中,全部的推理只採用 8 比特定點數表達。其實現原理是在完成訓練後,根據各層的參數和激活部分的最大值和最小值,找到表達其整數部分所需的最小比特數,用此表示,而後用 8 比特中剩下的部分表示其小數點後部分。實證研究顯示,將精度從 32 比特下降到 8 比特,只會少許影響 GoogLeNet 和 VGG-16 的表現,可是若是繼續降低到 6 比特,模型效果就會受到顯著影響。

推理參數量化對精度的影響Source: Going Deeper with Embedded FPGA Platform for Convolutional Neural Networkcadlab.cs.ucla.edu/~jaywang/papers/fpga16-cnn.pdf

文中提到,只有不多的研究關注瞭如何在訓練階段採用低精度運算,大多數結果都仍然集中在 MNIST,CIFAR-10 等小數據集上。不太低精度訓練也在逐漸得到更多關注,ICLR2018 上,百度和英偉達提出了「混合精度訓練法」,在前向、後向計算中使用 FP16 運算,在權重更新時使用 FP32 計算,在 ImageNet 上的分類任務、Pascal VOC 2007 上的檢測任務、WMT15 上的翻譯任務等多個大型數據集的任務中,達到了使用 FP32 所得到的準確率,同時節省了算力需求和近半的存儲需求。現在,英偉達已經給出了用混合精度進行訓練的 SDK 範例。

提煉方法是 Hinton 在 NIPS2014 上提出的,試圖以先讓複雜模型進行學習分類問題,而後將最後一層 softmax 學到的軟分類視爲知識,訓練簡單模型以預測軟分類。這樣的方法獲得的簡單模型(層數更少、每層神經元更少)也能達到複雜模型一樣的準確度。提煉方法讓人們思考,是否可以直接訓練小模型。小模型和大模型須要的專用硬件特性會大相徑庭,所以模型的發展方向也是硬件發展方向的重要影像因素。


帶有軟記憶機制的神經網絡(Networks with Soft Memory)

這一部分強調的是一些對存儲和存儲訪問有特殊需求的深度學習技巧,例如注意力機制。傳統的記憶機制每次只要訪問存儲數據的表中的一個值,可是以注意力機制爲表明的軟記憶機制則須要對錶內的全部值進行加權平均。

相比於特定運算的加速,當前問世的或已經進入開發週期後段的深度學習 ASIC 更強調數據流與存儲的優化。原 Movidius CEO Remi El-Ouazzane 在談論其視覺處理單元 VPU 的設計理念時提到,VPU 中的幾乎全部架構設計都是爲了同一個目標:優化數據流。在當前的終端深度學習計算中,用於數據傳輸的能量消耗是用於計算的 10 倍乃至更多,所以要使性能最大化並將功耗降至最低,惟一的方法就是增長數據的本地性,減小外部內存訪問次數。致力於加速訓練的 Intel Nervana NNP 的邏輯也是這樣。

FPGA 的邏輯也是如此。大量的引腳和能夠根據算法定製數據通路(datapath)的邏輯單元,讓它不須要像 GPU 同樣須要反覆調取片外存儲中的數據,理想狀態時,只要數據一次性流進去再流出來,算法就完成了。


元學習(Learning to Learn, L2L)

深度學習相比於機器學習的「進步」,就是將人工選擇的固定特徵提取過程變成了機器選擇的可訓練特徵提取過程。研究者只須要選擇一系列基本模型結構和超參數,就能夠由機器接手,進行特徵提取和分佈擬合。

在上述的五個部分裏,不管模型採用什麼結構、技巧,做出這些決策都仍然是人類的工做。而在元學習的設想裏,人類的決策工做進一步被大量的計算和機器自動完成的實驗所替代。

在自動機器學習技術的種種方法中,谷歌選擇了強化學習的方法。模型的準確度被視爲「獎勵信號」。在得到了 ICLR2017 最佳論文的《用強化學習進行神經網絡結構搜索》中,谷歌的研究員分別爲 CIFAR-10 和 PTB 數據集搜索到了最佳的 CNN 和 LSTM RNN 結構。

普通 LSTM 結構和結構搜索出的結構Source: Neural Architecture Search with Reinforcement Learning (1611.01578)

而事實上不僅是模型結構,「用強化學習進行元學習」的思路適用於深度學習的方方面面:選擇輸入數據預處理路徑,選擇激活函數、選擇優化與更新策略,以及,選擇硬件配置。

本次谷歌大腦研究員 Azalia 的演講就是以優化硬件配置爲主題。傳統的硬件配置多數以貪婪啓發式方法爲基礎,須要工程師對硬件的方方面面,從算力到帶寬,都有深入的理解。而即使如此,隨着模型愈來愈大,使用的設備愈來愈多,獲得的配置方案也愈來愈難具備可泛化性。

谷歌大腦研究員 Azalia Mirhoseini

所以,將一種特定配置的收斂時間的指望做爲獎勵信號來將各運算分配到不一樣設備上,就變成了一個有吸引力的解決方案。算法學到了並不符合人類直覺的配置,但比專家設計出來的方案快 27.8%,節約近 65 個小時。

元學習獲得的運算硬件配置以及效果Source: Device Placement Optimization with Reinforcement Learning (1706.04972)

元學習指向的道路是讓咱們更高效地利用大規模的計算資源,同時「節省」機器學習專家的勞動力。除此以外,在這個深度學習算法和計算設備都在快速更新迭代的時期,元學習也奠基了快速進行軟硬件結合的系統設計的基礎。

將全部這些願景綜合起來,深度學習下一個階段會以何種形式出現?


Jeff 在演講中歸納爲:

  • 只是稀疏地激活的更爲龐大的模型。
  • 可以解決多個任務的單一模型。
  • 在龐大的模型中動態地學習新路徑,並不斷增長新路徑。
  • 專用於進行機器學習超算的硬件
  • 高效地配置在硬件上的機器學習模型。
紫色模塊爲新任務和爲此而增長的新節點,加粗的紅線表示用於解決新任務的新路徑

你的研究思路是否有助於其中一個目標的實現?又是否將從這樣的模型中獲益?

不管答案是什麼,肯定的一件事情是:研究者、工程師、體系結構設計者,在當下,想要朝通用人工智能進攻的道路上前行,這些身份,一個都不能少。

相關文章
相關標籤/搜索