官术网_书友最值得收藏!

1.2.1 CPU

經過近些年不斷的架構改進,CPU已經不再是原來只能做數據流控制、不能有效進行大數據計算的傳統計算機器件了。CPU研制歷史悠久的公司(如英特爾和AMD)對其新一代CPU的AI功能做了強化和改進,新一代CPU完全可以勝任很多實際的AI計算任務。這些計算任務主要運行從較低復雜度到中等復雜度的深度學習算法。市場上現有的x86架構CPU,AI功能越來越豐富。

CPU最大的優點是高靈活性,因為它是通用處理器,可以通過軟件編程對不斷更新的AI算法進行處理。而且與GPU相比,CPU的成本低得多。CPU還有很重要的一個優勢是普及性,主要體現在云端的廣泛部署。

截至本書成稿之時,AI項目只是典型的數據中心中運行的一部分應用程序。大多數云端服務器還沒有配備AI加速器,只有AMD或英特爾的x86架構CPU。因此,大部分AI應用程序仍然運行在x86架構的CPU上。

對AI計算來說,CPU有它本身的優勢。雖然CPU進行AI計算的速度比不過GPU或者ASIC,但是它既能夠進行深度學習算法,又能進行常規的計算,在這幾類AI芯片中靈活性最高,而且在市場上容易找到,綜合效率較高。對物聯網設備、智能手機和可穿戴設備等對功耗和面積有嚴格限制的應用來說,一般無法放入專門用于語音和圖像處理的AI加速器,這時就可以由CPU來處理。另外,在安全性要求極高的應用場景(如太空、國防和醫療)中,CPU有時是唯一的選擇,例如航天用的芯片必須有極高的抗輻射性能,CPU對此已經有很成熟的設計,而GPU和屬于ASIC的TPU等芯片都還沒有這方面的認證。

嚴重依賴較大規模批處理(Batch Processing)的深度學習算法需要大量內存資源。數據中心中由CPU管理的主機擁有比AI加速器芯片大得多的內存容量,因此經常必須在CPU上運行深度學習算法。另外,盡管一些AI加速器芯片在大規模批處理時能夠提供極高的吞吐率,但對于需要實時推理的應用,大規模批處理的效果并不理想。而在小規模批處理時,CPU的時延非常低,具備競爭力。總體來看,x86架構CPU可能會繼續更多地用于AI推理,而非AI訓練。下面介紹英特爾和AMD在研發CPU方面的動向和整體趨勢。

1.2.1.1 英特爾的技術和產品動向

2008年3月,英特爾為x86架構的處理器引入了高級向量擴展(Advanced Vector Extensions,AVX),到現在已經發展到適用于HPC的第3代指令集AVX-512,其中提供的一系列新指令可以對512位向量執行單指令多數據流(Single-instruction Multiple-data Stream,SIMD)操作。2019年,英特爾在AVX指令集中增加了向量神經網絡指令(Vector Neural Network Instruction,VNNI)功能,并為16位腦浮點(BFloat16或BF16,谷歌提出的一種浮點數格式)和8位整數(INT8)等數據格式升級了AVX算術單元。

由于神經網絡計算通常需要先對兩個16位或兩個8位的值進行矩陣乘法運算,然后進行32位精度的加法運算,因此,位寬較大的AVX-512單元非常適合多個精度較低的計算同時進行。如果有需要多次使用的操作數,還可以將它們放在CPU緩存中,從而減少內存空間的占用,降低內存系統的運行壓力。

目前,英特爾正在構建新的計算單元,如在至強(Xeon)處理器中引入適用于AI的高級矩陣擴展(Advanced Matrix Extensions,AMX)和酷睿(Core)i系列處理器中的高斯與神經加速器(Gaussian and Neural Accelerator,GNA),用于數據加密和壓縮的加速器QuickAssist,以及用于加快內存數據分析的存內加速器(Accelerator-in-Memory,AiM)。在最新的英特爾Xeon處理器的Max系列特殊版本中,封裝有高達64GB的高帶寬內存(High Bandwidth Memory,HBM),這給一些AI算法帶來了顯著的性能提升。

近年來,英特爾一直在想方設法創新并改進自己的CPU產品,尤其想在數據中心的CPU中加入AI功能,以便搶回已經被英偉達占領的大部分市場份額。表1.1所示的英特爾云端芯片產品發展路線能夠體現這種思路。

表1.1 英特爾云端芯片產品發展路線

圖片表格

注:源自英特爾,2023年5月更新,表中內容為當年的預估路線。

英特爾CPU的P核和E核是其第12代和第13代酷睿處理器中使用的兩種不同類型的內核。P核是性能核,專門用于高性能的任務;E核是效率核,專門用于低功耗的任務。

表1.1中的GPU產品Ponte Vecchio芯片專注于HPC和AI計算,它的下一代被稱為Falcon Shores,都基于開放的行業標準。ASIC產品是Habana Gaudi 2,下一代為Habana Gaudi 3。

英特爾在2023年12月發布了新一代CPU——Meteor Lake,希望開啟全新的AI處理器時代。Meteor Lake采用英特爾的4nm工藝,是第一款采用Foveros 3D封裝技術、首次在處理器中搭載專用神經處理單元(Neural Processing Unit,NPU)AI引擎Intel AI Boost的CPU。

Meteor Lake的AI單元用芯粒(Chiplet)實現,因此不依賴大型GPU內核陣列。Intel AI Boost的神經處理單元不是基于英特爾FPGA業務部門Altera的開發成果,而是基于2016年收購的Movidius的技術。NPU將被搭載至Meteor Lake的所有版本中。

通過AI圖像生成器Stable Diffusion 1.5的應用場景,英特爾展示了在不同類型硬件(從CPU內核、集成GPU到專用NPU)上運行AI算法的優勢。系統的平均功耗從40W降至10W,速度提高了近一倍。如果所有功能都在集成GPU上運行,速度會進一步加快30%,功耗為37W,這比只使用CPU內核經濟得多。英特爾稱,將對即將推出的AI個人計算機(Personal Computer,PC)中的Microsoft 365 Copilot、Windows Studio Effects等軟件提供廣泛支持。

按照英特爾在2023年5月的預測,2027年,英特爾的AI芯片(包含CPU、GPU、FPGA、ASIC等)市場規模將可達到400億美元,其中CPU將占60%,其他占40%。然而,英特爾在2024年出現了巨額虧損,2024年10月發布的Arrow Lake CPU在基準測試中沒有取得預期的性能進展。英特爾不得不再次做出許多妥協,如不再采用原計劃的英特爾內部20A工藝,而是由代工業務競爭對手臺積電制造;原計劃的“全環繞柵極(GAA,詳見4.1.1小節)晶體管”創新也因此被推遲。英特爾希望在2025年新的CEO上任后扭轉局勢。

1.2.1.2 AMD的Ryzen AI

在AMD的Ryzen 7040系列移動設備處理器中,Ryzen 5 7640U及以上的7個型號中運算速度最快的5個型號都配備了Ryzen AI。

AMD收購的賽靈思(Xilinx)的FPGA開發成果是Ryzen AI的基礎。AMD將其背后的架構稱為XDNA。XDNA由20個分片(Tile)組成,能夠執行從8位整數到32位整數(INT32)和BF16等典型AI數據格式的計算。部分分片通過片上網絡和直接內存訪問單元連接計算節點。Ryzen AI最初處理4個并行AI數據流。得益于精細的時鐘調整和關閉功能,XDNA在不運行時幾乎不耗電。當XDNA全速運行時,可達每秒10萬億次(Tera Operations Per Second,TOPS)的運算速度。AMD的統一AI軟件棧(Unified AI Software Stack)框架專為AI應用而設計,可在Ryzen 7040系列處理器上運行,但開始時只能在有限的范圍內利用專用XDNA運行。

1.2.1.3 微控制器和芯粒集成

在很多只能承受低功耗的物聯網或可穿戴設備中,用得較多的是微控制器單元(Microcontroller Unit,MCU),它的性能和功耗要比x86處理器低得多。一些MCU的功率只有幾十毫瓦。相對簡單的MCU內核(如ARM的Cortex-M0)沒有浮點單元,甚至沒有像ARM Neon那樣的SIMD擴展,因此需要額外的單元來快速地處理AI算法。

目前,在有MCU的芯片中實現AI引擎,較簡單的辦法是直接從ARM、Cadence、Imagination Technologies或Synopsys等設計公司購買AI處理單元知識產權(Intellectual Property,IP)核作為功能模塊。像ARM Ethos-U65或PowerVR 3NX這樣的AI單元與同一芯片中的Cortex處理器核并行運行就是這種情形。另外,一些嵌入式圖形內核(如ARM Mali-G710)的著色器(又稱渲染器)內核可以作為AI計算單元使用。

所有芯片相關的公司都或多或少地從AI騰飛中受益。英特爾也不想在這一點上落后。英特爾的優勢在于擁有滿足中小型AI模型計算能力的處理器,并且也有相應的GPU產品。然而,截至本書成稿之時,英偉達在GPU市場上仍然占據主導地位,而AMD和英特爾的消息要少得多。

近年來,英特爾將業務重點放在為服務器CPU增加新的加速器單元(見圖1.4)上。但如果在原有的CPU單片芯片中增加太多的加速器,會占用芯片面積,從而影響CPU的性能。因此,新的趨勢是簡化CPU內核,并減少加速器數量。隨著芯粒技術的逐漸成熟,如果把AI加速器作為芯粒直接與CPU封裝在一塊芯片中,不僅可以提高性能,還可以降低功耗并縮小系統的體積。更重要的是,CPU具有高靈活性和與GPU相比的低成本優勢,非常適用于不斷更新的AI算法,可作為一種靈活的AI推理引擎使用。

圖1.4 帶有加速器單元的CPU芯片組成

有一些新創公司和研究機構也秉持這樣的想法,直接將一個AI加速器核與CPU核合并,組成一塊更適合AI計算的芯片;也有的在AI算法上下工夫,做出更適用于CPU的改進。

1.2.1.4 開發適合CPU運行的AI算法

雖然CPU的通用硬件架構本質上并不適用于AI運算,但通過改進AI算法和軟件,可使CPU勝任AI處理工作。而CPU的成本只有GPU的1/3,這就是優化算法利用CPU的好處。

美國萊斯大學(Rice University)的計算機科學家團隊研發的一種AI軟件可以在商用CPU處理器上運行,并且在訓練深度神經網絡時比基于GPU的平臺快15倍。他們將深度神經網絡(Deep Neural Network,DNN)訓練并轉化為一個可以用哈希表解決的搜索問題。他們的亞線性深度學習引擎(Sub-linear Deep Learning Engine,SLIDE)專為在商用CPU上運行而設計[1]。在2020年舉行的第三屆機器學習與系統年會(MLSys 2020)上,他們展示了這種引擎的使用方法。該引擎的運算速度可以勝過基于GPU的AI訓練速度。這說明可以通過現代CPU中的向量化和內存優化加速器來提高CPU的性能。該團隊成員Beidi Chen發表的博士論文介紹了這種學習引擎的核心算法:用隨機哈希算法來解決計算難題(見圖1.5),并作為大規模估計的自適應采樣器,為局部敏感哈希(Locality Sensitive Hashing,LSH)算法提供新的改進方法。在訓練期間,僅對每個訓練數據點中極少的采樣神經元執行前向傳播和反向傳播操作就足夠了。其中,前向傳播的計算過程為:首先從輸入層得到哈希碼H1,查詢隱藏層1的哈希表而找出活動神經元;然后從活動神經元得到激活值;接著以同樣的方法計算下一層,直到得到稀疏輸出。LSH算法屬于碰撞概率隨相似性增加而單調增加的算法。該算法為自適應采樣提供了一種更加自然的方法,因為它允許按權重對神經元進行采樣,而無須計算激活值。這種采樣方法使網絡變得稀疏,從而使GPU的并行性對它失去優勢,因此更適合在CPU上實現。這篇論文顯示,LSH算法采樣的功能大大減少了極大規模神經網絡訓練的計算量,并且在只有一塊CPU芯片的情況下優于TensorFlow在目前GPU上的優化實現。

基于哈希表的加速性能使CPU運行LSH算法的性能超過了GPU。該團隊沒有把注意力放在矩陣的乘積累加(Multiply Accumulation,MAC)運算上面,而是利用這些創新進一步推動了AI計算的加速。與當時性能最高的GPU或者專業ASIC芯片產品相比,運行SLIDE的CPU能夠以4~15倍的速度訓練AI模型。

圖1.5 用隨機哈希算法來解決計算難題

近年來,深度學習模型無論是在算法還是在架構上都有了很多改進,出現了很多新的優化方法,包括充分利用高度稀疏性的稀疏DNN,目前已經有不少以此為基礎的模型。然而,稀疏DNN在大規模并行處理器上的處理效率低下,因為它們對內存的訪問不規則,并且無法利用諸如緩存分片和向量化之類的優化方法。

此外,由于運算步驟之間的依賴性,循環神經網絡(Recurrent Neural Network,RNN)難以并行化。有些優化了的DNN的卷積核形狀和大小不同,也會導致不規則的內存訪問,使并行性在各個網絡層都不一致。

因此,GPU和很多AI加速器的高度并行計算特性在上述類型網絡中并不能充分發揮作用。由于CPU具有先進的內存管理技術,它們更適合并行性受限的此類應用。萊斯大學研究團隊的工作表明,對于稀疏數據集(如Amazon-670K和Delicious-200K)上的全連接神經網絡,用哈希表代替矩陣乘法運算可取得很好的處理效果。

要提高性能,選擇與CPU架構更加匹配的AI優化算法是關鍵。SLIDE僅是眾多改進方法中的一種,還有許多技術可用于進一步調整CPU上的深度學習應用。例如,硬件感知的修剪、向量化、緩存分片等,這些技術都屬于AI算法的優化。

近似計算也是近年來發展迅速的一種計算范式,已經有大量相關的研究成果。這些成果表明,如果使用近似計算,即便不使用AI加速器而僅使用CPU,在運算性能上也可以有數量級的提高。

AI芯片的研究和產業發展還剛剛起步,部署AI時究竟使用CPU,還是GPU、FPGA或者ASIC,目前不能一概而論。這需要針對不同的應用場合、根據不同的指標和要求來衡量。SLIDE項目的研究人員表示,他們并不想以該成果引發辯論,而是想強調并體現CPU在AI計算上的優勢。CPU的架構也在不斷改進,它在AI領域的作用還將持續下去。在未來,AI加速器也可能被集成到CPU芯片上,成為異構計算的一個范例。

主站蜘蛛池模板: 科尔| 海阳市| 濉溪县| 东平县| 旬阳县| 绥中县| 东乡县| 铜梁县| 合山市| 库伦旗| 鄂温| 库尔勒市| 堆龙德庆县| 开原市| 河间市| 永吉县| 香河县| 平乡县| 汉沽区| 二手房| 贵州省| 邹城市| 林周县| 陆丰市| 井陉县| 桐梓县| 麻江县| 海宁市| 区。| 滨州市| 佛教| 巴塘县| 湘阴县| 承德县| 邹城市| 石河子市| 庆云县| 中西区| 沈阳市| 乐东| 邵阳县|