人工智能正在從根本上改變處理器設(shè)計,將針對特定人工智能工作負(fù)載的定制處理元素與針對其他任務(wù)的更傳統(tǒng)的處理器相結(jié)合。
但是權(quán)衡變得越來越令人困惑、復(fù)雜和難以管理。例如,工作負(fù)載的變化速度可能比生產(chǎn)定制設(shè)計所需的時間還要快。此外,該人工智能-特定流程可能會超出電力和散熱預(yù)算,這可能需要調(diào)整工作負(fù)載。集成所有這些部分可能會產(chǎn)生需要在系統(tǒng)級解決的問題,而不僅僅是在芯片中。
“人工智能工作負(fù)載徹底改變了處理器架構(gòu),”Steven Woo說,他是蘭布斯。“很明顯,現(xiàn)有的體系結(jié)構(gòu)并不能很好地工作。一旦人們在2014年開始意識到你可以使用GPU并在交易性能上獲得巨大收益,這給了人工智能一個巨大的推動。那時人們開始說,GPU是一種專門的架構(gòu)。我們能做得更多嗎?當(dāng)時很明顯,在人工智能中非常普遍乘法累加是瓶頸。現(xiàn)在你有了所有這些偉大的硬件。我們已經(jīng)把乘法累加的東西搞定了。那么我們還需要在硬件中加入什么呢?這才是建筑的真諦。關(guān)鍵是在帳篷里找到高高的釘子或長長的帳篷桿,然后把它敲下來。“
其他人同意。“人工智能只是把自己借給GPU架構(gòu),這就是為什么英偉達(dá)有一萬億美元的市值,”說Ansys導(dǎo)演里奇·戈德曼。“有趣的是,英特爾已經(jīng)做了很長時間的GPU,但在他們的CPU內(nèi)部驅(qū)動視頻處理器。現(xiàn)在他們在做獨(dú)立的GPU。此外,AMD有一個非常有趣的架構(gòu),其中GPU和CPU共享內(nèi)存。但是,CPU還是很重要的。NVIDIA的格蕾絲·赫柏是CPU-GPU的組合,因?yàn)椴皇撬袞|西都適合GPU架構(gòu)。即使在這樣的應(yīng)用程序中,也有運(yùn)行小型CPU的部分。幾十年來,我們一直在一個CPU x86架構(gòu)上運(yùn)行一切,也許是RISC架構(gòu),但它是一個CPU。不同的應(yīng)用在不同的架構(gòu)上運(yùn)行得更好,而NVIDIA恰好首先專注于視頻游戲,并將其轉(zhuǎn)化為動畫和電影。同樣的架構(gòu)非常適合人工智能,人工智能正在推動今天的一切。”
現(xiàn)在的挑戰(zhàn)是如何開發(fā)更高效的平臺,可以針對特定的用例進(jìn)行優(yōu)化。“當(dāng)您在真正的可擴(kuò)展硬件中實(shí)施這一功能,而不僅僅是一次性使用案例時,挑戰(zhàn)就變成了如何運(yùn)行這一功能?”Tensilica AI產(chǎn)品營銷總監(jiān)蘇哈斯·米特拉說節(jié)奏。“傳統(tǒng)上,在處理器領(lǐng)域,我們有一個CPU。如果你有一個移動平臺,你有一個GPU,DSP等。所有這些都變得令人不安,因?yàn)槿藗兛吹竭@些工作負(fù)載有時是令人尷尬的并行。隨著并行計算的出現(xiàn),這就是GPU變得非常受歡迎的原因——他們有非常好的硬件引擎可以進(jìn)行并行處理——供應(yīng)商很容易立即獲利。”
首席科學(xué)家沙拉德·喬萊說,當(dāng)工作負(fù)荷得到很好的理解時,效果最好Expedera。“在這些類型的架構(gòu)中,假設(shè)您正在嘗試在邊緣架構(gòu)中以緊密耦合的方式集成ISP和NPU。SoC領(lǐng)導(dǎo)正在研究如何降低設(shè)計的面積和功耗。”
Chole說,這里的挑戰(zhàn)是理解架構(gòu)的存儲器部分的延遲含義。“如果NPU很慢,內(nèi)存會是什么樣子?當(dāng)NPU速度很快時,內(nèi)存會是什么樣子?最后,平衡MAC與平衡內(nèi)存之間的問題來自于我們試圖盡可能減少輸入和輸出緩沖的地方。”
外部存儲器帶寬也是其中的一個關(guān)鍵部分,尤其是對于邊緣設(shè)備。“沒有人有足夠的帶寬,”他補(bǔ)充道。“那么,我們?nèi)绾蝿澐止ぷ髫?fù)載或調(diào)度神經(jīng)網(wǎng)絡(luò),以便保持外部存儲器帶寬,并且盡可能低?這基本上是我們通過打包或?qū)⑸窠?jīng)網(wǎng)絡(luò)分成更小的部分并嘗試執(zhí)行這兩部分來完成的。”
為快速變化的未來而設(shè)計
人工智能的一個大問題是,算法和計算模型的發(fā)展和變化速度超過了從頭設(shè)計的速度。
Rambus的Woo說:“如果你說你要制造一個在這些LSTM(長期短期記憶)模型上非常棒的CPU,這個周期是幾年。“然后你會意識到,在兩年內(nèi),LSTM模特的出現(xiàn)和消失成為主導(dǎo)。你想做專門的硬件,但你必須做得更快才能跟上。圣杯將會是如果我們能像改變算法一樣快地創(chuàng)造硬件。這很好,但我們不能這么做,盡管行業(yè)正面臨這樣的壓力。”
這也意味著處理人工智能工作負(fù)載的處理器架構(gòu)將與不專注于人工智能工作負(fù)載的處理器不同。“如果你看看這些用于訓(xùn)練的引擎,它們不會運(yùn)行Linux或Word,因?yàn)樗鼈儾皇菫橥ㄓ梅种А⒍喾N指令或支持多種語言而設(shè)計的,”Woo說。“它們是非常簡單的引擎,可以在少量的操作中快速運(yùn)行。它們高度適應(yīng)進(jìn)行計算所需的特定數(shù)據(jù)移動模式。例如,在谷歌TPU中,脈動陣列架構(gòu)自20世紀(jì)80年代就已經(jīng)存在。它非常擅長在大型數(shù)據(jù)陣列上做特定類型的非常均勻分布的工作,所以它非常適合這些密集的神經(jīng)網(wǎng)絡(luò)。但是運(yùn)行通用代碼并不是這些東西的設(shè)計目的。它們更像是大規(guī)模的協(xié)處理器,可以很好地完成大部分計算,但它們?nèi)匀恍枰c其他東西接口,以便管理其余的計算。”
即使是基準(zhǔn)測試也是困難的,因?yàn)樗⒉豢偸翘O果與蘋果的比較,這使得開發(fā)架構(gòu)變得困難。“這是一個艱難的話題,因?yàn)椴煌娜耸褂貌煌墓ぞ邅韺?dǎo)航,”Expedera的Chole說。“在設(shè)計工程師的日常工作中,這項(xiàng)任務(wù)看起來像是系統(tǒng)級基準(zhǔn)測試。您單獨(dú)對SoC的每個部分進(jìn)行基準(zhǔn)測試,并嘗試根據(jù)這些數(shù)字推斷所需的帶寬。這是性能,這是我將得到的延遲。在此基礎(chǔ)上,你試圖估計整個系統(tǒng)會是什么樣子。但是,隨著我們在設(shè)計過程中取得更多進(jìn)展,我們會考慮某種基于模擬的方法,而不是完全模擬,例如模擬中的事務(wù)精確模擬,以獲得不同設(shè)計模塊的確切性能和確切帶寬要求。例如,有一個RISC-V和一個NPU,它們必須協(xié)同工作并完全共存。它們一定要流水線嗎?他們的工作量可以流水線化嗎?RISC需要多少確切的周期?為此,我們必須在RISC-V上編譯程序,在NPU上編譯程序,然后進(jìn)行聯(lián)合仿真。”
人工智能工作負(fù)載對處理器設(shè)計的影響
所有這些變量都會影響設(shè)計的功耗、性能和面積/成本。
研究員兼高級技術(shù)總監(jiān)伊恩·布拉特說手臂,“ML工作負(fù)載的PPA權(quán)衡類似于所有架構(gòu)師在考慮加速時面臨的權(quán)衡——能效與面積。在過去的幾年里,隨著特定于ML的加速指令的增加,CPU在ML工作負(fù)載方面已經(jīng)有了顯著的提高。許多ML工作負(fù)載可以在現(xiàn)代CPU上運(yùn)行。然而,如果您處于高度受限的能源環(huán)境中,那么可能值得支付額外的硅面積成本來添加專用npu,這比ML推斷的CPU更節(jié)能。這種效率是以額外的硅面積和犧牲靈活性為代價的;NPU IP往往只能運(yùn)行神經(jīng)網(wǎng)絡(luò)。此外,與CPU等更靈活的組件相比,NPU等專用單元可能能夠?qū)崿F(xiàn)更高的整體性能(更低的延遲)。”
拉塞爾·克萊恩,項(xiàng)目總監(jiān)西門子EDA的Catapult軟件部門解釋說:“設(shè)計中有兩個主要方面將最顯著地影響其操作特性,即PPA。一個是計算中使用的數(shù)據(jù)表示。對于大多數(shù)機(jī)器學(xué)習(xí)計算來說,浮點(diǎn)數(shù)真的非常低效。使用更合適的表示法可以使設(shè)計更快、更小、功耗更低。”
另一個主要因素是設(shè)計中計算元素的數(shù)量。“本質(zhì)上,多少乘數(shù)將被納入設(shè)計,”克萊恩說。“這帶來了交付性能所需的并行性。一個設(shè)計可以有大量的乘法器,使其體積大、功耗高、速度快。或者它可以只有幾個,使它體積小,功耗低,但速度慢得多。除了功耗、性能和面積之外,另一個非常重要的指標(biāo)是每次推理的能耗。任何由電池供電或獲取能量的東西,都可能對能量比功率更敏感。”
特征和權(quán)重的數(shù)字表示也會對設(shè)計的PPA產(chǎn)生重大影響。
“在數(shù)據(jù)中心,一切都是32位浮點(diǎn)數(shù)。替代表示可以減少操作符的大小和需要移動和存儲的數(shù)據(jù)量,”他指出。“大多數(shù)人工智能算法不需要浮點(diǎn)數(shù)支持的全部范圍,在定點(diǎn)數(shù)的情況下也能很好地工作。定點(diǎn)乘法器通常與相應(yīng)的浮點(diǎn)乘法器的面積和功率有關(guān),并且它們運(yùn)行得更快。通常,也不需要32位定點(diǎn)表示。許多算法可以將特征和權(quán)重的位寬減少到16位,或者在某些情況下減少到8位甚至更小。乘法器的大小和能力與它所運(yùn)算的數(shù)據(jù)大小的平方成正比。因此,16位乘法器是32位乘法器的面積和乘方。8位定點(diǎn)乘法器消耗的面積和功耗大約是32位浮點(diǎn)乘法器的3%。如果算法可以使用8位定點(diǎn)數(shù)而不是32位浮點(diǎn),則只需要存儲器來存儲數(shù)據(jù),并且只需要總線帶寬來移動數(shù)據(jù)。這些都是面積和功率的顯著節(jié)省。通過進(jìn)行量化感知訓(xùn)練,可以進(jìn)一步減少所需的位寬。典型地,以量化感知方式訓(xùn)練的網(wǎng)絡(luò)需要大約為訓(xùn)練后量化網(wǎng)絡(luò)的比特寬度。這將存儲和通信成本降低了,乘法器面積和功耗降低了。量化感知訓(xùn)練網(wǎng)絡(luò)通常只需要3-8比特的定點(diǎn)表示。有時候,一些層可能只有一個比特。1位乘法器是一個“與”門
此外,當(dāng)積極量化網(wǎng)絡(luò)時,溢出成為一個重要問題。“有了32位浮點(diǎn)數(shù),開發(fā)人員就不必?fù)?dān)心數(shù)值超出了表示能力。但是對于小的固定點(diǎn)數(shù),必須解決這個問題。溢出很可能會頻繁發(fā)生。使用飽和運(yùn)算符是解決這個問題的一種方法。該操作將存儲表示的最大可能值,而不是溢出。事實(shí)證明,這對于機(jī)器學(xué)習(xí)算法非常有效,因?yàn)橐粋€大的中間和的確切大小并不重要,它變大的事實(shí)就足夠了。使用飽和數(shù)學(xué)允許開發(fā)人員將他們使用的定點(diǎn)數(shù)的大小減少一兩位。一些神經(jīng)網(wǎng)絡(luò)確實(shí)需要浮點(diǎn)表示提供的動態(tài)范圍。當(dāng)轉(zhuǎn)換成定點(diǎn)時,它們只是損失了太多的精度,或者需要32位以上的表示來提供良好的精度。在這種情況下,有幾種浮點(diǎn)表示法可以使用。B-float16(或“大腦浮點(diǎn)”)是Google為他們的NPU開發(fā)的,是一種16位浮點(diǎn),很容易在傳統(tǒng)浮點(diǎn)之間轉(zhuǎn)換。與較小的定點(diǎn)數(shù)一樣,它導(dǎo)致較小的乘數(shù)和較少的數(shù)據(jù)存儲和移動。還有IEEE-754 16位浮點(diǎn)數(shù),以及NVIDIA的Tensorfloat,”Klein補(bǔ)充道。
使用其中任何一種都會導(dǎo)致更小、更快、更低功耗的設(shè)計。
此外,Woo說,“如果你有一個通用內(nèi)核,它真的擅長做很多事情,但它不會做任何事情。只是一般。在您處理工作負(fù)載的任何時間點(diǎn),通用內(nèi)核中都會有部分正在使用,部分沒有使用。擁有這些東西需要面積和能量。人們開始意識到摩爾定律仍然在給我們提供更多的晶體管,所以也許正確的事情是沿著人工智能管道建立這些擅長某些任務(wù)的專門核心。有時你會關(guān)掉它們,有時你會打開它們。但這比擁有這些通用內(nèi)核要好,因?yàn)樵谕ㄓ脙?nèi)核中,您總是會浪費(fèi)一些面積和功耗,并且永遠(yuǎn)不會獲得最佳性能。再加上一個愿意付費(fèi)的市場——一個高利潤、高收入的市場——這是一個很好的組合。”
這在硬件工程界也是一種相對容易理解的方法。Ansys的產(chǎn)品營銷總監(jiān)馬克·斯溫嫩(Marc Swinnen)說:“你提出第1版,一旦你安裝了它,你就會發(fā)現(xiàn)哪些可以用,哪些不能用,然后嘗試解決這些問題。”。“您運(yùn)行的應(yīng)用程序?qū)τ诶斫膺@些權(quán)衡是至關(guān)重要的。如果你能讓你的硬件與你想要運(yùn)行的應(yīng)用程序相匹配,你就能得到比使用現(xiàn)成的東西更有效的設(shè)計。你為自己制作的芯片非常適合你想做的事情。”
這就是為什么一些生成式人工智能開發(fā)商正在探索建造自己的硅芯片,這表明在他們看來,即使是目前的半導(dǎo)體也不足以滿足他們未來的需求。這是人工智能如何改變處理器設(shè)計和周圍市場動態(tài)的又一個例子。
人工智能還可能在小芯片領(lǐng)域發(fā)揮重要作用,在那里,半定制和定制硬件模塊可以被表征并添加到設(shè)計中,而無需從頭開始創(chuàng)建一切。英特爾和AMD等大型芯片制造商已經(jīng)在內(nèi)部這樣做了一段時間,但無晶圓廠公司處于劣勢。
“問題是,你的小芯片必須與現(xiàn)有的解決方案競爭,”安迪·海尼格說,他是弗勞恩霍夫二世適應(yīng)系統(tǒng)工程分部。“如果你目前不關(guān)注性能,你就無法競爭。人們關(guān)注的是如何讓這個生態(tài)系統(tǒng)運(yùn)轉(zhuǎn)起來。但是從我們的角度來看,這是一個先有雞還是先有蛋的問題。你需要性能,尤其是因?yàn)樾酒萐oC解決方案更貴。但你目前不能真正專注于性能,因?yàn)槟惚仨毷紫葐硬⑦\(yùn)行這個生態(tài)系統(tǒng)。”
正確的開始
與過去不同,當(dāng)時許多芯片都是為一個插座設(shè)計的,而人工智能則完全是為了工作負(fù)載。
Expedera的Chole說:“當(dāng)這些權(quán)衡發(fā)生時,了解目標(biāo)是什么是非常重要的。”“如果你只是說,‘我想做所有的事情,支持所有的事情’,那么你并沒有真正地為任何事情進(jìn)行優(yōu)化。你基本上只是把一個通用的解決方案放在里面,希望它能滿足你的功率要求。在我們看來,這很少奏效。邊緣設(shè)備上的每個神經(jīng)網(wǎng)絡(luò)和每個部署案例都是獨(dú)一無二的。如果你的芯片進(jìn)入耳機(jī)并運(yùn)行RNN,而不是坐在ADAS芯片中運(yùn)行變壓器,這是一個完全不同的用例。npu、內(nèi)存系統(tǒng)、配置和功耗完全不同。因此,了解我們想要嘗試的重要工作負(fù)載集非常重要。這些可以是多個網(wǎng)絡(luò)。你必須讓團(tuán)隊(duì)就重要的網(wǎng)絡(luò)達(dá)成一致,并在此基礎(chǔ)上進(jìn)行優(yōu)化。這是工程團(tuán)隊(duì)在考慮npu時所缺少的。他們只是認(rèn)為他們想得到世界上最好的東西,但是你不可能在沒有交換的情況下得到最好的東西。我可以給你最好的,但你最想要哪個領(lǐng)域的?”
Cadence的Mitra指出,每個人都以類似的方式考慮PPA,但人們會強(qiáng)調(diào)他們關(guān)心的是功耗、性能、面積/成本(PPAC)的哪一部分。“如果你是一個數(shù)據(jù)中心的人,你可能會同意犧牲一點(diǎn)點(diǎn)面積,因?yàn)槟愕哪繕?biāo)是非常高吞吐量的機(jī)器,因?yàn)槟阈枰鰯?shù)十億次人工智能推理或人工智能事情,這些事情一次就可以交易市場份額,同時運(yùn)行龐大的模型,產(chǎn)生海量數(shù)據(jù)。你可以考慮在臺式機(jī)上運(yùn)行人工智能模型開發(fā)工具進(jìn)行推理的日子已經(jīng)一去不復(fù)返了,但即使是這些大型語言模型的推理也變得相當(dāng)棘手。這意味著您需要一個大規(guī)模數(shù)據(jù)集群,并且您需要在超大規(guī)模的數(shù)據(jù)中心規(guī)模上進(jìn)行大規(guī)模數(shù)據(jù)計算。”
還有其他的考慮。“硬件架構(gòu)決策推動了這一點(diǎn),但軟件的作用也很關(guān)鍵,”的產(chǎn)品管理總監(jiān)威廉·魯比說新思科技EDA團(tuán)隊(duì)指出,性能與能效是關(guān)鍵。“需要多少內(nèi)存?內(nèi)存子系統(tǒng)將如何分區(qū)?軟件代碼可以針對能效進(jìn)行優(yōu)化嗎?(可以,可以。)工藝技術(shù)的選擇也很重要——因?yàn)樗蠵PAC的原因。”
此外,根據(jù)新思科技AI/ML處理器產(chǎn)品經(jīng)理戈?duì)柕恰觳恼f法,如果電源效率不是首要問題,可以使用嵌入式GPU。“它將為您提供最大的編碼靈活性,但在功耗和面積效率方面永遠(yuǎn)不如專用處理器。如果您使用NPU進(jìn)行設(shè)計,那么仍然需要權(quán)衡面積和功耗。最小化片內(nèi)存儲器會顯著降低總面積預(yù)算,但會增加來自外部存儲器的數(shù)據(jù)傳輸,從而顯著增加功耗。增加片內(nèi)內(nèi)存將降低外部存儲器讀寫的功耗。”
結(jié)論
所有這些問題越來越成為系統(tǒng)問題,而不僅僅是芯片問題。
“人們將人工智能訓(xùn)練部分視為‘哦,哇,這真的是計算量很大。這是大量的數(shù)據(jù)移動。“一旦你想用所有這些加速硬件,那么系統(tǒng)的其余部分就開始礙事了。出于這個原因,我們越來越多地看到英偉達(dá)和其他公司的這些平臺,它們擁有復(fù)雜的人工智能訓(xùn)練引擎,但它們也可能有英特爾至強(qiáng)芯片。這是因?yàn)檫€有人工智能引擎不太適合做的另一部分計算。它們不是為運(yùn)行通用代碼而設(shè)計的,所以這越來越成為一個異構(gòu)系統(tǒng)的問題。你必須讓所有東西都協(xié)同工作。”
難題的另一部分在軟件方面,可以通過各種方法(如簡化)來提高效率。“這是一種認(rèn)識,即在人工智能中,有一種算法的特定部分和一種稱為簡化的特定計算,這是一種將大量數(shù)字簡化為一個數(shù)字或一小組數(shù)字的奇特方法,”吳解釋說。“可能是把它們加在一起或者類似的事情。傳統(tǒng)的做法是,如果你從所有其他處理器獲得所有這些數(shù)據(jù),通過互連網(wǎng)絡(luò)將其發(fā)送到一個處理器,讓那個處理器將所有數(shù)據(jù)相加。所有這些號碼都要通過這個網(wǎng)絡(luò),通過交換機(jī)到達(dá)這個處理器。我們?yōu)槭裁床话阉鼈兗拥介_關(guān)里,因?yàn)樗鼈兌际峭ㄟ^開關(guān)的?優(yōu)點(diǎn)是它類似于在線處理。令人著迷的是,一旦你在交換機(jī)中添加完所有東西,你只需要提供一個數(shù)字,這意味著網(wǎng)絡(luò)流量下降了。”
Woo說,像這樣的架構(gòu)考慮是值得考慮的,因?yàn)樗鼈兺瑫r解決了幾個問題。首先,數(shù)據(jù)在網(wǎng)絡(luò)間的移動極其緩慢,這意味著您要盡可能少地移動數(shù)據(jù)。第二,它消除了將數(shù)據(jù)傳遞給處理器的冗余工作,只是讓處理器做所有的數(shù)學(xué)運(yùn)算,然后將結(jié)果傳遞回來。所有這些都在網(wǎng)絡(luò)中完成。第三,它非常并行,因此您可以讓每個交換機(jī)執(zhí)行部分計算。
同樣,Expedera的Chole表示,人工智能工作負(fù)載現(xiàn)在可以通過一個圖表來定義。“擁有那個圖表不是為了一個小的指令集。我們不做加法。我們一次做幾百萬次加法,或者一次做一千萬次矩陣乘法運(yùn)算。這改變了你對執(zhí)行的看法,你對指令的看法,你如何壓縮指令,你如何預(yù)測和調(diào)度指令。在通用CPU中這樣做是不實(shí)際的。能夠做到這一點(diǎn),成本太大了。然而,作為一個神經(jīng)網(wǎng)絡(luò),同時處于活動狀態(tài)的MAC數(shù)量巨大,您生成指令、創(chuàng)建指令、壓縮指令、調(diào)度指令的方式在利用率和帶寬方面會發(fā)生很大變化。這是人工智能對處理器架構(gòu)的巨大影響。”
審核編輯:黃飛
評論
查看更多