天天看點

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

作者:中國科普博覽

8年前,聯考結束後的暑假,作為班裡的“電腦愛好者”,我經常被同學們問上大學配什麼新電腦。當時的我告訴大家,配好電腦有兩個東西很重要,一個叫CPU,決定電腦反應速度的快慢;另一個叫GPU,負責圖形的運算,玩電腦遊戲流暢可得靠它。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

用于桌面計算機的GPU和資料中心計算機的GPU(圖檔來源:Amazon)

那時候的GPU,在大家印象裡就是用來打遊戲的。然而8年後的今天,随着ChatGPT等大語言模型(LLM)橫空出世,能夠處理人工智能高性能計算的GPU突然引來各大科技公司搶購。自稱為“人工智能計算領域的上司者”的GPU生産商英偉達(NVIDIA)在一年内股價飙升,6月19日更是一躍成為全球市值最高的公司。剛剛聯考完的同學們要是想買台帶GPU的電腦,申請“爸媽輪天使投資”的理由也變成了“我想學人工智能”。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

GPU生産商英偉達(圖檔來源:英偉達)

8年之間,GPU如何從“遊戲處理單元”蛻變成“人工智能處理平台”?帶着這個問題,今天和大家一起聊聊,GPU到底是怎麼回事。

GPU能做的事情CPU都能做?我們為什麼需要GPU

比起GPU,大家可能更熟悉的還是計算機的CPU,全稱為中央處理單元(Central Processing Unit)。CPU是計算機的“大腦”,它支配計算機中的其他部件,協同完成網頁浏覽、遊戲渲染、視訊播放等等一切“計算任務”。CPU決定了計算機的運作速度,有一句網絡用語是“把我CPU幹燒了”,就是用CPU工作溫度過高失靈,來比喻腦子裡的事情太多太複雜,腦子轉不過來了。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的
爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

左為CPU是計算機的“大腦”(圖檔來源:veer);右為英特爾(Intel)i9-12900KS CPU(圖源:hothardware)

而GPU也是被CPU支配控制的部件之一。GPU全稱為圖形處理單元(Graphic Processing Unit),主要功能是完成圖形處理相關任務,以GPU為核心的主機闆擴充卡就是大家在買電腦時經常聽說的顯示卡。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

英偉達Geforce 6600 GT GPU(圖檔來源:wiki)

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

安裝在桌上型電腦箱裡的CPU和GPU,這是英偉達網站上一個搭載RTX40系列GPU的機箱概念圖(圖檔來源:英偉達)

理論上,所有能由GPU完成的計算任務,都能由CPU完成。一台電腦沒有獨立GPU仍然能夠正常開機,但若是沒了CPU就“臣妾不能夠了”。既然如此,我們為什麼還要花大價錢去買GPU呢?因為,就像我們不能抛開劑量談毒性,計算機也不能抛開“性能”談“功能”。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

CPU和GPU各有擅長的計算任務(圖檔來源:IBE)

對于遊戲渲染、人工智能這些計算任務,CPU并不擅長,雖然也能從功能層面上完成,但性能表現十分有限。對于遊戲渲染而言,性能的局限性展現在更低的幀率,更粗糙的畫質上,也許無傷大雅。但在人工智能的應用上,以大語言模型GPT為案例分析,如果僅使用CPU的話,其訓練時間将長達數百年,這樣的速度顯然不能滿足我們對于人工智能技術突破的渴望。

而GPU恰好擅長這些“熱門且艱巨”的任務。在配置了GPU的計算機系統中,CPU不再孤獨地承擔一切,而是将這些自己不擅長的任務解除安裝(offload)到GPU上加速執行。得益于特殊的并行架構設計,GPU在處理這些任務時遊刃有餘,可以輕松地為我們提供細膩入微的3D畫質,讓OpenAI公司每隔幾個月就能推陳出新。

GPU是如何實作加速的?從并行架構的角度看GPU與CPU的差別

在開始讨論之前,我們需要進行一個類比:計算機中的一個程式,可以類比成由一連串運算題組成的試卷——計算機科學家們的祖師爺艾倫·圖靈就是這麼構想計算機程式的。當然,這些運算題有難有易,有國小生就能輕松應對的四則運算,也有高中生可以玩轉的三角函數,還有大學生才能完全掌握的微積分。

計算機科學家曾希望CPU可以像一位經驗老道的“數學家”,發揮他的計算能力(計算指令)、敏銳的決策力(控制指令)快速地完成試卷(程式),得到使用者想要的結果。而随着計算機的程式越來越複雜,“老數學家”的能力逐漸不能滿足要求了,他主要的缺點是:即使每道題都能算的很快,但任何時間都隻能一心一意地算一道題。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

單核CPU計算機的工作架構,黑線為資料流,紅線為控制流,均由單個CPU處理(圖檔來源:wiki)

于是,英特爾、IBM、AMD等公司開始意識到,可以在一個CPU内“聘請”多位數學家,也就構成了目前常見的多核CPU。當然受限于晶片散熱、良率的限制,多位數學家中的每一位都不像的從前的那麼強,可能更像是多位準備參加高等數學考試的“大學生”。——為什麼是準備參加呢?因為考完試就忘了(紮心)。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

第四代AMD EPYC處理器架構,EPYC是AMD的高性能伺服器處理器系列,圖中的Z4就是我們所說的“大學生”核心,一個CPU中可包含16-96個核心(圖檔來源:AMD官網)

GPU則可以類比成約由幾千到上萬個“國小生”核心組成的大型計算團隊。相比于大學生核心,單個國小生核心隻能計算更簡單的運算,且計算速度也僅有大學生的1/4~1/3。下圖展示了英偉達H100 GPU的架構,“國小生”核心對應圖中的綠色小格子,一共有18432個。一萬多名國小生核心先被層層劃分成為上百個“班級”,在班級内部再動态劃分成32-64人一組的“值日小組”。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

英偉達H100 GPU架構圖,GPU中包含了衆多小核心,按照層次結構進行組織(圖檔來源:英偉達H100架構白皮書)

該如何讓這麼多國小生核心高效協作呢?像CPU一樣讓每個國小生都獨立完成試卷,顯然不是一個理智的方案。為了解決協同問題,英偉達GPU增加了一條規則限制:每個“值日小組”内的所有核心(線程)在同一時間隻能執行一種運算操作(指令),而一個或多個值日小組(可以跨越班級)可以被組織起來共同完成一張程式試卷,這種協同工作模式被稱為單指令多線程并行(Single instruction, multiple threads,簡稱為SIMT),是英偉達GPU運作的核心模式。我們用一張示意圖對比CPU和GPU的并行運作方法。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

多核與SIMT并行方式差異的示意圖(作者自制)

聰明的你應該已經意識到,這種奇妙的組織方式會讓CPU和GPU所能做答的試卷産生明顯的差別。如果CPU(單個核心)的試卷長這樣:

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

那麼 GPU 的試卷将會是這樣的(假設一個值日小組有三個核心):

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

這也太奇怪了!怎麼會有人出這樣的試卷呢?事實情況是:圖形渲染和人工智能應用恰好符合這樣的特點。對于圖形渲染而言,輸入的3D圖形是由衆多離散的點坐标組成的,在渲染過程中需要并行地對多個點進行相同的位置轉換、光照運算;在人工智能應用中,現實世界輸入的圖像、文字被表達成了大規模的矩陣和向量,而矩陣和向量之間的運算操作也可以抽象成多個數值并行執行相同的運算,正中SIMT并行的下懷!

既然,GPU的并行模式這麼優秀,我們為什麼不幹脆把CPU也設計成這樣呢?答案是:SIMT并行相比多核并行損失了一定的“通用性”。在我們的類比中,更直覺的表達是:我們不一定能把試卷組織成适合GPU的樣子。一個案例便是我們每天都在通路的微信、淘寶等網際網路應用,由于每個使用者都在發送不一樣的消息、檢視不一樣的商品,很難讓GPU的值日小組高效協同。

如何乘上AI的“東風:從GPU到GPGPU

1999年,英偉達釋出了世界上第一款GPU——GeForce 256,它內建了變換、裁剪及渲染等圖形計算的硬體加速,也是以被命名為圖形處理單元。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

GeForce 256 GPU(圖檔來源:wiki)

早期GPU的可程式設計性很弱,大多數使用者隻能調用固定的程式設計接口進行固定的圖形操作。但是一些具有前瞻視野的計算機科學家意識到了GPU可挖掘的并行計算潛力,他們嘗試将洋流模拟、大氣模拟等科學計算問題映射轉換成GPU可支援的圖形操作,并獲得了性能收益。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

搭載GeForce 256 晶片的GPU闆卡(圖檔來源:VGA Museum)

也許是受到了這種“歪打正着”的應用場景啟發,2007年英偉達推出了CUDA(Compute Unified Device Architecture)程式設計架構,向開發者全面放開了GPU的可程式設計能力。借助CUDA,使用者可以用類似C/C++的程式設計方式編寫适用于GPU的并行程式。從此,GPU的名字變成了GPGPU(General-purpose computing on graphics processing units),多出來的GP表達了對通用性的支援。

在比CUDA推出稍早一點的2006年,人工智能泰鬥Hinton及其團隊改進了深度神經網絡的訓練方法,屬于“連接配接主義學派”的深度學習方法開始回暖。到了2012年,圖像分類模型 AlexNet 赢得了 ImageNet 競賽,激發了深度學習研究的熱情,借助GPGPU進行訓練的方法開始被廣泛采納。2014年,NVIDIA推出了cuDNN深度學習加速庫,讓基于GPU的深度學習訓練變得更加容易。

之後的故事我們逐漸熟悉,2016年谷歌的人工智能圍棋軟體AlphaGo擊敗南韓棋手李世石,在AlphaGo的早期版本中,谷歌使用了176塊GPU支撐其運作。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

由上百塊GPU訓練的AlphaGo擊敗了南韓棋手李世石(圖檔來源:Deepmind)

2022年末,聊天機器人ChatGPT驚豔登場,引發了人門對于人工智能技術新一輪的憧憬。ChatGPT是一種大語言模型,能夠基于海量文本資料的訓練,通過機器學習了解并生成人類語言。盡管缺乏公開資料支援,但是相關領域研究者普遍認為OpenAI公司采用了數千到數萬塊當時頂級的NVIDIA A100 GPU以支援訓練。

爸媽問我GPU是不是打遊戲的,我說是用來訓練AI的

聊天機器人ChatGPT掀起了人工智能新一輪的研究熱潮(圖檔來源:pexel)

在此背景下,支撐大模型算力需求的GPU正成為各大科技企業争奪的“緊俏貨”。作為具有壟斷地位的廠商,英偉達在這場人工智能的狂潮中,憑借十餘年的技術積累,成功抓住了機遇,完成了從“遊戲處理器”到“人工智能計算平台”的華麗轉身,可謂是“好風憑借力,送我上青雲”。

英偉達在GPU領域處于全球壟斷地位,然而受限于美國政府的出口限制,高端GPU型号對大陸處于禁售狀态。開發設計具有獨立自主知識産權的人工智能計算平台,是大陸計算機科研人員目前發力的重點問題之一。那麼,剛剛聯考完“想要學人工智能”的你,願不願意參與到這一開啟未來的征程中來呢?

作者:高睿昊

作者機關:中國科學院計算技術研究所