<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子百科>主機配件>cpu>

詳細解讀GPU的起源及發展

2023年12月25日 10:07 LiveVideoStack 作者: 用戶評論(0

大模型AI席卷全球,推理創新的APP、場景落地越來越多。當訓練達到一定階段,推理必然會形成一個爆發。推理的產品要起來,必然要把推理的成本降到今天 1/ 10 甚至 1/100。此時該如何選好、用好 GPU ,進而影響推理成本?

最近, LiveVideoStack榮幸地邀請到PPIO的王聞宇老師接受采訪。本文將從芯片怪獸英偉達公司壟斷式增長和美國“卡脖子”2個熱點問題出發。圍繞過去、現在、未來三個時間線為大家梳理GPU的起源及其軟硬件技術的更迭;同時,深度剖析GPU主流產品的參數和技術發展現狀,并結合當前GPU的微架構設計,給出算力工程優化的幾個思考和有效解決方案。

文/王聞宇

整理/LiveVideoStack

作者簡介

PPIO派歐云的聯合創始人和CTO王聞宇,2004年就開始做音視頻,曾是PPTV 的聯合創始人并擔任首席架構師一職,主導了P2P、直播、點播、編碼等一系列產品。PPTV被出售后,轉投車聯網公司智能支撐領域。2018年重回音視頻領域創辦PPIO派歐云,目標在于把對技術以及資源的理解打造成服務,并服務于整個音視頻行業以及游戲領域與AI領域。

00

前言:算力與GPU

算力,即計算能力(Computing Power)。更具體來說,算力是通過對信息數據進行處理,實現目標結果輸出的計算能力。

最早的算力引擎。是人類的大腦,后來演變成草繩、石頭、算籌(一種用于計算的小棍子)、算盤。到了20世紀40年代,世界上第一臺數字式電子計算機ENIAC誕生,人類算力正式進入了數字電子時代。再后來,隨著半導體技術的出現和發展,我們又進入了芯片時代,芯片成為了算力的主要載體。進入21世紀后,算力再次迎來了巨變,云計算技術出現,算力云化之后,數據中心成為了算力的主要載體。人類的算力規模,開始新的飛躍。

我們通常將目前負責輸出算力的芯片,分為通用芯片和專用芯片。專用芯片,主要是指FPGA(可編程集成電路ASIC(專用集成電路)。像x86這樣的CPU處理器芯片,就是通用芯片。它們能完成的算力任務是多樣化的,靈活的,但是功耗更高。

游戲、數字貨幣挖礦、AI、科學計算等各方面都需要GPU,GPU成為了當下的關鍵問題。下面我就圍繞GPU以及對算力整個行業的思考展開分享。

2023年兩個事件的聯想:

事件一:英偉達芯片怪獸一家獨大!市值突破萬億美金

5月30日的時候,發生了一件重大的事情,5月30日美股交易時段,英偉達市值一天內暴漲超2000億,沖破1萬億美元大關,英偉達的市值遠大于Intel、AMD、高通,MTK的總和,甚至是其他公司的10倍;再看英偉達公司的PS、PE指標,可以看出綜合情況是非常優秀的。

那么,英偉達芯片怪獸的地位是如何形成的?我在文章的最后會分析。

93acfe32-a2ba-11ee-8b88-92fbcf53809c.png

事件二:美國卡脖子問題再次升級!

93bc2fce-a2ba-11ee-8b88-92fbcf53809c.png

上圖所示的卡型至少有一款是AI領域必備的卡型,但是令人遺憾的是,由于美國卡脖子問題再次升級,以上卡型全部被納入禁售名單。

01

過去篇

1.1

為什么需要GPU?

93cf15f8-a2ba-11ee-8b88-92fbcf53809c.png

CPU的定位是通用計算芯片,有強大的調度,管理,協調能力,應用范圍廣,靈活性最高,善于邏輯控制,串行的運算。

GPU的定位是并行計算芯片,主要是將其中非常復雜的數學和幾何計算抽出,變成一個超高密度、能夠并行計算的方式。最初專用于圖形處理,后漸漸用于高密度通用計算,包括AI計算。

1.2

GPU的起源

GPU 的發展源于80年代,IBM是GPU理念的創始者,但它并未堅持。所以真正意義上的第一款GPU是英偉達在1999年發布的Geforce 256,并正式提出一個響亮的名字“Graphics Processing Unit”,這就是GPU的來源。從此之后,GPU一直高速發展。

93df9126-a2ba-11ee-8b88-92fbcf53809c.png

圖:這是第一款真正意義的GPU的照片

1.3

GPU的世界就是“兩位華人之間的戰爭”

大家常說,GPU的世界就是“兩位華人之間的戰爭”。英偉達的創始人黃仁勛是美籍華人,黃仁勛的外甥侄女蘇姿豐是AMD的CEO。也就是說,英偉達與AMD兩大巨頭企業的CEO是親戚關系,掌握了全世界最強大的兩個GPU。如果再加上TSMC(臺積電)也是華人,可以說華人主宰了尖端半導體行業的半壁江山。

這GPU公司的競合歷史:

940f4970-a2ba-11ee-8b88-92fbcf53809c.png

上圖為GPU發展過程圖,可以看出3dfx早期發展迅猛,2000年以不到一億美金的估值被英偉達收購,ATI是AMD顯卡的前身,2006年被AMD收購,所以后期基本為英偉達與AMD雙雄爭霸。

注意,這個圖中似乎少了誰,就是著名的Intel。其實Intel在1998年發布了絕版獨立顯卡i740,在此之后的23年,就沒有再發布過獨立GPU,聚焦在做集成顯卡,退出了GPU市場,現在看來,這不是明智的戰略選擇。直到2022年,Intel終于看到AI發展的趨勢,才發布了新的獨立顯卡系列,這就是ARC系列。

GPU早期是為了用于圖形渲染

9430ed00-a2ba-11ee-8b88-92fbcf53809c.png

GPU早期一般為了3D渲染而設計。從計算機圖形學的角度,GPU將三維事件的點陣通過矩陣變化投影到二維平面上,這個過程叫做光柵化,最終在顯示器上結果。GPU的能力基本上是頂點處理、光柵化、像素處理等,這個過程包含大量的矩陣計算,剛好利用了GPU的并行性。

后來,GPU在設計上走向了通用計算。

2003年,GPGPU(General Purpose computing on GPU)的概念被首次提出來。GPU不再以圖形的3D加速為唯一目的,而是能夠用于任意并行的通用計算,例如科學計算、數據分析、基因、云游戲、AIGC等。

945a1b4e-a2ba-11ee-8b88-92fbcf53809c.png

直到2009年英偉達首次推出Tesla系列后,GPGPU時代才真正來臨。

目前國內有許多做GPU的公司,大部分都投入在GPGPU領域,這些公司都放棄了圖形渲染,直接以高密度的并行計算作為發展方向。

以英偉達的產品來舉例,有如下產品系列

wKgaomWI5EKAfoo4AADoiEjLNgg503.png

第一個用于游戲領域,包括GeForce系列、RTX系列,我們常說的4090就是屬于游戲領域的系列;常說的x0y0編號就是GeForce系列。

第二個用于數據中心領域,包括Tesla系列,常提到A100、H100就屬于這一系列。英偉達有要求,不允許游戲領域中的GeForce系列進入數據中心。因此英偉達游戲系列的產品在同樣芯片、同樣算力的情況下,GeForce系列的價格要比Tesla系列低3~5倍。正因為價格相差太大,現在國內做大模型推理、StableDiffussion圖形生成等都以4090作為首選的原因;

第三個是用于高端圖形領域,包括Quadro系列;這款在工業領域用得多。

第四個是用于汽車領域。

GPU支撐與架構的不斷優化

94875492-a2ba-11ee-8b88-92fbcf53809c.png

這是是英偉達的硬件架構變遷圖。隨著2007年英偉達推出 CUDA 1.0版本,使其旗下所有 GPU 芯片都適應 CUDA 架構:

94add798-a2ba-11ee-8b88-92fbcf53809c.png

CUDA生態和價格也是英偉達的最核心競爭力,也是英偉達萬億市值的關鍵因素之一。英偉達投入了一萬以上的工程師在發展這個體系,基本上把人工智能里的大部分場景都做了深度優化。英偉達長期投入CUDA生態建設,為開發者服務,建立好了一系列的開源生態。

94c047e8-a2ba-11ee-8b88-92fbcf53809c.png

02

現在篇

2.1

先進的微架構設計

目前的GPU基本使用微架構設計,以最早的Fermi架構開始(2010年),那時候一個GPU是由4個GPC(圖形處理簇 Graphics Processing Clusters)、16個SM(流多處理器,Stream Multiprocessors )以及512個CUDA Core(向量運行單元)組成的,這是GPU的特性。

94eb7e40-a2ba-11ee-8b88-92fbcf53809c.png

其實圖形渲染也是微架構的(以 2018年 Turing 微架構為例)

95017b78-a2ba-11ee-8b88-92fbcf53809c.png

RT Core(RT核心)非常關鍵,實現了現代GPU中的光線最終效果。渲染效果中最重要的是光追,看這張光追低級效果和光追高級效果的對比圖,差距非常明顯,折射、反射、光影都呈現出很大的差距。

其實現在的手機GPU基本上都帶有光追的效果和能力,但是手機的光追效果對比英偉達GeForce 40系列GPU的光追效果差距很大。一份最新的評測將英偉達 4070與高通GEN2進行對比,各個指標綜合得出差距為25倍,即使用最好的手機也不可能體驗到英偉達 4070渲染出來的效果。這也是云游戲成立的根本邏輯,讓玩家在手機上也能體驗到強大的GPU渲染所帶來的的畫質效果。

我們看看現在最新一代GPU的情況:

最新的 Ada Lovelace 架構(如Geforce RTX 4090)

953bbd92-a2ba-11ee-8b88-92fbcf53809c.png

看看最新的Ada架構,也就是4090這一代,這是完整的管線圖,密度相較于之前大大提高,仍然是微架構體系。

我們放大看看GPC:

95541c52-a2ba-11ee-8b88-92fbcf53809c.png

我們再放大看看SM,是不是和前面Turing架構的SM很像:

95664094-a2ba-11ee-8b88-92fbcf53809c.png

另外,和Ada架構GeForce系列平行的是Hopper架構的Tesla系列,也就是傳說中的H100/H800,這兩個架構的管線大致是相同的,特別說明的是Tensor Core中的內容是完全一樣的,所以在Ada架構的4090上也可以很好地發揮Hopper架構AI的特性。但Ada架構與Hopper架構最關鍵的區別,Ada不知道多卡高速互聯,也就是NVLink/NVSwitch這套技術。

2.2

AI 計算中的浮點數

9577fae6-a2ba-11ee-8b88-92fbcf53809c.png

英偉達能夠成為AI領域中的必選項的其中一個原因涉及到浮點數,浮點數在存儲的時候由三個部分組成:符號位、指數位和尾數位。

958ddf0a-a2ba-11ee-8b88-92fbcf53809c.png

浮點數的值可這樣計算:

959cd3fc-a2ba-11ee-8b88-92fbcf53809c.png

以 32 位的 float 為例,0.6 可以表示成?

95a6ce5c-a2ba-11ee-8b88-92fbcf53809c.png

如下圖,其中

●符號位是 0

●指數位是 01111110(126),表示 -1。(-1 偏移 127,即 126 - 127 = -1)

●尾數位是 1.00110011001100110011001,表示 1.1999999284744263。

95ade8ea-a2ba-11ee-8b88-92fbcf53809c.png

注意:尾數部分在實際存儲時是將小數點前的 1 省略的;指數部分需要做一次偏移,-1加上 127 的偏移變成 126 再進行存儲;最前面為符號位置,指的是這個數的正負,0 表示正數,1 表示負數。每個浮點數都是由符號位、指數位和尾數位所構成。

95bffda0-a2ba-11ee-8b88-92fbcf53809c.png

按照計算場景所要求數據精度和表示范圍,可以選擇不同的浮點數類型。常見的浮點數類型有 64 位的雙精度 double(FP64)、32 位的單精度 float(FP32)、16 位的半精度 half、以及四分之一精度的 FP8 等。其中,半精度在指數位和尾數位的分配上又可以細分成:bf16 和 FP16。同樣 FP8 也可以細分成 E5M2,E4M3。

那么在這么多浮點類型中該如何選擇呢?

●一般來說更少位數的浮點數運算所需要的計算成本也更低,因此選用更小位數的浮點數有利于提升性能降低成本。

●但更少的位數也意味著數據的表示范圍和精度的能力會降低,同時也要考慮表示范圍和精度之間的平衡,否則會導致數據信息的損失,在推理場景下具體表現為推理的效果會變差。

●另外對于 FP8 這樣的新類型,也只有最新的 GPU 硬件上才會支持,而新的硬件也往往比較昂貴。

因此,必須結合實際場景的性能要求、數據值分布以及硬件性價比等多個因素綜合考慮才可以選擇最佳的浮點類型。不同類型的浮點數在做不同硬件上處理時所帶來的性能和成本效果是完全不同的。例如,科學計算往往使用 FP64 與 FP32,對應 C 語言中的 double 與 float。但是在 AI 領域中,特別是推理領域,精度不是最敏感的因素,同時數據的分布也表現為集中在 0 值附近,因此在 AI 領域,在不損失較大效果的前提下采用更少位數的浮點數類型是一個非常不錯的優化方案。它可以使得計算量大大減少,提升性能,降低硬件成本。

2.3

CUDA Core 和 Tensor Core

關于 CUDA Core:

NVIDIA 率先在 GPU 中引入了通用計算能力,使得開發者能利用 CUDA 編程語言來驅動。這時候 GPU 的核都是CUDA Core。由于一個 GPU 里面有大量的 CUDA Core,使得并行度高的程序獲得了極大的并行加速。但是,CUDA Core 在一個時鐘周期只能完成一個操作,類似上面的矩陣乘法操作依然需要耗費大量的時間。

95d2e3f2-a2ba-11ee-8b88-92fbcf53809c.png

關于 Tensor Core:

GPU 最善于的做的“加乘運算”(GPU中有最常用的矩陣計算,就是先乘后加,也就是FMA)FMA:Z=W*X+b

NVIDIA 為了進一步加速“加乘運算”,在 2017 年推出了 Volta 架構的 GPU,從這個架構開始 Tensor Core被引入。它可以在一個時鐘周期完成兩個 4×4x4 半精度浮點矩陣的乘法(64 GEMM per clock)。

95f55752-a2ba-11ee-8b88-92fbcf53809c.png

這是 Tensor Core 性能強勁的示意小視頻,他將“加乘運算”并行化了。例如 Pascal 這一架構沒有 Tensor Core 的能力,所以輸出很慢;但在 Volta 架構中,引入了Tensor Core之后,能夠以 12 倍的效率完成加乘的計算。

960dc788-a2ba-11ee-8b88-92fbcf53809c.png

2.4

英偉達最近兩代架構的特性

Ampere 架構

上一代是 Ampere 架構(2020年),采用的是 Tenser Core 3.0 。

其中著名 A100、A800、V100,以及游戲卡 Geforce RTX 3090 就是這個 Ampere 架構。

961a20be-a2ba-11ee-8b88-92fbcf53809c.png

這代架構對比之前的 Turing 架構(2018年),其 Tensor Core 主要支持了三個新的數據類型,FP64,TF32,和BF16。其中 TF32 沒有 32 位,只是閹割了精度尾數,只有 18 位,AI 行業中 TF32 用得并不廣泛。但 BF16 就非常關鍵了,BF16 就是將 FP16 的指數位和精度位做了偏移,正是因為這個偏移使得 BF16 在 AI 訓練的展示中范圍大大擴大,所以 BF16 也是現在很多 AI 模型所訓練的主流選擇。

962d3dca-a2ba-11ee-8b88-92fbcf53809c.png

除此之外,還支持了結構化稀疏,稀疏矩陣是在矩陣中大量都為 0(或者接近于0),能夠通過硬件快速計算出來的矩陣。Nvida 的 GPU 專門為稀疏矩陣做了優化,使得相同規模的稀疏矩陣的計算速度是稠密矩陣的 2 倍。

964d42f0-a2ba-11ee-8b88-92fbcf53809c.png

千萬不要小看這兩個特性,我認為這兩個特性的支持大大提高了 OpenAI 的發展速度,使得 OpenAI 的 GPT3.5 能夠提前一年出現。

Ada 架構和 Hopper 架構

這一代架構就是 Ada 架構和 Hopper 架構(2022年),采用的是 Tenser Core 4.0。

其中著名 H100, H800,就是這一代 Hopper 架構的典型代表,另外,著名的游戲卡 Geforce RTX 4090 就是這一代Ada 架構,他們都是用同樣的 Tenser Core 4.0。

這代架構,最突破的變化是,Tenser Core 開始支持 FP8,就是將 FP16 又變小為 FP8,這是在AI領域中都要搶購4090 的原因。相較于 int8,FP8 能夠相對容易地實現全鏈路量化,將其性能提高一倍,成本降低一倍,這是最為重要的一點。

965f620a-a2ba-11ee-8b88-92fbcf53809c.png

為了讓開發者更方便地使用 fp8 來加速基于 Transformer 的模型,Nvidia 發布了 Transformer Engine (TE)。

Transformer Engine (TE) 是一個用于在 NVIDIA GPU 上加速 Transformer 模型的庫,包括在 Hopper GPU 上使用 8 位浮點(FP8)精度,在訓練和推斷中提供更好的性能和更低的內存利用率。TE 為主流的 Transformer 架構提供了一系列高度優化的構建塊,以及一個類似于自動混合精度的 API,可以與特定框架的代碼無縫集成使用。TE 還包括一個與框架無關的 C++ API,可以與其他深度學習庫集成,以實現 Transformer 的 FP8 支持。

這樣一來,對于大預言模型的開發者就無需手動寫底層基于 tensor core 的算子來使用 fp8 這個新特性,而是可以直接調用 TE 的 API 來組合出 LLM 的推理引擎,極大地簡化了開發者的工作量。

9670340e-a2ba-11ee-8b88-92fbcf53809c.png

2.5

關于FP8 量化帶來了很好的效果

首先,說說什么是 FP8,以及 E5M2,E4M3?

FP8 是 FP16 的衍生產物,跟 FP16 類似,只是 FP8 總共使用 8 個比特位來表示一個浮點數。它包含兩種編碼格式E4M3 與 E5M2。

●對于 E4M3 而言,其包含 4 個指數位、3 個尾數位、以及 1 個符號位。

●E5M2 同理,其包含 5 個指數位、2 個尾數位、以及 1 個符號位。

可見,E4M3 與 E5M2 只是在指數位和尾數位上所分配的尾數有所差別而已。很顯然 E4M3 的表示范圍要比 E5M2 大,但 E4M3 的精度上不如 E5M2。

9684a402-a2ba-11ee-8b88-92fbcf53809c.png

然后,我們看一下用 FP8 來代替 FP16/BF16 的效果怎么樣?

可以先回顧一下 FP8 的特性點:

●FP8 的指數位和尾數位相較于 FP16/BF16 都會少一些,精度和表示范圍的能力上相較于 FP16/BF16 會有所降低;

●但 FP8 的總位數只有 FP16/BF16 的一半,因此計算速度會更快,所需要的顯存資源也更少。

由此可以得出這樣一個結論:在對于數值表示范圍不大且精度要求不高的場景下,用 FP8 代替 FP16/BF16 是完全可行的。

接下來我們再看一組實際的實驗數據:

下面的圖來自于一篇論文,作者將在 AI 訓練場景下將 FP8 與 FP16/BF16 進行了對比。其中,

●橫坐標是訓練的進度;

●縱坐標是損失函數的值,這個值約低越好;

●淺色實線表示的是 FP16/BF16 的訓練效果,而深色的虛線表示的是 FP8 的訓練效果;

●作者用不同的顏色表示126M、1.3B、5B、22B、175B 不同規格的模型。

我們可以看到同一規模的模型下,深色虛線與淺色實線的兩條曲線幾乎完全重合,這意味著用 FP8 量化的效果和用 FP16/BF16 基本相同。

969f601c-a2ba-11ee-8b88-92fbcf53809c.png

因此,假如把 FP8 來代替 FP16/BF16,訓練和推理的性能至少可以提高一倍,而且效果上沒有差異。

最后,我們再來看一下 FP8 的量化與 INT8 量化相比有什么優勢?

這是 FP8 和 INT8 的值分布情況:

96bb867a-a2ba-11ee-8b88-92fbcf53809c.png

不難看出,

●FP8 的值分布呈現非均勻分布,它在絕對值較小的區域比較密集,而在絕對值較大的區域表現為稀疏;

●而 INT8 的值是完全均勻的;

●另外,如果用 INT8 來表示 FP8 的話,會在絕對值較小的區域產生較大損失,而在絕對值較大的區域表現良好。

綜上所述,對于 0 值附近分布比較稠密,距離 0 值較遠的數據比較稀疏的這種數據分布來說,FP8 是最好的。而 AI 領域的模型權重恰恰大概率符合這一特性,因此,用 FP8 來進行量化會比 INT8 的損失要更少。

下圖是一個 FP8 和 INT8 量化后效果的具體對比,可以看出原數據經過 INT8 量化后許多 -0.1、-0.001 的數據都被量化為 0 了,但用 FP8 量化時,無論是 E5M2、E4M3,這些較少數值的數據基本都被很好地保留了。

96d2e3b0-a2ba-11ee-8b88-92fbcf53809c.png

上面我們只是理論上說明了 FP8 對于 0 值附近的數值具有很好的精度保留能力。但實際推理過程中激活值真的是在 0 值附近分布得更加稠密嗎?

有學者針對這一問題專門做了驗證,如下圖,他把模型推理過程中的激活值都提取了出來,分別在第2層、第12層、第24層做了采樣。我們可以看到無論是在 attention 階段還是在 FFN 階段,各個模型層的激活值都有顯著的近似正態分布的性質(當然這里面也會有一些極少量的離群值,這些值可以在具體的量化方案中做特殊的處理)。

96e414e6-a2ba-11ee-8b88-92fbcf53809c.png

激活值在 0 分布較為稠密的特性,正符合了 FP8 的表現能力,這就是 FP8 逐漸成為大家做 AI 的主流的原因,也是 Ada/Hoper 架構受歡迎的主要原因之一。

在 Ampere 架構時代,很多人用 INT8 量化,但在 Ada/Hopper 架構時代,INT8 量化的效果遠沒有 FP8 好。

因此,在 Ada/Hopper 架構上應該優先使用 FP8 量化而非 INT8 量化,因為 FP8 具有 INT8 級別的性能的同時,又減少了量化帶來的數據精度損失。

2.6

說說稀疏化加速(HyperAttention)

再談談稀疏化的加速。稀疏化是什么?圖上示意的是一個矩陣,矩陣中有很多0,它會通過行和列之間的交換,最終把數據密度高的地方,拉到這條反斜線。后面無論是加還是乘,都能很快計算出來。

970528c0-a2ba-11ee-8b88-92fbcf53809c.png

要把左側中的第一個圖變為第三個圖,首先要變為第二個圖,凡是黑框以內的數據保留,剩余的全部歸零,也就是把一些比較暗的線都剪掉了。在處理大矩陣時效率很低,在處理第二個圖的矩陣時效率則非常高。這就是一種常見的方案,叫剪枝。

9712ec58-a2ba-11ee-8b88-92fbcf53809c.png

972dfdae-a2ba-11ee-8b88-92fbcf53809c.png

973e2094-a2ba-11ee-8b88-92fbcf53809c.png

剪枝能夠很好用于長序列長度模型,當序列的上下文特別大時,剪枝的效果會非常明顯。

圖中的forward屬于推理,forward+backward屬于訓練??梢院唵卫斫?,隨著上下文越長,剪枝效果越好。如果是因果論的模型(例如laMa模型),在很長的參數下會有20倍的差異,但是在非因果論的模型(例如GM模型),優勢會少一些。大家可能見到過一個模型能支持很長的上下文,能夠把《哈利波特》一本書讀下去,其實并不難,只要用剪枝就能做出一定的效果。

2.7

說說投機采樣

投機采樣(Speculative Decoding)是 Google 和 DeepMind 在 2022 年同時發現的大模型推理加速方法。它可以在不損失生成效果前提下,獲得 3x 以上的加速比。GPT-4 泄密報告也提到 OpenAI 線上模型推理使用了它。雖然OpenAI 的具體方法保持保密,但谷歌團隊已經將其研究成果公之于眾,并入選 ICML 2023 Oral。這項技術很有可能可能成為未來大型模型推理的標配。

投機采樣是一種創造性的工程化加速方法,它與算子融合、模型量化等方法完全是不同維度的。

其核心是,用一個比原模型小很多的草稿模型(draft model),來加速原模型的推理。草稿模型一般都會比原模型小很多倍,因此推理速度也是比原模型更快,消耗資源更少,但它有一個缺點,就是推理生產的 token 可能是不對的。

那怎么解決這個問題呢?很簡單,解決方案是先讓小的草稿模型推理若干的 token,然后再將這些 token 讓大模型檢驗其是否合理。如果合理則繼續讓小模型接著推理,否則就大模型自行推理。

由于大模型檢驗小模型的推理結果是可以并行地檢查多個 token 的,因此這個過程要比大模型自己一個一個的推 token 要快很多。這也就意味著,只要小模型在多數情況下的推理是正確的,那么整個的推理速度就會很快。

用一個比喻來形容的話,有點像一個教授帶著研究生做課題,課題中的一些研究任務直接就交給研究生完成了,但教授會對這些任務的完成情況進行檢驗,如果有錯誤教授會再做出修正,這樣老師和學生相互配合,這個科研的效率就提升了很多。

目前一些推理框架已經開始支持 投機采樣了,如 llama.cpp。也有一些開源模型直接同時提供了原模型和草稿模型,如:Chinese-LLaMA-Alpaca-2。

llama.cpp 的作者 gg 實測,通過投機采樣可以提升至原來 2 倍的推理速度。

975d48ca-a2ba-11ee-8b88-92fbcf53809c.png

2.8

關于多卡互聯的評測數據

多卡協同是英偉達顯卡系列的關鍵:

wKgZomWI5GqAYovgAAPaxtoWU_A182.png

多卡協同也是當今發展的關鍵。圖上列出了NV測試庫里的第二代、第三代、第四代的動畫協同技術,可以發現,不同的架構一直在升級,從 Volta 到 Ampere 到 Hopper,總帶寬數和 GPU 最大鏈路數都有所增加。

NVLink 主要用于兩卡甚至四卡間的交替互聯,但是卡多后則無法使用 NVLink,要用 NVSwitch。

第二個圖就是 NVSwtich 的數據,因為它在訓練時數據非常大,一個卡的數據存不下來,就必須用卡間通信,卡間帶寬是多卡互聯技術在大模型訓練時會遇到的非常大的瓶頸。

為什么 4090 是性價比最好的推理顯卡?

●相較于 H800 商用卡,消費級卡 4090 具有極高的性價比優勢;

●相較于 不支持 fp8 的 3090/A800 來說,4090 又支持 fp8 這一新特性;

●在 40 系的同代卡中,4090 的顯存又是最大的,性能最高的;

●8 卡 4090 的整機基本上可以滿足未量化 70B 級別的大模型推理。

因此綜合來說,對于 fp8 有強需求的推理場景,4090 是各種因素平衡下最佳的選擇。

03

未來篇:趨勢思考

3.1

說說 H100 比 A100 強在哪兒?

979d2dc8-a2ba-11ee-8b88-92fbcf53809c.png

H100比A100強不是因為密度提升,其實就密度本省只有1.2倍的提升;更多是因為微架構的設計。新的Tensor Core提升了2倍,新的Transformer引擎提升了2倍,頻率提升1.3倍,總計提升了6倍(在大模型下表現)。因此英偉達的性能不是純靠密度提升的,是通過架構優化進行的提升。

未來的H200和B100,性能還會有指數性的上升。

97b73006-a2ba-11ee-8b88-92fbcf53809c.png

這是英偉達未來大致的新GPU路線圖:

97d26f74-a2ba-11ee-8b88-92fbcf53809c.png

3.2

CPU 和 GPU的二合一可能也是新的方向

未來還有一個可能的趨勢是CPU和GPU二合一。例如AMD的MI300,基本是直接把GPU和CPU合在一起。也有人選擇,蘋果的M2Ultra,因為它擁有很大內存,顯存帶寬也差不多。

AMD的 Instinct MI300系列。如MI300A,24盒Zen4架構CPU,CDNA3架構GPU,128GB HBM3內存,5.2T顯存帶寬。

還有蘋果的Apple M2 Ultra系列。

3.3

還有一種 GPU 的變種 ==> IPU

2022年6月,MLPerf(全球最權威的AI計算競賽) Graphcore 的 IPU ( Intelligence Processing Unit)打敗了當時的王者NVIDA 的 A100,除此之前,還有其他說法,如Google 提出的TPU ( Tensor Processing Unit),還有NPU (Nerual Processing Unit),可以理解他們是類似的,在某些特定的 AI 和 ML 任務中有出色的表現。

那么,IPU未來會取代GPU的位置嗎?

98645b78-a2ba-11ee-8b88-92fbcf53809c.png

IPU雖然近幾年在高速發展,但在我看來,不可能取代GUP的位置,因為它們擅長的不一樣。CPU擅長的是控制和復雜運算,GPU擅長的是各種高密度的通用的計算,IPU更擅長處理某個特定的AI任務和推理,因此這三者未來應該是有效結合的關系??赡芪磥鞢PUIPU的使用量是11。

3.4

?“卡脖子”問題

2022年8月31日:美國政府通知 英偉達 和 AMD,分別限制中國出口 A100、H100、MI250AI 芯片。

之后英偉達針對2022年的禁令,推出了降低參數配置的閹割卡,也就著名的A800,H800,主要降低了卡間通行速率,和浮點算力 (FP64,FP32)。

98754136-a2ba-11ee-8b88-92fbcf53809c.png

卡間通訊對大模型訓練來說,非常關鍵,這樣大大限制了訓練的效率。

2023年10月17日,是美國商務部的新一輪限制,這次除了 A100、 H100,還限制了 A800、H800、L40s,甚至游戲卡 RTX4090 也不例外。

但和上次一樣,英偉達很快推出了“特供卡” ,HGX、H20、 L20、L 2 (這些卡均不能卡間通訊),性能大受影響不到之前的 H100 的20%。

988a251a-a2ba-11ee-8b88-92fbcf53809c.png

那么我們中國公司應該怎么應對“卡脖子”呢,大概有幾個路徑吧

●第一:買不到卡,慢慢訓練,時間變長

●第二:走完全不同的技術路線,發展“小模型”發展量化,用低端卡(甚至比GeForce RTX4090還要低的)來訓練

●第三:還有就是在國外用公開數據集訓練,在國內用私有數據集Fine-Tuning。

還有就是用舉國之力解決“卡脖子”問題。其實芯片設計能力其實不是最關鍵的瓶頸,FAB廠和光刻機才是最關鍵的問題。

大家千萬不要認為瓶頸只有光刻機,其實FAB廠也是瓶頸。FAB廠流程很多,包括硅晶圓的制備、光刻、蝕刻、沉積、摻雜、金屬互聯、鈍化、測試和封裝等。

要做一個先進的FAB廠其實非常難,要建設一個先進的FAB廠,需要投入至少150億美金。

TSMC(臺積電)之所以能占據很大的市場比例,關鍵是他們7nm以下的良品率做得非常高,背后很大的原因是TSMC養了上百位頂級的化學家、材料學家和生物學家來研發和解決問題。

這是FAB廠的目前能做到的能力表:

98b2d91a-a2ba-11ee-8b88-92fbcf53809c.png

有消息稱,2024年TSMC的3nm/4nm的芯片產能,基本被英偉達,蘋果和高通包完了,他們3大巨頭的芯片產能,也要看TSMC是怎么分量的。

除了FAB廠之外,最最關鍵的瓶頸就是光刻機了,可以看見,ASML占據了先進光刻機的絕大部分市場。特別是EUV技術(極紫外光刻技術),目前只有ASML能做到,只有這個技術,才能光刻出10nm以下制程的芯片。

98c9f582-a2ba-11ee-8b88-92fbcf53809c.png

不用光刻技術的對照表:

98da7240-a2ba-11ee-8b88-92fbcf53809c.png

那么,中國的國產光刻機做得最好的是上海微電子,他們目前最先進的技術是ArF(氟化氬技術),能做出最高精度也只有90nm(相當于ASML在10年前的技術),因此光刻之路漫漫雖遠兮。

98f51208-a2ba-11ee-8b88-92fbcf53809c.png

也有人說中國沒有,沒不能想辦法從國外“偷”一臺EUV的ASML技術不就行了。我看這太天真了,這種關鍵技術就別想了。

ASML的EUV我了解需要至少5架波音747裝滿才能把零件裝完。除此之外,ASML的光刻機是需要云端激活的,每次安裝和變動的時候,

ASML會派人來調試,標記好地理位置,關鍵核心部件和系統都是通過互聯網遠程激活的。如果后續ASML發現GPS位置變了,關鍵核心部件和系統會直接遠程云端鎖定,用不了。

所以我們要解決這個問題,只有老老實實自力更新,自己攻克EUV光刻技術。

04

關于PPIO派歐云

PPIO派歐云的定位主要是做分布式云,怎么理解PPIO的分布式云呢?

首先從骨干網角度看,圖中標記了“算力”的就是PPIO分布式算力的部署位置,PPIO把算力部署在一些骨干網的大型節點、地市級的IDC甚至小IDC。

99216c04-a2ba-11ee-8b88-92fbcf53809c.png

其次從城域網角度看,這是運營商北向-南向的圖,PPIO也把算力部署在了匯聚層的DC。左邊的圖是固網,右邊是移動網,在移動網中算力部署在MEC。

993d9d70-a2ba-11ee-8b88-92fbcf53809c.png

PPIO派歐云的產品架構如圖,通過自建和招募的方式,把很多資源集成起來,建立好自己的軟件服務,在此之上建立IaaS和PaaS的服務。PPIO派歐云主要覆蓋的領域是音視頻(CDN/泛CDN)、實時云渲染(包括云游戲)、AI推理,AI小模型的訓練場景。

995bda92-a2ba-11ee-8b88-92fbcf53809c.png

這是 PPIO 的 AI 算力 IaaS 產品如下:

我們開發了具有核心云功能的 AI 算力平臺,對外提供 GPU 裸金屬,GPU 服務器,GPU容器三種形態的算力資源,以滿足不同的 AI 算力場景。

此外,我們也為客戶提供負載均衡、應用防火墻和DDoS防火等線上業務上必須的核心功能。為了方便客戶使用算力資源,我們不僅開發了基于界面的控制臺,也提供了開放 API 供客戶進行二次開發和系統集成。通過這個 API 客戶可以很方便地控制GPU 裸金屬,GPU 服務器,GPU容器三種資源。

另外,我們也提供了無盤系統,跨區服務等特色服務,也可以協助客戶過等級保護。

996dae8e-a2ba-11ee-8b88-92fbcf53809c.png

PPIO派歐云,除了提供算力IaaS產品,還能提供 MLOps(AI Infra)推理解決方案,幫助大模型公司實現算子優化、算子融合、量化,剪枝,蒸餾,投機采樣等技術解決方案,從而做到推理加速。

在模型層,PPIO 具有豐富的模型壓縮經驗,可以幫助客戶對模型進行量化、剪枝和蒸餾;

同時經過壓縮過的模型,也需要推理引擎進行適配,PPIO 具備對市場上主流推理引擎的適配能力,如 TGI, vLLM, llama.cpp,openppl-llm, trt-llm 等。

為進一步提高推理的性能,PPIO 在算子融合,算子優化方面也有豐富的沉淀,可以為客戶的模型做特別的適配,以滿足主流推理引擎不支持某些算子或算子性能過低的情況。

998b30c6-a2ba-11ee-8b88-92fbcf53809c.png

最后

根據 Verified Market Research 的預測,2020年 GPU 全球市場規模為254億美金,預計到2028年將達到2465億美金,行業保持高速增長,CAGR 為32.9%,2023年 GPU 全球市場規模預計為595億美元。

999b4858-a2ba-11ee-8b88-92fbcf53809c.png

資料來源:Verified Market Research ,中信建投)

期待,算力最終帶來新的工業革命,改變全世界人類的生活方式。

審核編輯:黃飛

?

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

( 發表人:黃飛燕 )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
      <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
      <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
      <acronym id="s8ci2"></acronym>
      <acronym id="s8ci2"><center id="s8ci2"></center></acronym>