人工智能正在從根本上改變處理器的設計,將針對特定人工智能工作負載的定制處理單元與用于其他任務的更傳統的處理器相結合。
但權衡越來越令人困惑、復雜,管理起來也越來越具有挑戰性。例如,工作負載的變化速度可能比生產定制設計所需的時間還要快。此外,特定于人工智能的流程產生的功率和熱可能會超出預算,這可能需要調整工作負載。整合所有這些部分可能會產生需要在系統層面解決的問題,而不僅僅是在芯片層面。
“人工智能工作負載已經徹底改變了處理器架構,”Rambus研究員、杰出的發明家史蒂文?吳(Steven Woo)表示。“很明顯,現有的架構并不能很好地工作。當人們在2014年開始意識到你可以使用gpu并在交換性能上獲得巨大收益時,它就給了人工智能一個巨大的推動。這時人們開始說,‘GPU是一種專門的架構。我們還能做得更多嗎?很明顯,人工智能中非常常見的乘法累加是瓶頸。現在你有了這些很棒的硬件。我們已經搞定了乘法累加。那么我們還需要在硬件中加入什么呢?這才是架構的真諦。就如同在拆帳篷時關鍵是找到帳篷里的掛鉤或長桿子,然后把它們敲倒。”
其他人也同意。Ansys主管Rich Goldman表示:“人工智能適合GPU架構,這就是英偉達擁有萬億美元市值的原因。”“有趣的是,英特爾做gpu已經很長時間了,但是用來在他們的cpu內部驅動視頻處理器。現在他們在做獨立的gpu。此外,AMD有一個非常有趣的架構,GPU和CPU共享內存。然而,CPU仍然很重要。NVIDIA的Grace Hopper是cpu和GPU的組合,因為并不是所有的東西都適合GPU架構。即使在這樣做的應用程序中,也有一些部件只能運行小型cpu。幾十年來,我們一直在x86架構的CPU上運行,也許是RISC架構,但它是一個CPU。不同的應用程序在不同的架構上運行得更好,碰巧NVIDIA首先專注于視頻游戲,并將其轉化為動畫和電影。同樣的架構非常適合人工智能,而人工智能正在推動今天的一切。”
現在的挑戰是如何開發更有效的平臺,可以針對特定的用例進行優化。“當你在真正可擴展的硬件上實現這個東西時,而不僅僅是一次性的用例,那么挑戰就變成了你如何運行這個東西?Cadence Tensilica AI產品營銷總監Suhas Mitra說。“傳統的處理器,我們有一個CPU。如果你有一個移動平臺,你就有GPU、DSP等。所有這些都很混亂,因為人們看到這些工作負載有時是令人尷尬的并行。隨著并行計算的出現,這也是gpu變得非常流行的原因——它們擁有非常好的硬件引擎,可以進行并行處理——供應商很容易立即獲利。”
Expedera的首席科學家沙拉德?喬勒(Sharad Chole)表示,當工作量得到明確的理解時,這種方法效果最好。“在這些架構中,假設你試圖在邊緣架構中以緊密耦合的方式集成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上編譯程序,然后共同模擬。”
人工智能工作負載對處理器設計的影響
所有這些變量都會影響設計的處理器的功率、性能和面積/成本。
根據Arm的研究員兼高級技術總監Ian Bratt的說法,“PPA對ML工作負載的權衡與所有架構師在考慮加速時所面臨的權衡類似——能效與面積。在過去的幾年里,cpu在機器學習工作負載上有了明顯的提高,增加了特定于機器學習的加速指令。許多機器學習工作負載將在現代CPU上運行得很好。但是,如果您處于高度受限的能源環境中,那么可能值得支付額外的硅面積成本來添加專用npu,這比用于ML推理的CPU更節能。這種效率是以額外的硅面積和犧牲靈活性為代價的;NPU IP通常只能運行神經網絡。此外,像NPU這樣的專用單元也可能比像CPU這樣更靈活的組件具有更高的整體性能(更低的延遲)。”
西門子EDA CATAPULT軟件部門的項目主管Russell Klein解釋說:“設計中有兩個主要方面將對其工作特性(PPA)產生最重要的影響。一個是計算中使用的數據表示。對于大多數機器學習計算來說,浮點數的效率非常低。使用更合適的表示可以使設計更快、更小、更低功耗。”
另一個主要因素是設計中計算單元的數量。克萊因說:“從本質上講,設計中將內置多少乘法器。”“這帶來了提供性能所需的并行性。一個設計可以有大量的乘法器,使其體積大、耗電量大、速度快。或者它可以只有幾個,使其體積小,功耗低,但速度要慢得多。除了功率、性能和面積之外,另一個非常重要的度量是每次推理的能量。任何由電池供電或收集能量的東西,都可能比功率更敏感。”
特征和權重的數字表示也會對設計的PPA產生重大影響。
“在數據中心,一切都是32位浮點數。替代表示可以減少操作符的大小以及需要移動和存儲的數據量,”他指出。“大多數人工智能算法不需要浮點數支持的全部范圍,并且可以很好地處理定點數。定點乘法器的面積和功率通常是相應的浮點乘法器的1 / 2,而且運行速度更快。通常,32位的定點表示也不需要。許多算法可以將特征和權重的位寬度減小到16位,或者在某些情況下減小到8位甚至更小。乘法器的大小和功率與它所操作的數據大小的平方成正比。因此,16位乘法器的面積和功率是32位乘法器的四分之一。8位定點乘法器的面積和功耗大約是32位浮點乘法器的3%。如果算法可以使用8位定點數而不是32位浮點數,則只需要?的內存來存儲數據,并且只需要?的總線帶寬來移動數據。這大大節省了面積和電力。通過量化感知訓練,可以進一步減小所需的比特寬度。通常,以量化感知方式訓練的網絡需要的比特寬度大約是訓練后量化網絡的二分之一。這將存儲和通信成本降低了1 / 2,乘法器的面積和功率降低了3 / 4。量化感知訓練網絡通常只需要3-8位的定點表示。有時候,有些層可能只有一個位。一個1位乘法器是一個“與”門。
此外,當積極量化網絡時,溢出會成為一個重要問題。使用32位浮點數,開發人員不需要擔心值超出表示的容量。但是對于小的定點數,必須解決這個問題。很可能會經常發生溢出。使用飽和運算符是解決這個問題的一種方法。該操作將存儲表示的最大可能值,而不是溢出。事實證明,這對于機器學習算法非常有效,因為一個大的中間和的確切大小并不重要,只要它變大就足夠了。使用飽和數學可以讓開發人員從他們使用的固定點數的大小中減去1或2位。一些神經網絡確實需要浮點表示提供的動態范圍。它們在轉換為定點時失去了太多的精度,或者需要超過32位的表示才能提供良好的精度。在這種情況下,可以使用幾種浮點表示。谷歌為其NPU開發的B-float16(或“腦浮點數”)是一個16位浮點數,可以很容易地轉換為傳統浮點數。與較小的固定點數一樣,它會導致更小的乘數和更少的數據存儲和移動。還有IEEE-754 16位浮點數和NVIDIA的Tensorfloat。”
使用這些方法中的任何一種都將導致更小、更快、更低功耗的設計。
此外,Woo說:“如果你有一個通用的核心,它確實擅長做很多事情,但它不會做得很好。它只是一般的。在處理工作負載的任何時間點,都會有通用核心的某些部分正在使用,某些部分沒有使用。擁有這些東西需要面積,需要力量。人們開始意識到摩爾定律仍然會給我們帶來更多的晶體管,所以也許正確的做法是構建這些擅長AI流水線上某些任務的專門核心。有時你會關閉它們,有時你會打開它們。但這比使用這些通用內核要好,因為通用內核總是浪費一些面積和功率,而且永遠無法獲得最佳性能。再加上一個愿意支付的市場——一個非常高利潤、高美元的市場——這是一個很好的組合。”
在硬件工程領域,這也是一種相對容易理解的方法。Ansys的產品營銷總監Marc Swinnen說:“你打開第一個版本,一旦安裝了它,你就會發現哪些是可行的,哪些是不可行的,然后嘗試解決問題。”“你運行的應用程序對于理解這些權衡是至關重要的。如果您可以使您的硬件與您想要運行的應用程序相匹配,那么您將獲得比使用現成的東西更有效的設計。你為自己做的芯片正好適合你想做的事情。”
這就是為什么一些生成式人工智能開發者正在探索構建自己的芯片,這表明在他們看來,即使是目前的半導體也不足以滿足他們未來想要做的事情。這是人工智能如何改變處理器設計和周圍市場動態的又一個例子。
人工智能也可能在CHIPLET領域發揮重要作用,在這個領域,半定制和定制硬件模塊可以被表征并添加到設計中,而無需從頭開始創建所有東西。像英特爾和AMD這樣的大型芯片制造商已經在內部這樣做了一段時間,但無晶圓廠公司處于劣勢。
“問題在于,你的CHIPLET必須與現有的解決方案競爭,”弗勞恩霍夫研究所(Fraunhofer IIS)自適應系統工程部高效電子部門主管安迪·海尼格(Andy Heinig)說。“如果你現在不專注于表現,你就無法競爭。人們專注于讓這個生態系統啟動并運行。但從我們的角度來看,這是一個先有雞還是先有蛋的問題。你需要性能,特別是因為這些芯片比SoC解決方案更昂貴。但你目前還不能真正專注于性能,因為你必須先讓這個生態系統啟動并運行起來。
正確的開始
與過去不同的是,許多芯片都是為插槽設計的,而人工智能則完全取決于工作負載。
Expedera的Chole說:“當這些權衡發生時,心中有一個目標的概念是非常重要的。”“如果你只是說,‘我想做所有的事情,支持所有的事情’,那么你并沒有真正優化任何事情。你基本上只是把一個通用的解決方案放在里面,希望它能滿足你的功率需求。在我們看來,這種做法很少奏效。每個神經網絡和邊緣設備上的每個部署案例都是獨一無二的。如果把你的芯片安放在耳機里并運行RNN,而不是在ADAS芯片中運行變換器,這是一個完全不同的用例。npu、內存系統、配置、功耗完全不同。因此,了解我們想要嘗試的重要工作負載集是非常重要的。這些可以是多個網絡。您必須讓團隊在重要的網絡上達成一致,并在此基礎上進行優化。當工程團隊考慮npu時,這是缺失的。他們只是想要得到世界上最好的東西,但是你不可能在沒有交易的情況下得到最好的東西。我能給你最好的,但你想在哪個方面做到最好呢?”
Cadence的米特拉指出,每個人都以類似的方式思考PPA,但后來人們強調他們關心的是功率、性能、面積/成本(PPAC)的哪一部分。“如果你是一個數據中心的人,你可能會接受犧牲一點面積,因為你需要的是非常高吞吐量的機器,因為你需要做數十億的人工智能推理或人工智能的事情,這一次是在交易市場份額的同時運行巨大的模型,導致大量的數據。很久以前,你可以考慮一個桌面運行的東西,用于人工智能模型開發,用于推理,但即使是一些大型語言模型的推理也變得非常棘手。這意味著你需要一個大規模的數據集群,你需要在超大規模的數據中心規模上進行大規模的數據計算。”
還有其他的考慮。Synopsys EDA集團產品管理總監William Ruby表示:“硬件架構決策推動了這一點,但軟件的作用也至關重要。”他指出,性能與能效是關鍵。“需要多少內存?”如何對內存子系統進行分區?軟件代碼可以優化能源效率嗎?(是的,它可以。)出于所有PPAC的原因,工藝技術的選擇也很重要。”
此外,Synopsys人工智能/機器學習處理器產品經理Gordon Cooper表示,如果能效不是優先考慮的問題,可以使用嵌入式GPU。“它會給你最好的編碼靈活性,但永遠不會像專用處理器那樣節能。如果你在設計一個NPU,那么在面積和功率的平衡方面仍然需要做出權衡。最小化片上內存將大大減少您的總面積預算,但將增加從外部存儲器傳輸的數據,這將大大增加功率。增加片上內存將降低外部存儲器讀寫的功耗。”
結論
所有這些問題越來越成為系統問題,而不僅僅是芯片問題。
“人們認為人工智能訓練部分是,‘哦,哇,這真的是計算量很大。這是大量的數據移動,’”Woo說。“一旦你想要將所有這些加速硬件投入其中,那么系統的其余部分就會開始成為阻礙。出于這個原因,我們越來越多地看到像英偉達和其他公司的這些平臺,他們有精心設計的人工智能訓練引擎,但他們也可能有英特爾至強芯片。這是因為人工智能引擎不太適合做計算的另一部分。它們不是為運行通用代碼而設計的,所以這越來越成為一個異構系統問題。你必須讓所有的東西協同工作。”
另一個難題是在軟件方面,可以通過各種方法(如簡化)提高效率。“這是一種認識,在人工智能中,有一個特定的算法部分和一個特定的計算稱為減少,這是一種將大量數字減少到一個數字或一小組數字的奇特方式,”Woo解釋說。“它可能是將它們全部加在一起或類似的東西。傳統的做法是,如果你有所有來自其他處理器的數據,通過互聯網絡發送到一個處理器,然后讓這個處理器把所有的數據都加起來。所有這些數字都通過這個網絡通過交換機到達處理器。我們為什么不把它們加到開關里呢,因為它們都是通過開關的?優點是它類似于內聯處理。有趣的是,一旦你在交換機中添加了所有內容,你只需要傳遞一個號碼,這意味著網絡流量會下降。”
像這樣的架構考慮是值得考慮的,因為它們同時解決了幾個問題,Woo說。首先,數據在網絡上的移動速度非常慢,這告訴您要盡可能少地移動數據。其次,它消除了將數據傳遞給處理器的冗余工作,只是讓處理器完成所有的數學運算,然后將結果傳遞回來。這一切都在網絡中完成,第三,它是非常并行的,所以你可以讓每個交換機做部分計算。
同樣,Expedera的Chole表示,人工智能工作負載現在可以通過單幅圖來定義。“必須清楚這個圖并不是為了一小組指令。我們不是做單次加法。我們一次要做數百萬個加法,或者一次要做1000萬個矩陣乘法運算。這就改變了你對執行的思維模式,改變了你對指令的思維方式,改變了你對指令的壓縮方式,改變了你對指令的預測和調度方式。在通用CPU中這樣做是不實際的。這樣做的成本太高了。然而,作為一個神經網絡,同時活動的mac數量是巨大的,你可以生成指令的方式,創建指令,壓縮指令,調度指令,在利用率和帶寬方面改變了很多。這就是人工智能在處理器架構方面的巨大影響。”
審核編輯:劉清
-
處理器
+關注
關注
68文章
19286瀏覽量
229815 -
NVIDIA
+關注
關注
14文章
4986瀏覽量
103046 -
人工智能
+關注
關注
1791文章
47274瀏覽量
238468 -
RISC
+關注
關注
6文章
462瀏覽量
83730 -
GPU芯片
+關注
關注
1文章
303瀏覽量
5812
原文標題:AI正在顛覆處理器設計
文章出處:【微信號:AI智勝未來,微信公眾號:AI智勝未來】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論