過去十年我們見證了機(jī)器學(xué)習(xí)的顯著進(jìn)步,特別是基于深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)。機(jī)器學(xué)習(xí)社區(qū)也一直在嘗試構(gòu)建新模型,,用于完成具有挑戰(zhàn)性的工作,,包括使用強(qiáng)化學(xué)習(xí),通過和環(huán)境進(jìn)行交互的方式完成難度較大的任務(wù),,如下圍棋,、玩電子游戲等。
機(jī)器學(xué)習(xí)對(duì)算力的需求無(wú)疑是龐大的,,從計(jì)算機(jī)視覺到自然語(yǔ)言處理,,更大的模型和更多的數(shù)據(jù)往往能夠取得更好的性能。在摩爾定律時(shí)代,,硬件進(jìn)步帶來(lái)的算力增長(zhǎng)尚且能夠滿足機(jī)器學(xué)習(xí)的需求,,但當(dāng)摩爾定律被榨干后,怎樣讓硬件中的算力資源被機(jī)器學(xué)習(xí)模型充分利用成了下一個(gè)需要探討的問題,。
文章地址:https://arxiv.org/abs/1911.05289
在這篇文章中,,Jeff Dean 首先討論了機(jī)器學(xué)習(xí)的進(jìn)步對(duì)計(jì)算設(shè)備的影響,特別是在后莫爾定律時(shí)代,,他詳細(xì)介紹了谷歌開發(fā)張量運(yùn)算單元的初衷與效果,。與此同時(shí),Jeff Dean 還討論了深度學(xué)習(xí)如何能夠幫助設(shè)計(jì)電路與芯片,。最終,,Jeff Dean 描述了將來(lái)機(jī)器學(xué)習(xí)發(fā)展的方向——更大尺度的多任務(wù)模型,它能夠根據(jù)任務(wù)要求選擇性地激活,,而且可以有更動(dòng)態(tài)的調(diào)整過程,。
整體文章比較長(zhǎng),機(jī)器之心簡(jiǎn)要概括了不同章節(jié)的主要思想,,感興趣的讀者可以在 arXiv 上查閱原文章,。
摩爾定律、后摩爾定律和機(jī)器學(xué)習(xí)的計(jì)算需求
自 20 世紀(jì) 60 年代至 90 年代,,基于深度學(xué)習(xí)和人工神經(jīng)網(wǎng)絡(luò)的諸多關(guān)鍵思想和算法已經(jīng)出現(xiàn),,并且在 80 年代末至 90 年代初,人們開始意識(shí)到神經(jīng)網(wǎng)絡(luò)能夠以有趣的方式解決一些問題,,并且它們的實(shí)質(zhì)性優(yōu)勢(shì)在于既可以接受原始形式的輸入數(shù)據(jù)并且在訓(xùn)練模型執(zhí)行預(yù)測(cè)任務(wù)的過程中可以自動(dòng)增強(qiáng)模型的層次表征,,因而激發(fā)了 ML 和 AI 社區(qū)的研究興趣。
但是,,這種方法受限于當(dāng)時(shí)不夠強(qiáng)大的計(jì)算機(jī)性能,。一些研究試圖利用并行算法來(lái)擴(kuò)展訓(xùn)練神經(jīng)網(wǎng)絡(luò)的計(jì)算量,但在大多數(shù)情況下,,ML 和 AI 社區(qū)的關(guān)注重點(diǎn)已經(jīng)不在基于神經(jīng)網(wǎng)絡(luò)的方法了,。直到 2005 年以后,在摩爾定律推動(dòng)計(jì)算性能提升的 20 年后,計(jì)算機(jī)性能才強(qiáng)大到可以訓(xùn)練大型神經(jīng)網(wǎng)絡(luò)來(lái)解決 ImageNet 等現(xiàn)實(shí)世界的實(shí)際問題,,而不再局限于 MNIST 等小規(guī)模問題,。其中,GPU 卡上的通用計(jì)算范式使得神經(jīng)網(wǎng)絡(luò)開始在解決棘手的實(shí)際問題上展示有趣的結(jié)果,。
摩爾定律提出者戈登·摩爾,。
然而令人遺憾的是,在計(jì)算性能開始足夠強(qiáng)大到可以解決有趣的現(xiàn)實(shí)問題,,并且機(jī)器學(xué)習(xí)規(guī)模的擴(kuò)大和適用性的提升也迫切需要更多的計(jì)算資源來(lái)解決更大的問題,,這時(shí)計(jì)算機(jī)行業(yè)卻隨著通用 CPU 性能的持續(xù)提升出現(xiàn)了整體性的大幅度放緩。下圖 2 展示了近 40 年間的計(jì)算性能增長(zhǎng)態(tài)勢(shì),,其中自 1985 年至 2003 年,,通用 CPU 性能每 1.5 年提升一倍;自 2003 年至 2010 年,,通用 CPU 性能每 2 年提升一倍,;而 2010 年以后,通用 CPU 性能預(yù)計(jì)每 20 年才能提升一倍,。
圖 2:摩爾定律和后摩爾定律時(shí)代的計(jì)算需求增長(zhǎng)態(tài)勢(shì),。
下圖 3 展示了近年來(lái)出現(xiàn)的一些重要的機(jī)器學(xué)習(xí)網(wǎng)絡(luò)架構(gòu),如 AlexNet,、GoogleNet,、AlphaZero 等,它們對(duì)計(jì)算的需求呈現(xiàn)越來(lái)越大的趨勢(shì),。
圖 3:AlexNet,、GoogleNet、AlphaZero 等重要的機(jī)器學(xué)習(xí)網(wǎng)絡(luò)架構(gòu)以及它們的計(jì)算需求增長(zhǎng)態(tài)勢(shì),。
下圖 4 展示了 2009 年以來(lái),,機(jī)器學(xué)習(xí)領(lǐng)域 Arxiv 發(fā)表論文數(shù)量的增長(zhǎng)情況,其中 2018 年的論文數(shù)量是 2009 年的 32 倍(論文數(shù)量每 2 年提升一倍以上)?,F(xiàn)在,,每天仍有 100 多篇論文在 Arxiv 機(jī)器學(xué)習(xí)子板塊發(fā)表,,并且這一增長(zhǎng)態(tài)勢(shì)沒有出現(xiàn)放緩的跡象,。
圖 4:自 2009 年以來(lái),機(jī)器學(xué)習(xí)相關(guān) Arxiv 論文發(fā)表數(shù)量的增長(zhǎng)態(tài)勢(shì)(藍(lán))和摩爾定律增長(zhǎng)率(紅),。
針對(duì)機(jī)器學(xué)習(xí)的硬件
早在 2011 年左右,,谷歌研究者與系統(tǒng)工程師就構(gòu)建了 DistBelief 這個(gè)早期分布式系統(tǒng),在 12 年早期的一些深度神經(jīng)網(wǎng)絡(luò)中,,模型使用 DistBelief 能大大提高準(zhǔn)確性,。然而,由于計(jì)算需求太大,要使用基于 CPU 的計(jì)算設(shè)備繼續(xù)提升深度模型,,谷歌數(shù)據(jù)中心的計(jì)算機(jī)數(shù)量需要翻一倍,。為此,這樣的現(xiàn)實(shí)驅(qū)動(dòng)了谷歌開始考慮為神經(jīng)網(wǎng)絡(luò)構(gòu)建專用硬件,,用于推理乃至訓(xùn)練,。
為什么深度學(xué)習(xí)模型需要定制化硬件
深度學(xué)習(xí)模型有三大屬性,它們使得其與很多通用計(jì)算都不相同,。首先,,深度學(xué)習(xí)允許降低計(jì)算精度;其次,,大多數(shù)模型執(zhí)行的計(jì)算都是由少量運(yùn)算組成,,例如矩陣乘法、向量運(yùn)算以及卷積運(yùn)算等等,;最后,,過去 40 年開發(fā)了很多機(jī)制以令通用程序能在 CPU 上高效運(yùn)行,但這些機(jī)制在機(jī)器學(xué)習(xí)運(yùn)算中都是不必要的,。
構(gòu)建能進(jìn)行密集低精度線性計(jì)算的硬件是非常有意義的一件事,,為此,谷歌決定著手設(shè)計(jì)名為「張量處理單元」的加速器,,從而加速深度學(xué)習(xí)的推理與訓(xùn)練,。
為了能執(zhí)行推斷,Int8 的精度已經(jīng)顯示出足夠強(qiáng)大的能力,,目前研究界也在開展進(jìn)一步的工作,,以便采用更低的精度和更稀疏的權(quán)重來(lái)突破這一界限。TPUv1 的單個(gè)核心是由 65536 個(gè) 8 位乘加矩陣運(yùn)算單元,,其峰值運(yùn)算量為 92 TeraOps/s,。TPUv1 平均比現(xiàn)代 CPU 或 GPU 快 15 到 30 倍,平均能耗降低 30 到 80 倍,。目前,,這種芯片約占谷歌數(shù)據(jù)中心神經(jīng)網(wǎng)絡(luò)推理需求的 95%。
在低功率移動(dòng)端設(shè)備上做推斷也非常重要,,它可以極大降低網(wǎng)絡(luò)延遲并提升隱私保護(hù),。谷歌采用與 TPUv1 相同的設(shè)計(jì)原理,應(yīng)用于更低功耗的環(huán)境而設(shè)計(jì)出 Edge TPU,,它以 2W 的功耗提供了 4TOPS 的計(jì)算力,。這樣的邊緣設(shè)備可以更好地在農(nóng)業(yè)和日常生活中應(yīng)用機(jī)器學(xué)習(xí)模型。
圖 5:谷歌張量運(yùn)算單元 v2(TPUv2)的結(jié)構(gòu)圖,。
前面 V1 只能做推斷,,但要設(shè)計(jì)定制化的機(jī)器學(xué)習(xí)訓(xùn)練硬件要復(fù)雜得多,。主要原因在于單塊訓(xùn)練芯片無(wú)法在合理的時(shí)間內(nèi)解決大部分訓(xùn)練問題,因?yàn)閱螇K芯片無(wú)法提供足夠的算力,。因此設(shè)計(jì)訓(xùn)練系統(tǒng)實(shí)際上就是設(shè)計(jì)大規(guī)模的整體計(jì)算系統(tǒng),,它需要考慮各個(gè)加速芯片間的高性能互聯(lián),從而形成及緊密耦合的超級(jí)計(jì)算機(jī),。
谷歌的第二代和第三代 TPU 旨在支持訓(xùn)練和推理,,TPUv2 和 TPUv3 每一個(gè) Device 包含四塊芯片,不同的 Device 整合在一起就形成了一個(gè)整體 Pod,。圖 5 展示了具有兩個(gè)核心的 TPUv2,,每個(gè)核心的主要計(jì)算能力有大型的矩陣乘法單元提供,其每個(gè)時(shí)鐘周期能計(jì)算 128×128 的矩陣運(yùn)算,。
圖 6:谷歌 TPUv3 Pod,,它包含 1024 塊 TPU 芯片。
低精度數(shù)值運(yùn)算
TPUv2 和 TPUv3 使用一種名為 bfloat16 的定制化浮點(diǎn)運(yùn)算格式,,該格式與 IEEE 半精度 float 16 不同,,它對(duì)機(jī)器學(xué)習(xí)更有效。自 2015 年以來(lái),,它一直是 TPU 的主要精度,,英特爾 2018 年也宣布計(jì)劃為下一代處理器增加 bfloat16 的支持。下圖展示了 IEEE fp32 單精度浮點(diǎn)格式,、IEEE fp16 半精度浮點(diǎn)格式和 bfloat16 格式,,它們的劃分與數(shù)值范圍都展示在內(nèi)。
圖 7:三種浮點(diǎn)精度,。
因?yàn)?bfloat16 格式的乘加器需要最少的電路,,因此有可能在相同的芯片面積和功率預(yù)算中配置更多的乘法器,這能令芯片提供更強(qiáng)的算力與更低的能耗,。與此同時(shí),,降低到 16 位精度還能減少內(nèi)存的占用與權(quán)重的體積,從而進(jìn)一步提升模型的實(shí)用性,。
ML 專用芯片設(shè)計(jì)的挑戰(zhàn)
目前機(jī)器學(xué)習(xí)研究領(lǐng)域正快速發(fā)展,,而如今芯片設(shè)計(jì)項(xiàng)目通常需要 18 個(gè)月到 24 個(gè)月才能完成設(shè)計(jì)、制造與部署,。為了節(jié)省成本,,一般這些硬件至少需要工作三年。因此,,構(gòu)建 ML 硬件的計(jì)算機(jī)架構(gòu)師需要預(yù)測(cè) 2 到 5 年內(nèi)機(jī)器學(xué)習(xí)快速發(fā)展的領(lǐng)域,。Jeff Dean 的經(jīng)驗(yàn)是,將計(jì)算機(jī)架構(gòu)師,、高級(jí)軟件系統(tǒng)構(gòu)建者與機(jī)器學(xué)習(xí)研究者匯聚一堂,,共同設(shè)計(jì)相關(guān)的主題,例如,,「那個(gè)時(shí)期可能需要的硬件是什么,,有什么有意思的研究趨勢(shì),它們需要什么樣的 ML 硬件」,。
機(jī)器學(xué)習(xí)在硬件領(lǐng)域中的其他應(yīng)用
機(jī)器學(xué)習(xí)設(shè)計(jì)芯片
機(jī)器學(xué)習(xí)另一個(gè)可以和硬件領(lǐng)域結(jié)合的方向是進(jìn)行自動(dòng)化的芯片設(shè)計(jì),,如設(shè)計(jì)定制化的 ASICs。由于芯片領(lǐng)域目前已有大量的人力投入,,因此貿(mào)然改變整體的芯片設(shè)計(jì)是不太可能的,。然而,在芯片的布局和布線方面機(jī)器學(xué)習(xí)是可以參與的,。例如,,可以將一個(gè)序列的布局和布線結(jié)合起來(lái),用一個(gè)整體的評(píng)價(jià)標(biāo)準(zhǔn)——如芯片區(qū)域大小,、耗時(shí)和走線長(zhǎng)度進(jìn)行評(píng)價(jià),。
如果有強(qiáng)化學(xué)習(xí)算法去「玩」這樣一個(gè)布局布線的游戲,則可以產(chǎn)生很多不同的 ASIC 設(shè)計(jì),,或只有一種特定的 ASIC 設(shè)計(jì),。這只需要設(shè)計(jì)一個(gè)獎(jiǎng)勵(lì)函數(shù)——其中包括不同的獎(jiǎng)勵(lì)屬性。這樣有可能能夠更快且更高效地設(shè)計(jì)出更好的布局布線?,F(xiàn)在,,谷歌內(nèi)部已經(jīng)在嘗試這些方法,而且已經(jīng)有了一些初級(jí)但有效的成果,。此外,,針對(duì)不同的目標(biāo)優(yōu)化評(píng)價(jià)指標(biāo),獎(jiǎng)勵(lì)函數(shù)中的屬性也可以進(jìn)行調(diào)整,,使得機(jī)器學(xué)習(xí)算法設(shè)計(jì)出滿足不同需求的芯片,。
機(jī)器學(xué)習(xí)解決半導(dǎo)體制造問題
在半導(dǎo)體制造的過程中,對(duì)晶片的視覺質(zhì)量檢查是可以轉(zhuǎn)移到機(jī)器學(xué)習(xí)上的,,可以讓這一過程變得更自動(dòng)化,,或者可以提升現(xiàn)有方法的精確度。通過更早或更好地發(fā)現(xiàn)瑕疵,,制造企業(yè)可以提升生產(chǎn)率,、降低成本。
計(jì)算機(jī)系統(tǒng)中的學(xué)習(xí)型啟發(fā)式算法
另一個(gè)機(jī)器學(xué)習(xí)可以參與的領(lǐng)域則是使用學(xué)習(xí)式的啟發(fā)法,,應(yīng)用于計(jì)算機(jī)系統(tǒng)中,,如編譯器、操作系統(tǒng),、文件系統(tǒng),、網(wǎng)絡(luò)堆棧等,。計(jì)算機(jī)往往需要很多手工設(shè)計(jì)的啟發(fā)式算法用于在系統(tǒng)運(yùn)行中尋找解決方法(如資源調(diào)用等)。
現(xiàn)在,,機(jī)器學(xué)習(xí)也許可以替代這些算法了,。基于機(jī)器學(xué)習(xí)的啟發(fā)式算法能夠考慮更多的語(yǔ)境信息,,使得系統(tǒng)的運(yùn)行方式更符合當(dāng)前的運(yùn)行模式,,而不是根據(jù)一般情況設(shè)計(jì)的方法。其他機(jī)器學(xué)習(xí)可以替代的地方包括對(duì)哈希表,、B 樹等傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)的替代,。機(jī)器學(xué)習(xí)可以獲得這些數(shù)據(jù)的真實(shí)分布,并使用系統(tǒng)進(jìn)行處理,,使得數(shù)據(jù)量減少,、效率提升。
未來(lái)的機(jī)器學(xué)習(xí)發(fā)展
將來(lái)的機(jī)器學(xué)習(xí)模型可能和現(xiàn)在有一些明顯區(qū)別,。將來(lái)的機(jī)器學(xué)習(xí)系統(tǒng)可能是在大規(guī)模機(jī)器學(xué)習(xí)加速硬件上運(yùn)行的,,而且單一模型可以被訓(xùn)練用來(lái)完成上千甚至上百萬(wàn)的任務(wù)。該模型由不同的組件和結(jié)構(gòu)組成,,樣本之間的數(shù)據(jù)流動(dòng)可能是動(dòng)態(tài)的,,每種樣本都不一樣。模型可能使用類似于「稀疏權(quán)重門(sparsely-gated)」結(jié)構(gòu),,混合了專家知識(shí)和學(xué)習(xí)路徑,,具有很強(qiáng)的能力。但是對(duì)于給定的任務(wù)或樣本,,模型只會(huì)激活其中一部分,。
圖 8:描述這一大型、具有稀疏權(quán)重且可以完成多任務(wù)的模型,。
后摩爾定律時(shí)代,,簡(jiǎn)單地壓榨硬件算力不一定能夠讓機(jī)器學(xué)習(xí)再進(jìn)步了。相反,,通過設(shè)計(jì)專業(yè)的機(jī)器學(xué)習(xí)硬件設(shè)備,,讓機(jī)器學(xué)習(xí)解決現(xiàn)有的硬件設(shè)計(jì)、制造和運(yùn)行方面的痛點(diǎn)才是出路,。將來(lái)的機(jī)器學(xué)習(xí)模型可能更大,,但是會(huì)朝著多任務(wù)的方向繼續(xù)發(fā)展。