人工智能正在從根本上改變處理器設(shè)計,將針對特定人工智能工作負(fù)載的定制處理元件與針對其他任務(wù)的更傳統(tǒng)處理器相結(jié)合。
但是,這種權(quán)衡越來越令人困惑、復(fù)雜,管理起來也越來越具有挑戰(zhàn)性。例如,工作負(fù)載的變化速度可能會超過定制設(shè)計所需的時間。此外,人工智能特定流程可能會超出功耗和散熱預(yù)算,這可能需要調(diào)整工作負(fù)載。整合所有這些部件可能會產(chǎn)生一些問題,需要在系統(tǒng)層面而不僅僅是芯片中加以解決。
"Rambus?研究員兼杰出發(fā)明家 Steven Woo 說:"人工智能工作負(fù)載顛覆了處理器架構(gòu)。"很明顯,現(xiàn)有的架構(gòu)并不能很好地發(fā)揮作用。早在 2014 年,人們就開始意識到,使用 GPU 可以極大地提高交易性能,這極大地推動了人工智能的發(fā)展。那時,人們開始說:'GPU 是一種專用架構(gòu)。我們能做得更多嗎?'當(dāng)時,人工智能中非常常見的乘法累加顯然是瓶頸所在。現(xiàn)在,你已經(jīng)擁有了這么多優(yōu)秀的硬件。我們已經(jīng)掌握了乘法累加的方法。那么我們還需要在硬件中加入什么呢?這就是架構(gòu)的真諦。就是要找到帳篷里的高釘子或長帳篷桿,然后把它敲下來"。
其他人對此表示贊同。"Ansys公司總監(jiān)里奇-戈德曼(Rich Goldman)說:"人工智能正好適合 GPU 架構(gòu),這就是英偉達(dá)擁有萬億美元市值的原因。"有趣的是,英特爾很早就在做 GPU,不過是在 CPU 內(nèi)驅(qū)動視頻處理器。現(xiàn)在他們開始做獨立的 GPU。另外,AMD 有一個非常有趣的架構(gòu),即 GPU 和 CPU 共享內(nèi)存。不過,CPU 仍然很重要。英偉達(dá)公司的Grace Hopper是 CPU 與 GPU 的組合,因為并非所有應(yīng)用都適合 GPU 架構(gòu)。即使是在適合使用 GPU 的應(yīng)用中,也有部分應(yīng)用只運行小型 CPU。幾十年來,我們一直在 CPU x86 架構(gòu)上運行一切,也許還包括了 RISC 架構(gòu),但它就是 CPU。不同的應(yīng)用在不同的架構(gòu)上運行得更好,而英偉達(dá)公司恰好首先專注于視頻游戲,然后才轉(zhuǎn)向動畫和電影。同樣的架構(gòu)非常適合人工智能,而人工智能正推動著當(dāng)今的一切"。
現(xiàn)在的挑戰(zhàn)是如何開發(fā)更高效的平臺,并針對特定用例進行優(yōu)化。“當(dāng)你在真正的可擴展硬件中實現(xiàn)這個東西,而不僅僅是一次性用例時,那么挑戰(zhàn)就變成了如何運行這個東西?” Cadence Tensilica AI 產(chǎn)品營銷總監(jiān) Suhas Mitra 說道。“傳統(tǒng)上,在處理器中,我們有一個 CPU。如果你有一個移動平臺,你就有一個 GPU、DSP 等。所有這些都會變得混亂,因為人們看到這些工作負(fù)載有時并行得令人尷尬。隨著并行計算的出現(xiàn),這就是 GPU 變得非常流行的原因——它們擁有非常好的硬件引擎,可以進行并行處理——供應(yīng)商很容易立即獲利。”
Expedera 公司首席科學(xué)家沙拉德-喬勒(Sharad Chole)說,當(dāng)工作負(fù)載定義明確時,這種方法最有效。"在這類架構(gòu)中,比方說,你正試圖在邊緣架構(gòu)中以緊密耦合的方式集成 ISP 和?NPU。SoC 領(lǐng)導(dǎo)者正在研究如何減少設(shè)計的面積和功耗。"
Chole 說,這里的挑戰(zhàn)在于了解架構(gòu)內(nèi)存部分的延遲影響。"如果 NPU 速度慢,內(nèi)存會是什么樣子?當(dāng) NPU 速度較快時,內(nèi)存會是什么樣子?最后,平衡 MAC 與平衡內(nèi)存之間的問題也由此而來,我們正試圖盡可能減少輸入和輸出緩沖。
外部存儲器帶寬也是其中的關(guān)鍵部分,尤其是對于邊緣設(shè)備而言。"沒有人擁有足夠的帶寬,"他補充道。"因此,我們該如何劃分工作負(fù)載或調(diào)度神經(jīng)網(wǎng)絡(luò),從而使外部內(nèi)存帶寬得以維持并盡可能降低?這基本上就是我們通過打包或?qū)⑸窠?jīng)網(wǎng)絡(luò)分解成更小的片段并嘗試執(zhí)行這兩個片段來實現(xiàn)的。
為快速變化的未來而設(shè)計
人工智能的一個大問題是,算法和計算模型的發(fā)展和變化速度比從頭開始設(shè)計的速度更快。
Rambus 的 Woo 表示:“如果你說你要構(gòu)建一款非常適合 LSTM(長短期記憶)模型的 CPU,那么這個周期就是幾年。” “然后你會在兩年內(nèi)意識到,LSTM 模型作為主導(dǎo)事物來了又去。您想要制造專門的硬件,但您必須做得更快才能跟上。如果我們能夠像改變算法一樣快地創(chuàng)建硬件,那將是圣杯。那太好了,但我們不能這樣做,盡管行業(yè)面臨著這樣做的壓力。”
"Rambus 的 Woo 說:"如果你說你要打造一個在LSTM(長短期記憶)模型方面非常出色的 CPU,那么這個周期就是幾年。"然后在兩年后你發(fā)現(xiàn),LSTM 模型成為主流。你想做專用硬件,但你必須做得更快才能跟上。如果我們創(chuàng)造硬件的速度能和改變算法的速度一樣快,那將是一個奇跡。這是一件好事,可惜我們做不到,盡管業(yè)界正面臨著這樣的壓力。
這也意味著處理人工智能工作負(fù)載的處理器的架構(gòu)將不同于那些不專注于人工智能的處理器。"Woo說:"如果你看看這些用于訓(xùn)練的引擎,它們不會運行Linux或Word,因為它們不是為通用分支、多種指令或支持多種語言而設(shè)計的。"它們幾乎都是基本引擎,只在少數(shù)類型的操作中運行得非常快。它們針對計算所需的特定數(shù)據(jù)移動模式進行了高度調(diào)整。以谷歌 TPU 為例,自上世紀(jì) 80 年代以來,它就采用了脈動陣列架構(gòu)。它非常擅長在大型數(shù)據(jù)陣列上進行特定類型的均勻分布工作,因此非常適合這些密集的神經(jīng)網(wǎng)絡(luò)。但運行通用代碼并不是這些東西的設(shè)計初衷。它們更像是大規(guī)模的協(xié)處理器,能很好地完成計算中真正重要的部分,但它們?nèi)孕枰B接到管理計算其余部分的處理器之上"。
即使是基準(zhǔn)測試也很困難,因為它并不總是同類比較,這就給架構(gòu)的開發(fā)帶來了困難。“這是一個很難的話題,因為不同的人使用不同的工具來解決這個問題,”Expedera 的 Chole 說,"在設(shè)計工程師的日常工作中,這項任務(wù)就是系統(tǒng)級基準(zhǔn)測試。你對SoC芯片的每個部分都要單獨進行基準(zhǔn)測試,然后根據(jù)這些數(shù)據(jù)推斷所需的帶寬。這就是性能,這就是我要得到的延遲。在此基礎(chǔ)上,你試圖估算整個系統(tǒng)的外觀。但是,隨著我們在設(shè)計過程中取得更多進展,我們正在研究某種基于仿真的方法,這種方法不是完整的仿真,而是在仿真中進行事務(wù)精確仿真,以獲得不同設(shè)計模塊的精確性能和精確帶寬要求。例如,有一個 RISC-V 和一個 NPU,它們必須協(xié)同工作并完全共存。它們必須流水線化嗎?它們的工作負(fù)載能否流水線化?RISC 究竟需要多少周期?為此,我們必須在 RISC-V 上編譯程序,在 NPU 上編譯我們的程序,然后進行聯(lián)合仿真。
人工智能工作負(fù)載對處理器設(shè)計的影響
所有這些變量都會影響設(shè)計的功耗、性能和面積/成本。
Arm 研究員兼高級技術(shù)總監(jiān) Ian Bratt 說:"ML 工作負(fù)載的 PPA 權(quán)衡與所有架構(gòu)師在考慮加速時面臨的權(quán)衡類似--能效與面積。在過去幾年中,隨著 ML 專用加速指令的增加,CPU 在處理 ML 工作負(fù)載方面的性能顯著提高。許多 ML 工作負(fù)載都能在現(xiàn)代 CPU 上出色地運行。但是,如果您處于能源高度緊張的環(huán)境中,那么值得付出額外的硅面積成本來增加專用 NPU,因為在 ML 推理中,NPU 比 CPU 更節(jié)能。這種能效是以增加硅片面積和犧牲靈活性為代價的;NPU IP 通常只能運行神經(jīng)網(wǎng)絡(luò)。此外,像 NPU 這樣的專用單元也可能比 CPU 這樣更靈活的組件實現(xiàn)更高的整體性能(更低的延遲)"。
西門子 EDA軟件部門的項目總監(jiān) Russell Klein解釋說:“設(shè)計中有兩個主要方面對其操作特性(PPA)影響最為顯著。一是計算中使用的數(shù)據(jù)表示。對于大多數(shù)機器學(xué)習(xí)計算來說,浮點數(shù)確實效率很低。使用更合適的表示可以使設(shè)計更快、更小、功耗更低。”
另一個主要因素是設(shè)計中計算元件的數(shù)量。"從根本上說,設(shè)計中要內(nèi)置多少個乘法器,"Klein說,“這將帶來并行性,而并行性是提供性能所必需的。一個設(shè)計可以有大量的乘法器,使其體積大、功耗高、速度快。也可以只有幾個乘法器,體積小、功耗低,但速度慢得多。除了功耗、性能和面積之外,還有一個非常重要的指標(biāo),那就是每次推理的能耗。任何由電池供電或獲取能量的設(shè)備,都可能對每次推理的能量比功率更敏感。"
特征和權(quán)重的數(shù)字表示也會對設(shè)計的 PPA 產(chǎn)生重大影響。
"在數(shù)據(jù)中心,一切都是 32 位浮點數(shù)。替代表示法可以減少運算器的大小以及需要移動和存儲的數(shù)據(jù)量,"他指出,"大多數(shù)人工智能算法并不需要浮點數(shù)支持的全部范圍,使用定點數(shù)就可以很好地工作。定點乘法器的面積和功率通常只有相應(yīng)浮點乘法器的 1/2,而且運行速度更快。通常也不需要 32 位的定點表示。許多算法可以將特征和權(quán)重的位寬減小到 16 位,在某些情況下甚至可以減小到 8 位。乘法器的大小和功率與其運算的數(shù)據(jù)大小的平方成正比。因此,16 位乘法器的面積和功率是 32 位乘法器的 1/4。8 位定點乘法器的面積和功耗大約是 32 位浮點乘法器的 3%。如果算法可以使用 8 位定點數(shù)而不是 32 位浮點數(shù),則只需要 1/4 的內(nèi)存來存儲數(shù)據(jù),只需要 1/4 的總線帶寬來移動數(shù)據(jù)。這大大節(jié)省了面積和功耗。通過量化感知訓(xùn)練,所需的位寬可以進一步減少。通常情況下,以量化感知方式訓(xùn)練的網(wǎng)絡(luò)所需的位寬約為訓(xùn)練后量化網(wǎng)絡(luò)的 1/2。這樣,存儲和通信成本可減少1/2,乘法器面積和功率可減少 3/4。量化感知訓(xùn)練后的網(wǎng)絡(luò)通常只需要 3-8 位的定點表示。有時,某些層只需要一位。而 1 位乘法器就是一個 "與 "門。
此外,在對網(wǎng)絡(luò)進行積極量化時,溢出會成為一個重要問題。"對于 32 位浮點數(shù),開發(fā)人員不需要擔(dān)心數(shù)值超出表示的容量。但對于小的定點數(shù),就必須解決這個問題。溢出很可能會經(jīng)常發(fā)生。使用飽和運算符是解決這一問題的方法之一。該運算符不會溢出,而是存儲表示值中可能存在的最大值。
事實證明,這對機器學(xué)習(xí)算法非常有效,因為大的中間和的確切大小并不重要,只要它變大了就足夠了。通過使用飽和數(shù)學(xué),開發(fā)人員可以將定點數(shù)的大小再減少一兩位。有些神經(jīng)網(wǎng)絡(luò)確實需要浮點表示法提供的動態(tài)范圍。它們在轉(zhuǎn)換為定點數(shù)時會損失過多的精度,或者需要超過 32 位的表示才能提供良好的精度。
在這種情況下,有幾種浮點表示法可以使用。谷歌為其 NPU 開發(fā)的 B-float16(或 "brain float")是一種 16 位浮點數(shù),可輕松轉(zhuǎn)換為傳統(tǒng)浮點數(shù)或從傳統(tǒng)浮點數(shù)轉(zhuǎn)換為浮點數(shù)。與較小的定點數(shù)一樣,它可以實現(xiàn)較小的乘法器,減少數(shù)據(jù)存儲和移動。Klein補充說:"還有一種 IEEE-754 16 位浮點數(shù),以及英偉達(dá)的 Tensorfloat。
使用其中任何一個都會導(dǎo)致更小、更快、功耗更低的設(shè)計。
此外,Woo 說:"如果你有一個通用內(nèi)核,它確實能做很多事情,但不會做得很好。它只是通用的。在你完成工作負(fù)載的任何時候,通用內(nèi)核都會有一部分在使用,一部分不在使用。擁有這些東西需要面積和功率。
人們開始意識到,摩爾定律仍在為我們提供更多的晶體管,所以正確的做法也許是在人工智能流水線上構(gòu)建這些擅長特定任務(wù)的專用內(nèi)核。有時你會關(guān)閉它們,有時你會打開它們。但這總比擁有這些通用內(nèi)核要好,因為在通用內(nèi)核上,你總是會浪費一些面積和功耗,而且永遠(yuǎn)無法獲得最佳性能。再加上一個愿意付費的市場——一個利潤率很高、價值很高的市場,這就是一個很好的組合。
Ansys 產(chǎn)品營銷總監(jiān) Marc Swinnen 說:"在硬件工程領(lǐng)域,這也是一種相對容易理解的方法,你提出了版本 1,一旦你安裝了它,你就會發(fā)現(xiàn)哪些有效,哪些無效,并嘗試解決這些問題。你運行的應(yīng)用程序?qū)τ诹私膺@些權(quán)衡需要是什么至關(guān)重要。如果你能讓自己的硬件與你想運行的應(yīng)用相匹配,你就能獲得比使用現(xiàn)成的東西更高效的設(shè)計。你為自己制作的芯片非常適合你想要做的事情。"
這就是為什么一些生成式人工智能開發(fā)人員正在探索構(gòu)建自己的芯片,這表明在他們看來,即使是當(dāng)前的半導(dǎo)體也不足以滿足他們未來的需求。這是人工智能如何改變處理器設(shè)計和周邊市場動態(tài)的又一個例子。
人工智能還可能在芯片領(lǐng)域發(fā)揮重要作用,在芯片領(lǐng)域,半定制和定制硬件塊可以被表征并添加到設(shè)計中,而無需從頭開始創(chuàng)建一切。英特爾(Intel)和 AMD 等大型芯片制造商已經(jīng)在內(nèi)部這樣做了一段時間,但無晶圓廠公司則處于劣勢。
“問題在于,你的小芯片必須與現(xiàn)有解決方案競爭,” Fraunhofer IIS自適應(yīng)系統(tǒng)工程部高效電子部門負(fù)責(zé)人 Andy Heinig 表示。“如果你目前不注重性能,你就無法與之競爭。人們都在關(guān)注這個生態(tài)系統(tǒng)的啟動和運行。但從我們的角度來看,這是一個先有雞還是先有蛋的問題。你需要性能,尤其是因為芯片比 SoC 解決方案更昂貴。但你目前還不能真正專注于性能,因為你必須先讓這個生態(tài)系統(tǒng)投入運行。”
正確的開始
與過去不同的是,許多芯片都是針對一個插槽而設(shè)計的,而人工智能則完全取決于工作負(fù)載。
“在進行這些權(quán)衡時,最重要的是要知道目標(biāo)是什么,”Expedera 的 Chole 說。“如果你只是說'我想做所有的事,支持所有的功能',那么你就沒有真正優(yōu)化任何東西。你基本上只是把一個通用解決方案放在里面,希望它能滿足你的功率要求。據(jù)我們了解,這種做法很少奏效。邊緣設(shè)備上的每個神經(jīng)網(wǎng)絡(luò)和每個部署案例都是獨一無二的。如果您的芯片安裝在耳機中并運行 RNN,而不是安裝在 ADAS 芯片中并運行變壓器,那么這是一個完全不同的用例。NPU、內(nèi)存系統(tǒng)、配置和功耗都完全不同。因此,了解我們想要嘗試的重要工作負(fù)載集是非常重要的。這可以是多個網(wǎng)絡(luò)。你必須讓團隊就重要的網(wǎng)絡(luò)達(dá)成一致,并在此基礎(chǔ)上進行優(yōu)化。工程團隊在考慮 NPU 時就缺少這一點。他們只是想獲得世界上最好的,但如果不做一些交易,就不可能獲得最好的。我可以給你最好的,但你想要哪方面最好?”
Cadence公司的Mitra指出,每個人對PPA的看法都差不多,但人們會強調(diào)他們關(guān)心的是功率、性能、面積/成本(PPAC)中的哪一部分。"如果你是數(shù)據(jù)中心的人,你可能會接受犧牲一點面積,因為你所追求的是非常高吞吐量的機器,因為你需要進行數(shù)十億次的人工智能推斷或人工智能工作,而這些工作在運行巨大的模型、產(chǎn)生大量數(shù)據(jù)的同時,也在進行著市場份額的交易。你可以考慮在臺式機上運行人工智能模型開發(fā)工作進行推理的日子已經(jīng)一去不復(fù)返了,但即使是一些大型語言模型的推理工作也變得相當(dāng)棘手。這意味著你需要一個海量數(shù)據(jù)集群,你需要在超大規(guī)模的數(shù)據(jù)中心規(guī)模上進行海量數(shù)據(jù)計算。"
還有其他考慮因素。Synopsys EDA 集團產(chǎn)品管理總監(jiān) William Ruby 表示:“硬件架構(gòu)決策推動了這一點,但軟件的作用也至關(guān)重要。”他指出,性能與能源效率是關(guān)鍵。“需要多少內(nèi)存?內(nèi)存子系統(tǒng)如何分區(qū)?軟件代碼可以針對能源效率進行優(yōu)化嗎?(是的,可以。)工藝技術(shù)的選擇也很重要——出于所有 PPAC 原因。”
此外,Synopsys 公司 AI/ML 處理器產(chǎn)品經(jīng)理 Gordon Cooper 認(rèn)為,如果能效不是重點,也可以使用嵌入式 GPU。"它將為您提供最佳的編碼靈活性,但在功耗和面積效率方面永遠(yuǎn)比不上專用處理器。如果使用 NPU 進行設(shè)計,那么在平衡面積與功耗方面仍需做出權(quán)衡。盡量減少片上內(nèi)存可以顯著降低總面積預(yù)算,但會增加從外部內(nèi)存的數(shù)據(jù)傳輸,從而顯著增加功耗。增加片上內(nèi)存將降低外部內(nèi)存讀寫的功耗"。
結(jié)論
所有這些問題越來越成為系統(tǒng)問題,而不僅僅是芯片問題。
“人們在看待人工智能訓(xùn)練部分時會說:'哇,計算量真大。'"Woo 說,"一旦你想把所有這些加速硬件都投入其中,那么系統(tǒng)的其他部分就會開始受到阻礙。出于這個原因,我們越來越多地看到英偉達(dá)等公司推出的這些平臺,它們擁有精心設(shè)計的人工智能訓(xùn)練引擎,但也可能采用英特爾至強芯片。這是因為人工智能引擎并不適合進行其他部分的計算。它們不是為運行通用代碼而設(shè)計的,因此這越來越多地成為一個異構(gòu)系統(tǒng)問題。你必須讓所有東西都能協(xié)同工作。”
另一個難題是在軟件方面,可以通過各種方法提高效率,例如還原法。“我們認(rèn)識到,在人工智能中,有一部分特定的算法和特定的計算被稱為還原,這是一種奇特的方法,即把大量數(shù)字還原成一個數(shù)字或一小組數(shù)字,”Woo解釋道,“可以是把它們加在一起或類似的東西。傳統(tǒng)的方法是,如果你有來自所有其他處理器的數(shù)據(jù),通過互連網(wǎng)絡(luò)發(fā)送到一個處理器,然后讓這個處理器將所有數(shù)據(jù)相加。所有這些數(shù)據(jù)都是通過交換機經(jīng)由網(wǎng)絡(luò)到達(dá)這臺處理器的。那么,我們?yōu)槭裁床恢苯釉诮粨Q機中將它們相加呢?這樣做的好處是類似于在線處理。最吸引人的是,一旦你在交換機中添加完所有內(nèi)容,你只需要傳送一個數(shù)字,這意味著網(wǎng)絡(luò)流量會減少。”
Woo 說,這樣的架構(gòu)考慮因素值得考慮,因為它們能同時解決幾個問題。首先,數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸速度非常慢,這就要求我們盡可能少地傳輸數(shù)據(jù)。其次,它避免了將數(shù)據(jù)傳送到處理器,然后再讓處理器進行運算,最后將結(jié)果傳送回來的冗余工作。第三,它非常并行,因此你可以讓每個交換機完成部分計算。
同樣,Expedera 的 Chole 表示,人工智能工作負(fù)載現(xiàn)在可以通過單個圖表來定義。“有了這個圖表,就不是一小套指令了。我們不是在做一個加法。我們正在同時進行數(shù)百萬次加法運算,或者我們正在同時進行1000萬次矩陣乘法運算。這改變了你對執(zhí)行的思考模式,改變了你對指令的思考模式,改變了你對指令的壓縮模式,改變了你對指令的預(yù)測和調(diào)度模式。在通用 CPU 中這樣做是不切實際的。要做到這一點,成本太大。然而,作為神經(jīng)網(wǎng)絡(luò),同時活動的 MAC 數(shù)量巨大,因此,生成指令、創(chuàng)建指令、壓縮指令、調(diào)度指令的方式,在利用率和帶寬方面會發(fā)生很大變化。這就是人工智能對處理器架構(gòu)方面的巨大影響。”
編輯:黃飛
?
評論
查看更多