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