日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

从计算机体系结构方面思考深度学习

發(fā)布時間:2023/12/1 pytorch 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从计算机体系结构方面思考深度学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今年 1 月,谷歌人工智能負(fù)責(zé)人 Jeff Dean(當(dāng)時還是谷歌大腦負(fù)責(zé)人)與 2017 年圖靈獎得主、體系結(jié)構(gòu)巨擘 David Patterson(當(dāng)時獲獎結(jié)果尚未公布)聯(lián)合發(fā)表了題為《計算機體系結(jié)構(gòu)黃金時代:賦能機器學(xué)習(xí)革命》的文章。文章指出,機器學(xué)習(xí)算法正在革命性地著手解決人類社會最為巨大的一些挑戰(zhàn),因此,不難想象,在不遠(yuǎn)的將來,無論是數(shù)據(jù)中心還是終端設(shè)備,都將會出現(xiàn)專用于機器學(xué)習(xí)計算的硬件。這樣的硬件會具有什么特性?在文章中,作者列出了一系列硬件設(shè)計者需要考慮到的關(guān)鍵問題,這些問題對深度學(xué)習(xí)研究者也十分具有啟發(fā)性。

另一方面,在摩爾定律逐漸失效和深度學(xué)習(xí)的算力需求如無底洞般膨脹的今天,深度學(xué)習(xí)研究者們也在思考:能否改進算法以使其更適應(yīng)計算硬件?能否幫助優(yōu)化系統(tǒng)配置?在近日舉行的首屆「清華-谷歌 AI 學(xué)術(shù)研討會」上,Jeff Dean 談了談「接下來我們希望設(shè)計什么樣的模型」,來自谷歌大腦的研究員 Azalia Mirhoseini 則給出了主題演講「如何用強化學(xué)習(xí)方法進行系統(tǒng)優(yōu)化」。

谷歌人工智能負(fù)責(zé)人 Jeff Dean

如果將這幾份工作聯(lián)系起來,我們似乎就能看出,在深度學(xué)習(xí)這個 Arxiv 論文增速超越摩爾定律的領(lǐng)域里,谷歌大腦的研究者們?nèi)绾瓮瑫r思考軟硬件問題以實現(xiàn)系統(tǒng)最佳性能與最佳效率。

「超越摩爾定律」的機器學(xué)習(xí)

在《黃金時代》論文里,Jeff 和 David 以谷歌開發(fā)的兩代機器學(xué)習(xí) ASIC(用于加速推理的 TPUv1 和用于加速訓(xùn)練的 TPUv2)為例,介紹了很多設(shè)計專用硬件的思路。進行硬件設(shè)計要著眼于至少 5 年后的模型:現(xiàn)在開始一款 ASIC 的設(shè)計,它大約可以在 2 年后投入使用,而一款專用硬件至少需要能夠保持 3 年的競爭力才有價值。那么在這樣的前提下,設(shè)計深度學(xué)習(xí)專用硬件要考慮哪些問題?在文章中,作者列出了六個這樣的關(guān)鍵點,按照從「純架構(gòu)相關(guān)」到「純機器學(xué)習(xí)算法相關(guān)」的順序,分別是:訓(xùn)練、批規(guī)模、稀疏性與嵌入、參數(shù)量化與提煉、帶有軟記憶機制的神經(jīng)網(wǎng)絡(luò)以及元學(xué)習(xí)。

訓(xùn)練

谷歌從 2013 年開始設(shè)計的第一代 TPU 是針對推理而非訓(xùn)練工作設(shè)計的,一定程度上是為訓(xùn)練設(shè)計硬件架構(gòu)要更加困難:

  • 第一,訓(xùn)練的運算量是推理的 3 倍以上。
  • 第二,因為要將全部激活值存儲以進行反向傳播,訓(xùn)練過程所需的存儲也遠(yuǎn)比推理高。
  • 最后,訓(xùn)練的可擴展性遠(yuǎn)不如推理,因為需要進行大量昂貴的序列計算。

但是,為訓(xùn)練設(shè)計 ASIC 是有價值的,因為研究者的時間是寶貴的而耐心是有限的,如果一次實驗需要跑 30 天甚至更長,大概大多數(shù)人會選擇放棄探索這個方向。

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

TPUv2 在谷歌內(nèi)部的應(yīng)用案例

而且,TPUv2 具有幾乎是線性的擴展性,64 塊 TPU 可以組成一個 TPU pod,提供最高 11.5 PFLOPS 的算力。用一塊 TPUv2 把 ResNet-50 訓(xùn)練到 76% 準(zhǔn)確度需要 1402 分鐘,用二分之一個 pod(32 塊 TPUv2)只需要 45 分鐘(31.2 倍速)。

TPUv2 近乎線性可擴展

雖然 TPU 云價格不菲,但時間就是生命,生命就是金錢。另外,如果你是一位有志于機器學(xué)習(xí)研究并致力于開源自己的工作,谷歌正以 TensorFlow 研究云的形式向研究者免費提供一千塊 TPU。

批規(guī)模(batch size)

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

直覺上,理想選擇是帶有動量的批規(guī)模為 1 的隨機梯度下降(SGD with momentum at a minibatch size of 1),這時單位計算量帶來的準(zhǔn)確率提升最大。另外選擇一個大于 1 的批規(guī)模相當(dāng)于把輸入維度直接提升了一維(Jeff 原話:一想到這兒我就頭痛。)然而在當(dāng)前用于訓(xùn)練的硬件中,以 GPU 為例,它執(zhí)行程序時的基本單元,即每個 warp 包含 32 個線程(threads),因此如果你的批規(guī)模不是 32 的整數(shù)倍,將會導(dǎo)致效率降低,所以現(xiàn)行的模型通常都采用 32 或者 64 作為批規(guī)模。

批規(guī)模與計算效率

但是,從 2017 年開始,有一些看起來前景明朗的研究顯示,我們可以用 8192 甚至 32768 作為批規(guī)模來高效訓(xùn)練用于圖像的卷積神經(jīng)網(wǎng)絡(luò)。

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

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

值得一提的是,Yann LeCun 對于增加批量持有強烈反對態(tài)度,他曾經(jīng)在今年 4 月份轉(zhuǎn)發(fā)一篇支持小批量的論文稱,「用巨型批量做訓(xùn)練有害健康……選擇 32 而不是 1 做批量只能說明我們的硬件很差勁。」

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

稀疏性與嵌入(Sparsity and Embeddings)

「我們想要更大的模型,但希望每一個樣本只激活它的一小部分。」又是一個 Jeff 反復(fù)提到的趨勢。

「我們想要什么樣的模型?」

大模型是好的,因為巨大的參數(shù)量意味著我們可以記住數(shù)據(jù)集方方面面的特性。但是如果我們在處理每一個數(shù)據(jù)的時候都需要激活整個模型,這意味著巨大的計算成本。因此,最理想的狀態(tài)是擁有一個可以分割成眾多獨立的小部分的龐大模型,每一部分都承擔(dān)不同分工,當(dāng)數(shù)據(jù)進入模型時,模型按任務(wù)需求激活少數(shù)幾個部,讓大部分保持閑置狀態(tài)。這樣的特性又可以稱作「粗粒度稀疏性」。

粗粒度稀疏性

Source: Exploring the Regularity of Sparse Structure in Convolutional Neural Networks (1705.08922)

谷歌在 ICLR2017 的一篇論文上就提出了一個叫做混合專家層(MoE)的概念。每一個「專家」相當(dāng)于神經(jīng)網(wǎng)絡(luò)中的一小撮參數(shù),只不過比普通神經(jīng)網(wǎng)絡(luò)里的參數(shù)更容易訓(xùn)練,而一層由超過 2000 個專家組成。

MoE 層的結(jié)構(gòu)

Source: Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer (1701.06538)

訓(xùn)練過程中,除了學(xué)習(xí)模型參數(shù),還要學(xué)習(xí)如何做路由選擇(routing),即如何根據(jù)一個樣本選擇激活的「專家」。在語言任務(wù)里,模型學(xué)會了如何根據(jù)語境選擇「專家」:專家 381 擅長談?wù)摽茖W(xué)研究,專家 752 擅長「領(lǐng)導(dǎo)力」,如果涉及速度,那就交給專家 2004 吧。

路由選擇學(xué)到了什么

Source: Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer (1701.06538)

在英-法翻譯任務(wù)里,相比于之前的 STOA 模型 GNMT,模型的規(guī)模上升了 35 倍,卻可以用更少的 GPU 在六分之一的訓(xùn)練時間內(nèi)完成。

相比于 MoE,應(yīng)用更為廣泛的動態(tài)路由的案例是嵌入機制。無論是將單詞從數(shù)萬維的獨熱向量映射到幾百維的詞嵌入,還是給每一個 YouTube 視頻賦予一個數(shù)千維的、能夠捕捉它與其他視頻間關(guān)系的表征,都是一個需要為了一個樣本,從龐大的數(shù)據(jù)結(jié)構(gòu)(可能高達數(shù)百 G)中隨機地讀取非常少的數(shù)據(jù)(數(shù)十或數(shù)百字節(jié),不到 1KB)。

現(xiàn)有硬件結(jié)構(gòu)里還鮮有專門處理動態(tài)路由選擇的高效讀取的解決方案。

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

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

參數(shù)量化的是低精度運算的另一種說法。

現(xiàn)在常見的做法是,在訓(xùn)練階段采用浮點數(shù),而在推理中采用定點數(shù)。例如在 TPU 的例子中,所有的推理只采用 8 比特定點數(shù)表達。其實現(xiàn)原理是在完成訓(xùn)練后,根據(jù)各層的參數(shù)和激活部分的最大值和最小值,找到表達其整數(shù)部分所需的最小比特數(shù),用此表示,然后用 8 比特中剩下的部分表示其小數(shù)點后部分。實證研究顯示,將精度從 32 比特降低到 8 比特,只會少量影響 GoogLeNet 和 VGG-16 的表現(xiàn),但是如果繼續(xù)下降到 6 比特,模型效果就會受到顯著影響。

推理參數(shù)量化對精度的影響

Source: Going Deeper with Embedded FPGA Platform for Convolutional Neural Network

cadlab.cs.ucla.edu/~jaywang/papers/fpga16-cnn.pdf

文中提到,只有很少的研究關(guān)注了如何在訓(xùn)練階段采用低精度運算,大多數(shù)結(jié)果都仍然集中在 MNIST,CIFAR-10 等小數(shù)據(jù)集上。不過低精度訓(xùn)練也在逐漸獲得更多關(guān)注,ICLR2018 上,百度和英偉達提出了「混合精度訓(xùn)練法」,在前向、后向計算中使用 FP16 運算,在權(quán)重更新時使用 FP32 計算,在 ImageNet 上的分類任務(wù)、Pascal VOC 2007 上的檢測任務(wù)、WMT15 上的翻譯任務(wù)等多個大型數(shù)據(jù)集的任務(wù)中,達到了使用 FP32 所獲得的準(zhǔn)確率,同時節(jié)省了算力需求和近半的存儲需求。如今,英偉達已經(jīng)給出了用混合精度進行訓(xùn)練的 SDK 范例。

提煉方法是 Hinton 在 NIPS2014 上提出的,試圖以先讓復(fù)雜模型進行學(xué)習(xí)分類問題,然后將最后一層 softmax 學(xué)到的軟分類視為知識,訓(xùn)練簡單模型以預(yù)測軟分類。這樣的方法得到的簡單模型(層數(shù)更少、每層神經(jīng)元更少)也能達到復(fù)雜模型同樣的準(zhǔn)確度。提煉方法讓人們思考,是否能夠直接訓(xùn)練小模型。小模型和大模型需要的專用硬件特性會截然不同,因此模型的發(fā)展方向也是硬件發(fā)展方向的重要影像因素。

帶有軟記憶機制的神經(jīng)網(wǎng)絡(luò)(Networks with Soft Memory)

這一部分強調(diào)的是一些對存儲和存儲訪問有特殊需求的深度學(xué)習(xí)技巧,例如注意力機制。傳統(tǒng)的記憶機制每次只要訪問存儲數(shù)據(jù)的表中的一個值,但是以注意力機制為代表的軟記憶機制則需要對表內(nèi)的所有值進行加權(quán)平均。

相比于特定運算的加速,當(dāng)前問世的或已經(jīng)進入開發(fā)周期后段的深度學(xué)習(xí) ASIC 更強調(diào)數(shù)據(jù)流與存儲的優(yōu)化。原 Movidius CEO Remi El-Ouazzane 在談?wù)撈湟曈X處理單元 VPU 的設(shè)計理念時提到,VPU 中的幾乎所有架構(gòu)設(shè)計都是為了同一個目標(biāo):優(yōu)化數(shù)據(jù)流。在當(dāng)前的終端深度學(xué)習(xí)計算中,用于數(shù)據(jù)傳輸?shù)哪芰肯氖怯糜谟嬎愕?10 倍乃至更多,因此要使性能最大化并將功耗降至最低,唯一的方法就是增加數(shù)據(jù)的本地性,減少外部內(nèi)存訪問次數(shù)。致力于加速訓(xùn)練的 Intel Nervana NNP 的邏輯也是這樣。

FPGA 的邏輯也是如此。大量的引腳和可以根據(jù)算法定制數(shù)據(jù)通路(datapath)的邏輯單元,讓它不需要像 GPU 一樣需要反復(fù)調(diào)取片外存儲中的數(shù)據(jù),理想狀態(tài)時,只要數(shù)據(jù)一次性流進去再流出來,算法就完成了。

元學(xué)習(xí)(Learning to Learn, L2L)

深度學(xué)習(xí)相比于機器學(xué)習(xí)的「進步」,就是將人工選擇的固定特征提取過程變成了機器選擇的可訓(xùn)練特征提取過程。研究者只需要選擇一系列基本模型結(jié)構(gòu)和超參數(shù),就可以由機器接手,進行特征提取和分布擬合。

在上述的五個部分里,無論模型采用什么結(jié)構(gòu)、技巧,作出這些決策都仍然是人類的工作。而在元學(xué)習(xí)的設(shè)想里,人類的決策工作進一步被大量的計算和機器自動完成的實驗所替代。

在自動機器學(xué)習(xí)技術(shù)的種種方法中,谷歌選擇了強化學(xué)習(xí)的方法。模型的準(zhǔn)確度被視為「獎勵信號」。在獲得了 ICLR2017 最佳論文的《用強化學(xué)習(xí)進行神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索》中,谷歌的研究員分別為 CIFAR-10 和 PTB 數(shù)據(jù)集搜索到了最佳的 CNN 和 LSTM RNN 結(jié)構(gòu)。

普通 LSTM 結(jié)構(gòu)和結(jié)構(gòu)搜索出的結(jié)構(gòu)

Source: Neural Architecture Search with Reinforcement Learning (1611.01578)

而事實上不只是模型結(jié)構(gòu),「用強化學(xué)習(xí)進行元學(xué)習(xí)」的思路適用于深度學(xué)習(xí)的方方面面:選擇輸入數(shù)據(jù)預(yù)處理路徑,選擇激活函數(shù)、選擇優(yōu)化與更新策略,以及,選擇硬件配置。

本次谷歌大腦研究員 Azalia 的演講就是以優(yōu)化硬件配置為主題。傳統(tǒng)的硬件配置多數(shù)以貪婪啟發(fā)式方法為基礎(chǔ),需要工程師對硬件的方方面面,從算力到帶寬,都有深刻的理解。而即便如此,隨著模型越來越大,使用的設(shè)備越來越多,得到的配置方案也越來越難具有可泛化性。

谷歌大腦研究員 Azalia Mirhoseini

因此,將一種特定配置的收斂時間的期望作為獎勵信號來將各運算分配到不同設(shè)備上,就變成了一個有吸引力的解決方案。算法學(xué)到了并不符合人類直覺的配置,但比專家設(shè)計出來的方案快 27.8%,節(jié)約近 65 個小時。

元學(xué)習(xí)得到的運算硬件配置以及效果

Source: Device Placement Optimization with Reinforcement Learning (1706.04972)

元學(xué)習(xí)指向的道路是讓我們更高效地利用大規(guī)模的計算資源,同時「節(jié)省」機器學(xué)習(xí)專家的勞動力。除此之外,在這個深度學(xué)習(xí)算法和計算設(shè)備都在快速更新迭代的時期,元學(xué)習(xí)也奠定了快速進行軟硬件結(jié)合的系統(tǒng)設(shè)計的基礎(chǔ)。

將所有這些愿景綜合起來,深度學(xué)習(xí)下一個階段會以何種形式出現(xiàn)?

Jeff 在演講中概括為:

  • 只是稀疏地激活的更為龐大的模型。
  • 能夠解決多個任務(wù)的單一模型。
  • 在龐大的模型中動態(tài)地學(xué)習(xí)新路徑,并不斷增加新路徑。
  • 專用于進行機器學(xué)習(xí)超算的硬件
  • 高效地配置在硬件上的機器學(xué)習(xí)模型。

紫色模塊為新任務(wù)和為此而增加的新節(jié)點,加粗的紅線表示用于解決新任務(wù)的新路徑

你的研究思路是否有助于其中一個目標(biāo)的實現(xiàn)?又是否將從這樣的模型中獲益?

無論答案是什么,確定的一件事情是:研究者、工程師、體系結(jié)構(gòu)設(shè)計者,在當(dāng)下,想要朝通用人工智能進攻的道路上前行,這些身份,一個都不能少。

轉(zhuǎn)載于:https://www.cnblogs.com/alan-blog-TsingHua/p/9727225.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的从计算机体系结构方面思考深度学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。