GPU如何主宰人工智能和計(jì)算
三十年前,CPU 和其他專用處理器處理幾乎所有計(jì)算任務(wù)。那個(gè)時(shí)代的顯卡可以加速 Windows 和應(yīng)用程序中 2D 形狀的繪制,但沒有其他用途。
本文引用地址:http://www.biyoush.com/article/202404/457161.htm快進(jìn)到今天,GPU 已經(jīng)成為行業(yè)中最主要的芯片之一。
如今,GPU 不再僅僅是用于圖形處理的設(shè)備——實(shí)際上機(jī)器學(xué)習(xí)和高性能計(jì)算已經(jīng)嚴(yán)重依賴于這個(gè)看似微不足道的 GPU 的處理能力。讓我們一起探討這一芯片是如何從一個(gè)樸素的像素處理器演變成具有強(qiáng)大浮點(diǎn)計(jì)算能力的核心設(shè)備的。
起初 CPU 主宰一切
讓我們回到 20 世紀(jì) 90 年代末。高性能計(jì)算領(lǐng)域,涵蓋了超級(jí)計(jì)算機(jī)上的科學(xué)研究、標(biāo)準(zhǔn)服務(wù)器上的數(shù)據(jù)處理以及工作站上的工程和設(shè)計(jì)任務(wù),完全依賴于兩種類型的 CPU:1)專為某一特定目的而設(shè)計(jì)的專用處理器;2)來自 AMD、IBM 或英特爾的現(xiàn)成芯片。
ASCI 紅色超級(jí)計(jì)算機(jī)是 1997 年最強(qiáng)大的超級(jí)計(jì)算機(jī)之一,由 9,632 顆英特爾奔騰 II Overdrive 處理器組成(如下圖所示)。每個(gè)處理器單元運(yùn)行在 333 MHz 的頻率下,系統(tǒng)的理論峰值計(jì)算性能達(dá)到了超過 3.2 TFLOPS(每秒萬億次浮點(diǎn)運(yùn)算)。
來源:維基百科
在本文中,我們經(jīng)常會(huì)提及 TFLOPS,因此有必要花一些時(shí)間來解釋一下它的含義。在計(jì)算機(jī)科學(xué)中,浮點(diǎn)數(shù)(floating points,簡(jiǎn)稱浮點(diǎn))是表示非整數(shù)值的數(shù)據(jù)類型,例如 6.2815 或 0.0044。整數(shù)值常用于進(jìn)行控制計(jì)算機(jī)及其上運(yùn)行的任何軟件所需的計(jì)算。
浮點(diǎn)數(shù)對(duì)于精度至關(guān)重要的情況至關(guān)重要,尤其是與科學(xué)或工程相關(guān)的任何事物。即使是一個(gè)簡(jiǎn)單的計(jì)算,比如求圓的周長(zhǎng),也至少涉及到一個(gè)浮點(diǎn)數(shù)值。
多年來,CPU 一直擁有用于在整數(shù)和浮點(diǎn)數(shù)上執(zhí)行邏輯運(yùn)算的單獨(dú)電路。在前文提到的奔騰 II 過載版中,它可以在每個(gè)時(shí)鐘周期內(nèi)執(zhí)行一個(gè)基本的浮點(diǎn)操作(乘法或加法)。理論上,這就是為什么 ASCI Red 的浮點(diǎn)峰值性能為 9,632 個(gè) CPU x 3.33 億個(gè)時(shí)鐘周期 x 1 操作/周期 = 3,207,456 百萬 FLOPS。
這些數(shù)據(jù)是基于理想條件(例如,使用最簡(jiǎn)單的指令處理適合緩存的數(shù)據(jù)),在現(xiàn)實(shí)中很難實(shí)現(xiàn)。然而,它們?yōu)樵u(píng)估系統(tǒng)潛在性能提供了一個(gè)很好的參考。
其他超級(jí)計(jì)算機(jī)也擁有類似數(shù)量的標(biāo)準(zhǔn)處理器——位于勞倫斯利弗莫爾國(guó)家實(shí)驗(yàn)室的藍(lán)色太平洋使用了 5808 個(gè) IBM 的 PowerPC 604e 芯片,洛斯阿拉莫斯國(guó)家實(shí)驗(yàn)室的藍(lán)色山脈(見上圖)容納了 6144 個(gè) MIPS Technologies R1000 芯片。
要達(dá)到太浮點(diǎn)運(yùn)算級(jí)別,需要數(shù)千個(gè) CPU,以及大量的 RAM 和硬盤存儲(chǔ)作為支持。因?yàn)檫@些設(shè)備的數(shù)學(xué)需求如此之高,直到現(xiàn)在這種情況仍然存在。
當(dāng)我們?cè)趯W(xué)校的物理、化學(xué)和其他學(xué)科中第一次接觸方程式時(shí),一切都是一維的。換句話說,我們對(duì)距離、速度、質(zhì)量、時(shí)間等使用單一的數(shù)字。然而,為了準(zhǔn)確地建模和模擬現(xiàn)象,需要更多的維度,數(shù)學(xué)進(jìn)入了向量、矩陣和張量的領(lǐng)域。
這些在數(shù)學(xué)中被視為單一實(shí)體,但包含多個(gè)值,這意味著任何進(jìn)行計(jì)算的計(jì)算機(jī)需要同時(shí)處理大量數(shù)字??紤]到當(dāng)時(shí)的 CPU 每周期只能處理一到兩個(gè)浮點(diǎn)數(shù),因此需要數(shù)千個(gè) CPU。
SIMD 加入戰(zhàn)局:MMX,3DNow! 和 SSE
1997 年,英特爾更新了 Pentium CPU 系列,引入了一項(xiàng)名為 MMX 的技術(shù)擴(kuò)展——一組在核心內(nèi)部利用八個(gè)附加寄存器的指令。每個(gè)寄存器被設(shè)計(jì)成存儲(chǔ)一到四個(gè)整數(shù)值。這種系統(tǒng)允許處理器在多個(gè)數(shù)值上同時(shí)執(zhí)行單條指令,這種方法更為人所熟知的是 SIMD(單指令,多數(shù)據(jù))。
一年后,AMD 推出了自己的版本,名為 3DNow!。由于寄存器可以存儲(chǔ)浮點(diǎn)值,這使得 3DNow! 明顯優(yōu)于 MMX。又過了一年,英特爾在奔騰 III 中引入了 SSE(流式單指令多數(shù)據(jù)擴(kuò)展),解決了 MMX 中的問題。
3DNow! 首次亮相于 AMD K6-2 CPU。來源:Fritzchens Fritz
隨著時(shí)間推移,高性能計(jì)算機(jī)設(shè)計(jì)者們已經(jīng)能使用可高效處理向量數(shù)學(xué)的標(biāo)準(zhǔn)處理器。
經(jīng)過千百萬次的擴(kuò)展,這些處理器可以同樣高效地處理矩陣和張量。盡管取得了這一進(jìn)步,但超級(jí)計(jì)算機(jī)領(lǐng)域仍更青睞舊式或?qū)S眯酒?,因?yàn)檫@些新擴(kuò)展并未專為此類任務(wù)而設(shè)計(jì)。此外,還有另一種比 AMD 或 Intel 的任何 CPU 更擅長(zhǎng) SIMD 處理的迅速流行處理器:GPU。
在圖形處理器的早期,CPU 處理場(chǎng)景中組成三角形的計(jì)算(因此,AMD 為其 SIMD 實(shí)現(xiàn)使用了 3DNow! 這個(gè)名字)。然而,像素的著色和紋理處理完全由 GPU 負(fù)責(zé),并且這項(xiàng)工作的許多方面涉及到矢量數(shù)學(xué)。
20 多年前最好的消費(fèi)級(jí)顯卡,如 3dfx Voodoo5 5500 和 Nvidia GeForce 2 Ultra,都是出色的 SIMD 設(shè)備。然而,它們是為制作游戲的 3D 圖形而創(chuàng)建,沒有其他用途。即使在專業(yè)市場(chǎng)上的顯卡也完全專注于渲染。
來源: The Time Trekking Technologist
ATI 的 ATI FireGL 3 配備了兩個(gè) IBM 芯片(一個(gè) GT1000 幾何引擎和一個(gè) RC1000 柵格化器),高達(dá) 128 MB 的 DDR-SDRAM,以及聲稱的 30 GFLOPS 的處理能力。然而,所有這些都是為了加速像 3D Studio Max 和 AutoCAD 這樣的程序中的圖形渲染,使用的是 OpenGL 渲染 API。
那個(gè)時(shí)代的 GPU 并沒有配備用于其他用途的功能,因?yàn)閷?3D 對(duì)象變換并轉(zhuǎn)換為顯示器圖像的過程并不涉及大量的浮點(diǎn)運(yùn)算。實(shí)際上,其中很大一部分是整數(shù)級(jí)別的運(yùn)算,而且在顯卡開始在整個(gè)管道大量使用浮點(diǎn)值之前還需要幾年時(shí)間。
其中最早的一個(gè)是 ATI 的 R300 處理器,它擁有 8 個(gè)獨(dú)立的像素管線,可以以 24 位浮點(diǎn)精度處理所有數(shù)學(xué)運(yùn)算。遺憾的是,除了圖形處理之外,無法利用其強(qiáng)大的性能——硬件和相關(guān)軟件都完全以圖像為中心。
計(jì)算機(jī)工程師并非對(duì)于 GPU 具有大量 SIMD 能力但缺乏將其應(yīng)用于其他領(lǐng)域的途徑一無所知。令人驚訝的是,正是一款游戲主機(jī)向我們展示了如何解決這個(gè)棘手問題。
統(tǒng)一的新時(shí)代
2005 年 11 月,微軟的 Xbox 360 上市,搭載了一款由 IBM 設(shè)計(jì)制造、基于 PowerPC 架構(gòu)的 CPU,以及一款由 ATI 設(shè)計(jì)、由 TSMC 制造的 GPU。
這款名為 Xenos 的顯卡芯片非常特殊,因?yàn)槠洳季滞耆饤壛藗鹘y(tǒng)的分離頂點(diǎn)和像素管道的方法。
Xenos 激發(fā)了一種至今仍在使用的設(shè)計(jì)范例的出現(xiàn)。
來源:Oleg Kashirin
取而代之的是一個(gè)由三組 SIMD 陣列組成的簇。具體來說,每個(gè)簇包含 16 個(gè)向量處理器,每個(gè)處理器包含 5 個(gè)數(shù)學(xué)單元。這種布局使每個(gè)陣列能夠在一個(gè)周期內(nèi)同時(shí)對(duì) 80 個(gè)浮點(diǎn)數(shù)據(jù)值執(zhí)行來自線程的兩個(gè)順序指令。
統(tǒng)一著色器架構(gòu)使得每個(gè)陣列都能處理任何類型的著色器。盡管這使芯片的其他方面變得更為復(fù)雜,但 Xenos 引發(fā)的設(shè)計(jì)模式至今仍在使用。在 500 MHz 的時(shí)鐘速度下,整個(gè)集群理論上可以實(shí)現(xiàn) 240 GFLOPS(500 x 16 x 80 x 2)的處理速度,用于執(zhí)行三個(gè)線程的乘-加指令。
為了讓這個(gè)數(shù)字更具規(guī)模感,我們可以將其與 10 年前世界頂級(jí)超算的速度進(jìn)行對(duì)比。例如,1994 年位居世界超算之首的桑迪亞國(guó)家實(shí)驗(yàn)室的 Aragon XP/S140,其擁有 3,680 個(gè)英特爾 i860 CPU,峰值達(dá)到了 184 GFLOPS。芯片發(fā)展的步伐迅速超過了這臺(tái)機(jī)器,但 GPU 的情況也是如此。
多年來,CPU 已經(jīng)將 SIMD 陣列集成到自己的設(shè)計(jì)中,例如,英特爾最早的奔騰 MMX 就擁有一個(gè)專用單元來處理向量上的命令,其中包括多達(dá) 8 個(gè) 8 位整數(shù)。到 Xbox 的 Xenos 在全球家庭中應(yīng)用的時(shí)候,這樣的單元至少已經(jīng)擴(kuò)大了兩倍,但相較于 Xenos 中的單元,它們?nèi)匀伙@得很小。
來源:Fritzchens Fritz
當(dāng)消費(fèi)級(jí)顯卡開始采用統(tǒng)一著色器架構(gòu)的 GPU 時(shí),它們已經(jīng)具有比 Xbox 360 圖形芯片更高的處理速率。
英偉達(dá)的 G80(如上圖所示),用于 GeForce 8800 GTX(2006)的理論峰值達(dá)到了 346 GLFOPS,而 ATI 的 R600 在 Radeon HD 2900 XT(2007)上宣稱達(dá)到了 476 GLFOPS。
兩大顯卡制造商很快在其專業(yè)型號(hào)上利用這種計(jì)算能力。雖然價(jià)格昂貴,但 ATI FireGL V8650 和 Nvidia Tesla C870 非常適合高端科學(xué)計(jì)算機(jī)。然而,在最高水平上,全球的超級(jí)計(jì)算機(jī)仍繼續(xù)依賴標(biāo)準(zhǔn) CPU。事實(shí)上,在 GPU 開始出現(xiàn)在最強(qiáng)大的系統(tǒng)之前還需要過去幾年時(shí)間。
那么,鑒于 GPU 顯然能提供顯著的處理速度,為什么它們一開始就沒有被使用呢?
超級(jí)計(jì)算機(jī)及類似系統(tǒng)的設(shè)計(jì)、建造和運(yùn)行成本極高。多年來,它們都是圍繞著大量 CPU 構(gòu)建的,因此,一夜之間整合其他處理器并非易事。這樣的系統(tǒng)需要進(jìn)行徹底的規(guī)劃和初步的小規(guī)模測(cè)試,然后逐步增加芯片數(shù)量。
其次,要讓所有這些組件在軟件方面協(xié)調(diào)運(yùn)行并非易事,這對(duì)當(dāng)時(shí)的 GPU 來說是一個(gè)重大的弱點(diǎn)。盡管 GPU 已經(jīng)具有高度可編程性,但之前為它們提供的軟件還是相當(dāng)有限的。
Microsoft 的 HLSL(高級(jí)著色器語(yǔ)言),英偉達(dá)的 Cg 庫(kù)和 OpenGL 的 GLSL 使訪問圖形芯片的處理能力變得簡(jiǎn)單,盡管這僅用于渲染。
所有這些都隨著統(tǒng)一著色器架構(gòu) GPU 的出現(xiàn)而發(fā)生了改變。
在 2006 年,當(dāng)時(shí)已成為 AMD 子公司的 ATI 和英偉達(dá)發(fā)布了旨在將此功能用于不僅僅是圖形處理的軟件工具包,它們分別使用名為 CTM(Close To Metal)和 CUDA(計(jì)算統(tǒng)一設(shè)備架構(gòu))的 API。
科學(xué)和數(shù)據(jù)處理領(lǐng)域的研究人員真正需要的是一個(gè)全面的解決方案——一個(gè)能將龐大的 CPU 和 GPU 陣列(通常稱為異構(gòu)平臺(tái))作為一個(gè)由眾多計(jì)算設(shè)備組成的單一實(shí)體。
2009 年,他們的需求得到了滿足。最初,OpenCL 是由蘋果公司開發(fā)的,后來由接管 OpenGL 的 Khronos Group 發(fā)布。如今,OpenCL 已成為在日常圖形外使用 GPU 的事實(shí)上的統(tǒng)一軟件平臺(tái)。而當(dāng)時(shí)人們稱這個(gè)領(lǐng)域?yàn)?GPGPU,即指在 GPU 上進(jìn)行通用計(jì)算,這個(gè)概念由 Mark Harris 首創(chuàng)。
GPU 加入計(jì)算競(jìng)賽
與龐大的科技評(píng)論世界不同,全球并沒有數(shù)百名評(píng)論家在測(cè)試超級(jí)計(jì)算機(jī)的性能聲明。然而,自 20 世紀(jì) 90 年代初以來,德國(guó)曼海姆大學(xué)的一個(gè)持續(xù)進(jìn)行的項(xiàng)目就旨在實(shí)現(xiàn)這一目標(biāo)。
被稱為 TOP500 的組織,每年發(fā)布兩次全球十大最強(qiáng)大超級(jí)計(jì)算機(jī)的排名榜單。
2010 年榜單上首次出現(xiàn)了裝備 GPU 的計(jì)算機(jī),這兩臺(tái)來自中國(guó)的系統(tǒng)分別是星云和天河一號(hào)。星云使用了英偉達(dá)的 Tesla C2050(實(shí)質(zhì)上是 GeForce GTX 470,如下圖所示),而天河一號(hào)則采用了 AMD 的 Radeon HD 4870 芯片。前者具有理論峰值 2,984 TFLOPS。
來源: Fritchens Fritz
在早期高端 GPGPU 時(shí)代,英偉達(dá)成為了配置計(jì)算巨擘的首選廠商,并非因?yàn)樾阅苌系膬?yōu)勢(shì)——通常 AMD 的 Radeon 顯卡具有更高的處理性能——而是因?yàn)檐浖С帧UDA 得到了快速的發(fā)展,而在 AMD 推出合適的替代方案之前,還需要幾年的時(shí)間,這就促使用戶選擇使用 OpenCL。
然而,英偉達(dá)并沒有完全壟斷市場(chǎng)。英特爾的 Xeon Phi 處理器也試圖在市場(chǎng)上占有一席之地。這些處理器源自一個(gè)被終止的名為 Larrabee 的 GPU 項(xiàng)目,它構(gòu)成了一個(gè)奇特的 CPU-GPU 混合體。Xeon Phi 處理器由多個(gè)類似 Pentium 的核心(即 CPU 部分)組成,并搭配了大型浮點(diǎn)運(yùn)算單元(即 GPU 部分)。
對(duì) Nvidia Tesla C2050 內(nèi)部的檢查展示了 14 個(gè)被稱為流式多處理器(SMs)的模塊,這些模塊通過緩存和中央控制器進(jìn)行劃分。每個(gè)模塊中包含 32 組邏輯電路(英偉達(dá)稱之為 CUDA 核心),分別負(fù)責(zé)執(zhí)行整數(shù)值和浮點(diǎn)數(shù)的所有數(shù)學(xué)運(yùn)算。對(duì)于后者,每個(gè)核心每個(gè)時(shí)鐘周期可以處理單精度(32 位)的一次 FMA(融合乘加)操作;而雙精度(64 位)操作至少需要兩個(gè)時(shí)鐘周期。
Xeon Phi 芯片中的浮點(diǎn)處理單元(如下圖所示)似乎有相似之處,但每個(gè)核心處理的數(shù)據(jù)量只有 C2050 中一個(gè) SM 的一半。盡管如此,與特斯拉的 14 個(gè) SM 相比,單個(gè) Xeon Phi 處理器有 32 個(gè)重復(fù)的核心,因此每個(gè)時(shí)鐘周期總體上可以處理更多的數(shù)據(jù)。然而,英特爾首次發(fā)布的芯片更像是一個(gè)原型,并未完全發(fā)揮其潛力。相較而言,英偉達(dá)的產(chǎn)品運(yùn)行速度更快、功耗更低,并最終被證明更勝一籌。
在 AMD、英特爾和英偉達(dá)三家公司的 GPGPU 競(jìng)爭(zhēng)中,這成為了一個(gè)反復(fù)出現(xiàn)的主題。其中一個(gè)公司的產(chǎn)品可能在處理核心數(shù)量上占優(yōu)勢(shì),而另一個(gè)公司的產(chǎn)品可能在時(shí)鐘速度上更快,或擁有更強(qiáng)大的緩存系統(tǒng)。
CPU 在各種類型的計(jì)算中仍然不可或缺,許多超級(jí)計(jì)算機(jī)和高端計(jì)算系統(tǒng)仍然采用 AMD 或 Intel 處理器。雖然單個(gè) CPU 在 SIMD 性能上無法與一般 GPU 競(jìng)爭(zhēng),但當(dāng)它們以數(shù)千計(jì)連接在一起時(shí),表現(xiàn)就相當(dāng)不錯(cuò)了。然而,這樣的系統(tǒng)在功耗效率方面欠佳。
例如,在 Radeon HD 4870 GPU 被用于天河一號(hào)超級(jí)計(jì)算機(jī)的同時(shí),AMD 的頂級(jí)服務(wù)器 CPU(12 核 Opteron 6176 SE)也在廣泛應(yīng)用。雖然 CPU 的功耗約為 140W,理論上可達(dá)到 220 GFLOPS 的性能,但僅增加 10W 功耗的 GPU 則可提供高達(dá) 1,200 GFLOPS 的峰值性能,且成本只是 CPU 的一小部分。
一塊能做更多事的「小顯卡」
幾年后,不僅是世界上的超級(jí)計(jì)算機(jī)在使用 GPU 進(jìn)行大量并行計(jì)算,英偉達(dá)也積極推廣其 GRID 平臺(tái),這是一項(xiàng)用于科學(xué)和其他應(yīng)用的 GPU 虛擬化服務(wù)。最初,它作為一個(gè)托管云端游戲的系統(tǒng)推出,但在 GPGPU 大規(guī)模、低成本需求不斷增長(zhǎng)的推動(dòng)下,發(fā)生了這一轉(zhuǎn)變。在英偉達(dá)的年度技術(shù)會(huì)議上,GRID 作為各個(gè)行業(yè)工程師們的重要工具展示出來。
在同一活動(dòng)中,GPU 制造商展示了一個(gè)未來架構(gòu)的概要,代號(hào)為 Volta。發(fā)布的細(xì)節(jié)很少,人們普遍認(rèn)為這將是另一款面向英偉達(dá)所有市場(chǎng)的芯片。
與此同時(shí),AMD 也在開展類似的項(xiàng)目。他們通過不斷更新其游戲型 Radeon 系列、服務(wù)器型 FirePro 和 Radeon Sky 系列顯卡的圖形核心下一代(GCN)設(shè)計(jì)。當(dāng)時(shí)的性能表現(xiàn)令人驚嘆,F(xiàn)irePro W9100 的峰值 FP32 吞吐量達(dá)到 5.2 TFLOPS(32 位浮點(diǎn)),這一數(shù)據(jù)在不到二十年前的超級(jí)計(jì)算機(jī)上難以想象。
盡管 GPU 設(shè)計(jì)的初衷主要還是為了 3D 圖形處理,但隨著渲染技術(shù)的發(fā)展,這些芯片必須在處理通用計(jì)算任務(wù)方面表現(xiàn)出越來越高的性能。然而,唯一的問題在于它們處理高精度浮點(diǎn)數(shù)計(jì)算(即 FP64 或更高精度)的能力有限。
回顧 2015 年全球頂級(jí)超級(jí)計(jì)算機(jī),使用 GPU 的數(shù)量相對(duì)較少,不論是 Intel 的 Xeon Phi 還是英偉達(dá)的 Tesla,與完全基于 CPU 的計(jì)算機(jī)相比,GPU 使用的數(shù)量都很少。
2016 年,隨著英偉達(dá)發(fā)布 Pascal 架構(gòu),一切都發(fā)生了變化。這是該公司首次將重點(diǎn)放在專為高性能計(jì)算市場(chǎng)設(shè)計(jì)的 GPU 上,其他產(chǎn)品則適用于多個(gè)行業(yè)。在 Pascal 架構(gòu)中,僅有一種型號(hào)(GP100)產(chǎn)品是針對(duì)高性能計(jì)算市場(chǎng)的,并僅衍生出 5 款相關(guān)產(chǎn)品。但是,在以往的架構(gòu)中,只有少數(shù)幾個(gè) FP64 核心,而這款芯片則擁有接近 2000 個(gè) FP64 核心。
機(jī)架式裝置中的 8 個(gè) P100 顯卡。來源:ComputerBase
隨著特斯拉 P100 提供超過 9 TFLOPS 的 FP32 處理能力和一半的 FP64 處理能力,這款圖形卡非常強(qiáng)大。相比之下,AMD 的 Radeon Pro W9100 使用 Vega 10 芯片,在 FP32 性能上提速 30%,但在 FP64 性能上卻慢了 800%。此時(shí),由于銷售疲軟,英特爾即將停產(chǎn) Xeon Phi 處理器。
一年后,英偉達(dá)終于發(fā)布了 Volta 架構(gòu),立刻表明公司不僅僅關(guān)注將其 GPU 引入高性能計(jì)算(HPC)和數(shù)據(jù)處理市場(chǎng),還瞄準(zhǔn)了另一個(gè)市場(chǎng)。
神經(jīng)元、網(wǎng)絡(luò),真是驚奇無比
深度學(xué)習(xí)是在更廣泛的機(jī)器學(xué)習(xí)領(lǐng)域內(nèi)的一個(gè)子領(lǐng)域,而機(jī)器學(xué)習(xí)又是人工智能的一個(gè)子集。深度學(xué)習(xí)涉及使用復(fù)雜數(shù)學(xué)模型,即神經(jīng)網(wǎng)絡(luò),從給定數(shù)據(jù)中提取信息。
一個(gè)例子是判斷給定圖片描繪的是否為特定動(dòng)物的概率。要做到這一點(diǎn),模型需要進(jìn)行「訓(xùn)練」——以這個(gè)例子為例,訓(xùn)練過程中要展示數(shù)百萬張?jiān)搫?dòng)物的照片,以及數(shù)百萬張未出現(xiàn)該動(dòng)物的照片。涉及到的數(shù)學(xué)計(jì)算主要基于矩陣和張量運(yùn)算。
幾十年來,這種工作負(fù)載一直只能由基于 CPU 的超級(jí)計(jì)算機(jī)承擔(dān)。然而,早在 2000 年代初期,人們已經(jīng)認(rèn)識(shí)到 GPU 非常適合處理這樣的任務(wù)。
盡管如此,英偉達(dá)把賭注押在深度學(xué)習(xí)市場(chǎng)的顯著擴(kuò)張上,并在其 Volta 架構(gòu)中添加了特殊功能以在這一領(lǐng)域中脫穎而出。這個(gè)功能被稱為張量核心,它包括多個(gè) FP16 邏輯單元,組成一個(gè)大陣列,但其功能較為有限。
Pascal(左)和 Volta(右)
實(shí)際上,它們的功能非常有限,只能執(zhí)行一個(gè)操作:將兩個(gè) FP16 4x4 矩陣相乘,然后將另一個(gè) FP16 或 FP32 4x4 矩陣加到結(jié)果上(這個(gè)過程稱為 GEMM 操作)。英偉達(dá)以及競(jìng)爭(zhēng)對(duì)手之前的 GPU 也能執(zhí)行這樣的計(jì)算,但速度遠(yuǎn)不如 Volta。這個(gè)架構(gòu)下的唯一一款 GPU,GV100,共有 512 個(gè)張量?jī)?nèi)核,每個(gè)內(nèi)核能在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行 64 個(gè) GEMM 操作。
根據(jù)數(shù)據(jù)集中矩陣的大小以及所使用的浮點(diǎn)數(shù)大小,Tesla V100 顯卡在進(jìn)行張量計(jì)算時(shí)理論上可以達(dá)到 125 TFLOPS 的性能。顯然,Volta 是為一個(gè)小眾市場(chǎng)而設(shè)計(jì)的。盡管 GP100 在超級(jí)計(jì)算機(jī)領(lǐng)域的應(yīng)用較為有限,但新型的 Tesla 顯卡卻迅速被廣泛采用。
隨后,英偉達(dá)在其后續(xù)的圖靈架構(gòu)中為普通消費(fèi)類產(chǎn)品添加了張量核心,并開發(fā)了名為 DLSS(深度學(xué)習(xí)超采樣)的圖像放大技術(shù)。DLSS 利用 GPU 中的核心運(yùn)行神經(jīng)網(wǎng)絡(luò)對(duì)圖像進(jìn)行放大,同時(shí)糾正幀中的任何失真。
有一段時(shí)間,英偉達(dá)在深度學(xué)習(xí)領(lǐng)域的 GPU 加速市場(chǎng)一家獨(dú)大,數(shù)據(jù)中心業(yè)務(wù)的收入飆升,在 2017 財(cái)年、2018 財(cái)年和 2019 財(cái)年分別達(dá)到了 145%、133% 和 52% 的增長(zhǎng)。到 2019 財(cái)年末,高性能計(jì)算、深度學(xué)習(xí)等市場(chǎng)的銷售收入累計(jì)達(dá)到 29 億美元,取得了非常顯著的成果。
市場(chǎng)隨后迎來了爆炸式增長(zhǎng)。2023 年最后一個(gè)季度,公司的總收入達(dá)到了 221 億美元,同比暴增達(dá)到了 265%。大部分增長(zhǎng)是由公司的人工智能項(xiàng)目帶來的,貢獻(xiàn)了 184 億美元的收入。
然而,在利潤(rùn)豐厚的領(lǐng)域,競(jìng)爭(zhēng)自然難以避免。盡管英偉達(dá)仍是頂級(jí) GPU 供應(yīng)商,但其他大型科技公司也絕非甘于落后。
2018 年,谷歌開始通過云服務(wù)提供自家開發(fā)的張量處理芯片(Tensor Processing Chips)的訪問。不久之后,亞馬遜也跟進(jìn)推出了專門的 CPU——AWS Graviton。同時(shí),AMD 正在重組其 GPU 部門,形成了兩個(gè)截然不同的產(chǎn)品線:一個(gè)主要面向游戲(RDNA),另一個(gè)專門用于計(jì)算(CDNA)。
盡管 RDNA 與其前身有顯著不同,但 CDNA 實(shí)際上可以看作是 GCN 的自然演進(jìn),只不過是放大到了龐大的規(guī)模。如今,觀察用于超級(jí)計(jì)算機(jī)、數(shù)據(jù)服務(wù)器和 AI 機(jī)器的 GPU,一切都呈現(xiàn)出巨大的規(guī)模。
AMD 的 CDNA 2 驅(qū)動(dòng)的 MI250X 配備了 220 個(gè)計(jì)算單元,提供了接近 48 TFLOPS 的雙精度 FP64 吞吐量,以及 128 GB 的高帶寬存儲(chǔ)器(HBM2e)。這兩方面在高性能計(jì)算應(yīng)用中都備受追捧。而英偉達(dá)的 GH100 芯片,采用 Hopper 架構(gòu)和 576 個(gè)張量核心,在 AI 矩陣計(jì)算中使用低精度的 INT8 數(shù)字格式,可以潛在地達(dá)到 4000 TOPS。
英特爾的 Ponte Vecchio GPU 同樣龐大,擁有 1000 億個(gè)晶體管,而 AMD 的 MI300 多了 460 億,由多個(gè) CPU、圖形和內(nèi)存芯片組成。
然而,這些產(chǎn)品都有一個(gè)共同之處,那就是它們并不是真正的 GPU。在英偉達(dá)將這個(gè)術(shù)語(yǔ)當(dāng)作營(yíng)銷工具之前,GPU 這個(gè)縮寫代表的是圖形處理單元。AMD 的 MI250X 根本沒有光柵輸出單元(ROPs),即使是 GH100 在 Direct3D 性能方面也只類似于 GeForce GTX 1050,使得 GPU 中的「G」變得無關(guān)緊要。
那么,我們還能稱呼它們?yōu)槭裁茨兀?/span>
「GPGPU」并不理想,因?yàn)樗硎龅幂^笨拙,是指在通用計(jì)算中使用 GPU,并非指設(shè)備本身。"HPCU"(高性能計(jì)算單元)也好不到哪去。但也許這并不是很重要。
畢竟,「CPU」這個(gè)術(shù)語(yǔ)相當(dāng)寬泛,涵蓋了各種不同類型的處理器和用途。
下一個(gè) GPU 征服的領(lǐng)域是什么?
隨著英偉達(dá)、AMD、蘋果、英特爾以及其他數(shù)十家公司投入數(shù)十億美元進(jìn)行 GPU 研究和開發(fā),現(xiàn)今的圖形處理器短時(shí)間內(nèi)不太可能被截然不同的技術(shù)所替代。
對(duì)于渲染,最新的 API 和使用它們的軟件包(如游戲引擎和 CAD 應(yīng)用程序)通常對(duì)運(yùn)行代碼的硬件并不挑剔。因此,從理論上講,它們可以很容易地適應(yīng)一種全新的硬件設(shè)備。
然而,在 GPU 中只有相對(duì)較少的部件專門用于圖形處理,其中最明顯的是三角形設(shè)置引擎、光柵化操作處理器(ROPs),以及在最近的版本中,高度專用的光線追蹤單元。然而,其余部分基本上是一個(gè)大規(guī)模并行的 SIMD 芯片,由強(qiáng)大且復(fù)雜的存儲(chǔ)器/緩存系統(tǒng)支持。
基本設(shè)計(jì)已經(jīng)非常成熟,未來的提升主要依賴于半導(dǎo)體制造技術(shù)的進(jìn)步。換句話說,它們只能通過增加更多邏輯單元、提高時(shí)鐘速度或二者結(jié)合來實(shí)現(xiàn)進(jìn)一步的優(yōu)化。
當(dāng)然,可以將新功能整合到 GPU 中,從而讓它們?cè)诟鼜V泛的場(chǎng)景中發(fā)揮作用。在 GPU 歷史上,這樣的事情已經(jīng)發(fā)生過多次,而統(tǒng)一著色器架構(gòu)的過渡尤為重要。雖然專用硬件處理張量或光線追蹤計(jì)算更為理想,但現(xiàn)代 GPU 的核心也能夠勝任這些任務(wù),盡管速度較慢。
正因如此,像 AMD MI250 和英偉達(dá) GH100 這樣的產(chǎn)品與其桌面 PC 對(duì)應(yīng)產(chǎn)品有著極為相似的外觀,而未來用于高性能計(jì)算和人工智能的設(shè)計(jì)也很可能會(huì)延續(xù)這一趨勢(shì)。那么,如果芯片本身并沒有發(fā)生重大變化,它們的應(yīng)用領(lǐng)域會(huì)有什么變化呢?
谷歌的 Coral 加速板搭載了兩顆 Edge TPU 芯片
與人工智能相關(guān)的領(lǐng)域?qū)嵸|(zhì)上都屬于計(jì)算領(lǐng)域。在需要執(zhí)行大量 SIMD 計(jì)算的場(chǎng)景下,GPU 很可能會(huì)被用到。雖然現(xiàn)今科學(xué)與工程領(lǐng)域中很多行業(yè)已經(jīng)在利用這些處理器,但未來我們還可能見證 GPU 衍生品應(yīng)用的迅猛增長(zhǎng)。
如今,人們可以購(gòu)買到配備了專用于加速?gòu)埩坑?jì)算的微型芯片的手機(jī)。隨著像 ChatGPT 這樣的工具在性能和受歡迎程度上的不斷提升,我們將看到更多搭載此類硬件的設(shè)備。
作為簡(jiǎn)單的圖形處理器,GPU 最初只是為了加速游戲運(yùn)行而設(shè)計(jì),但如今已經(jīng)演變成一種全方位的加速器。它在全球范圍內(nèi)助力各種工作站、服務(wù)器以及超級(jí)計(jì)算機(jī)的運(yùn)行。
全球數(shù)百萬人每天都在使用這些技術(shù)——不僅在我們的電腦、手機(jī)、電視和流媒體設(shè)備中,還包括在使用整合了語(yǔ)音和圖像識(shí)別的服務(wù),以及提供音樂和視頻推薦的服務(wù)時(shí)。
GPU 的未來可能是未知領(lǐng)域,但有一點(diǎn)可以肯定:在未來的幾十年里,圖形處理單元將繼續(xù)作為計(jì)算和 AI 領(lǐng)域的主導(dǎo)工具。
評(píng)論