AI訓練,為什麼需要GPU?


隨著ChatGPT引發的人工智慧熱潮,GPU成為了AI大模型訓練平台的基石,甚至是決定性的算力底座。為什麼GPU能力壓CPU,成為炙手可熱的主角呢?

要回答這個問題,首先需要了解目前人工智慧(AI,Artificial Intelligence)的主要技術。

人工智慧與深度學習

人工智慧是一個歷史非常長的學科。自上世紀50年代以來,在多個技術方向上進行過探索,也經歷過多次的高潮和低潮。想了解更基礎更有趣的人工智慧介紹,可以看下面這篇文章:人工智慧來了,小心你的飯碗不保

人工智慧在早期誕生了一個「不甚成功」的流派,叫做「人工神經網路」。這個技術的想法是,人腦的智慧無與倫比,要實現高階的人工智慧,模仿人腦就是不二法門。

人腦是由數以億計的神經元組成。這些神經元彼此連接,形成了龐大而複雜的神經網路。嬰兒的大腦是一張白紙,經過後天的學習便可達到高度的智慧。

參考人腦神經元,人工神經元模型就被設計出來了。


在上圖右側的人工神經元裡,透過調整每個輸入的權重,經由神經元計算處理之後,便可得出對應的輸出。這裡面的每個權重,就被稱為一​​個參數。


把這樣的多個神經元互相連結形成網絡,就是人工神經網絡了。人工神經網路一般由輸入層、中間的多個隱藏層、輸出層組成。

這樣的人工神經網路就像嬰兒的大腦一樣空空如也,必須給它投餵大量的數據,讓它充分學習才能形成知識,才能用於實際解決問題。這個過程就叫做“深度學習”,屬於“機器學習”的子集。


以常見的「監督學習」為例,投餵給AI的資料必須包含問題和答案。比方說,我們的目標是讓AI判斷圖片裡面是不是有一隻貓,那就需要給AI大量確定有貓的圖片並給出貓的特徵,讓它自己從中找規律。

首先AI拿出一張給定的圖片,採用初始權重得出自己的結論。然後比較這個結論和正確答案到底相差了多少,再返回去優化參數權重,這個過程循環進行,直至AI給出的結果和正確答案最為接近。


這個學習的過程就叫做訓練。一般來說,需要給AI大量含有正確答案的數據,才會得到比較好的訓練結果。

一旦我們認為訓練完成,就拿出試試成色。如果我們給它一個未知的問題,它也能很好地找出答案,就認為訓練是成功的,AI的「泛化」效果很好。


如上圖所示,從神經網路上一層到下一層,參數權重的傳遞,本質上就是矩陣的乘法和加法。神經網路參數的規模越大,訓練時所需的這些矩陣的計算也就越大。

最先進的深度學習神經網路可以有數百萬到超過數萬億個參數,它們還需要大量的訓練資料來實現高精度,這意味著必須透過正向和反向傳遞來運行驚人的輸入樣本。由於神經網路是由大量相同的神經元創建的,因此這些計算本質上是高度並行的。

這麼大規模的運算量,用CPU還是GPU好呢?

CPU,擅長控制的管家

我們先說CPU(Central Processing Unit)。

此物可謂電腦的大腦,是仁不讓的核心中的核心。

CPU內部主要包含運算器(也叫邏輯運算單元,ALU)和控制器(CU),以及一些暫存器和快取。



資料來了,會先放到記憶體。然後,控制器會從記憶體拿到對應數據,再交給運算器運算。運算完成後,再把結果放回記憶體。

在早期,一個CPU只有一套運算器、控制器和緩存,同一時間只能處理一個任務。要處理多個任務,只能按時間排隊輪著來,大家雨露均霑。這樣的CPU就是單核心CPU。


後來,人們把多套運算器、控制器和快取整合在同一塊晶片上,就組成了多核心CPU。多核心CPU擁有真正意義上的平行處理能力。


一般情況下,多核心CPU的核心數量少則2個4個,多則幾十個。

在智慧型手機剛開始普及的時候,手機的外觀趨同,其他地方也乏善可陳,廠家就大力渲染CPU的核數,史稱智慧型手機的「核戰」。

不過「核戰」也就從雙核燒到4核再到8核,然後大家也就都偃旗息鼓了。晶片廠商也都是在這個核心數量上做優化。

為什麼CPU不多整合一些核心呢?

這是因為CPU是一個通用處理器。它的任務非常複雜,既要應對不同類型的資料計算,還要響應人機互動。

複雜的任務管理和調度使得它需要更複雜的控制器和更大的緩存,進行邏輯控制和調度,保存各種任務狀態,以降低任務切換時的延遲。

CPU的核心越多,核心之間的互聯通訊壓力就越來越大,會降低單一核心的效能表現。而且,核心多了還會使耗電量增加,如果忙閒不均,整體效能還可能不升反降。

GPU,平行運算專家


下來再看GPU(Graphics Processing Unit)。

GPU叫做圖形處理單元。其設立的初衷是為了分擔CP​​U的壓力,加速立體圖形的渲染,常用於電腦的顯示卡。

影像的處理,正是一種針對矩陣的密集平行計算。從下圖可以看出,左側的影像由大量的像素點組成,可以自然地表示成右側的矩陣。


GPU一詞從1999年Nvidia推出其GeForce256時開始流行,該產品對每個像素點同時處理,執行圖形轉換、照明和三角剪裁等數學密集型並行計算,用於圖像渲染。

為什麼GPU善於承擔密集的平行運算呢?這是因為GPU的在架構上和CPU有很大的不同。


CPU的核數少,單一核心有足夠的快取和足夠強的運算能力,並輔助有很多加速分支判斷甚至更複雜的邏輯判斷的硬件,適合處理複雜的任務。

相較之下GPU就簡單粗暴多了,每個核心的運算能力都不強,快取也不大,就靠增加核心數量來提升整體能力。核心數量多了,就可以多管齊下,處理大量簡單的平行計算工作。


隨著時間的推移,GPU也變得更加靈活和可編程,它的工作也就不局限於圖像顯示渲染了,還允許其他開發者用來加速高效能運算、深度學習等其他工作負載。

由於趕上了人工智慧這樣並行運算需求暴增的機遇,GPU一改以前的邊緣角色,直接站到了舞台中央,可謂炙手可熱。

GPU的名字,也變成了GPGPU,也就是通用GPU。

將AI訓練這種平行性自然地映射到GPU,與僅使用CPU 的訓練相比,速度明顯提升,並使它們成為訓練大型、複雜的基於神經網路的系統的首選平台。推理操作的平行特性也非常適合在GPU 上執行。

因此,GPU作為主力所提供的算力,也被叫做「智算」。(無線深海)