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