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