對 GPU、TPU 和 NPU 感到困惑嗎?本指南將帶您深入了解 AI 運算領域的三大核心,助您選擇最適合您需求的處理器

人工智慧(AI)驅動著創新,尤其是在大規模數據處理方面。機器學習(ML)和深度學習(DL)算法設計用於解決複雜問題並隨時間自我學習,擴展了計算機的可能性。
隨著我們要求計算機解決的問題越來越複雜,運行的過程數量也不可避免地爆炸性增長。這種增長導致了專用處理器的興起和一系列新縮寫的出現。
除了您可能已經熟悉的中央處理器(CPU)外,還有神經處理單元(NPU)、圖形處理單元(GPU)和張量處理單元(TPU)。
讓我們深入了解一些這些專用處理器的工作原理,以及它們之間的區別。如果您在那之後仍然和我在一起,請繼續關注IT歷史課。我將討論過去100年左右硬件和軟件發展中的一些更技術性的概念。
中央處理單元(CPU):元老級
將CPU想像成您計算機的將軍。CPU有兩個主要部分,算術邏輯單元(ALU)和控制單元。ALU允許進行算術(加、減等)和邏輯(AND、OR、NOT等)操作。控制單元控制ALU、內存和輸入/輸出(IO)功能,告訴它們如何響應從內存中讀取的程序。
追踪CPU的最佳方式是將其視為輸入/輸出流程。CPU接收請求(輸入),訪問計算機的內存以獲取執行該任務的指令,將執行委派給自己的ALU或其他專用處理器,然後將所有數據返回其控制單元,並採取單一、統一的行動(輸出)。
這是1970年的ALU電路圖:

來自我們的好朋友德州儀器:74181集成電路的組合邏輯電路,一個早期的四位ALU。圖片來源。
但更重要的是,這是一個關於CPU工作原理的邏輯圖:

隨著我們從單核處理器轉向多核處理器,CPU的性能變得越來越強大。基本上,有幾個ALU在執行由CPU的控制單元管理的任務,它們並行執行任務。這意味著它可以與專用的AI處理器如GPU良好協作。
專用處理器的興起
當計算機被賦予任務時,處理器首先要做的是與內存通信,包括程序內存(ROM)——設計用於更固定的任務,如啟動——和數據內存(RAM)——設計用於更頻繁變化的任務,如加載應用程序、編輯文檔和瀏覽互聯網。使這些元素能夠通信的是總線,它一次只能訪問兩種類型內存之一。
過去,處理器運行速度比內存訪問慢,但隨著處理器變得更加複雜,這種情況發生了變化。現在,當CPU被要求對大量數據執行一堆過程時,CPU最終因總線上的流量而等待內存訪問。除了處理速度較慢外,它還消耗大量能量。計算機領域的人稱這為馮·諾伊曼瓶頸,隨著像AI這樣的計算任務變得越來越複雜,我們不得不解決這個問題。
一個選擇是創建優化特定任務的芯片。專用芯片旨在解決機器學習算法對CPU提出的處理困難。在創建最佳AI處理器的競賽中,谷歌、IBM、微軟和Nvidia等大公司通過專用處理器解決了這個問題,這些處理器可以執行更多的邏輯查詢(從而更複雜的邏輯)。他們通過幾種不同的方式實現了這一目標。那麼,讓我們來談談這是什麼樣子的:什麼是GPU、TPU和NPU?
圖形處理單元(GPU)
GPU最初是專用的圖形處理器,經常與圖形卡混淆(後者包含更多硬件)。GPU設計用於支持大量並行處理,它們與CPU協同工作,可以完全集成在主主板上,或者,對於更重的負載,作為自己的專用硬件。它們還消耗大量能量,因此會產生熱量。
GPU長期以來一直用於遊戲,直到2000年代,人們才開始將其用於一般計算——多虧了Nvidia。Nvidia當然設計芯片,但他們還推出了一個名為CUDA的專有平台,允許程序員直接訪問GPU的虛擬指令集和並行計算元素。這意味著您可以設置計算內核,或協同工作的處理器集群,並且它們非常適合特定任務,而不會消耗其餘資源。這是一個很好的工作流程圖:

這使得GPU在機器學習任務中廣泛應用,並且它們受益於它們利用現有的、眾所周知的過程。這意味著:通常當您研究解決方案時,獲勝的解決方案並不總是基於純粹執行的“最佳”解決方案。如果您引入的東西必須(例如)從根本上改變消費者行為,或者需要每個人重新學習技能,您將會遇到採用的阻力。因此,GPU與現有系統、編程語言等的良好兼容性促進了廣泛的採用。它們不是即插即用,但您明白其意圖。
隨著時間的推移,現在還有支持GPU的開源平台,由重量級行業玩家(包括Nvidia)支持。最大的是OpenCL。此外,人們還添加了張量核心,這篇文章對此有精彩的解釋。
張量處理單元(TPU)
好消息:這個縮寫的簡短解釋是:它是Google的專有AI處理器。他們於2015年開始在自己的數據中心使用,於2016年向公眾發布,並且有一些商業可用的型號。它們運行在ASIC(稍後我會討論更多的硬刻芯片)和Google的TensorFlow軟體上。
與GPU相比,它們專門設計為精度稍低,這在面對不同類型的工作負載時更具靈活性。我認為Google自己總結得最好:
如果外面在下雨,您可能不需要確切知道每秒有多少水滴下落——您只需要知道下雨是輕微還是大雨。類似地,神經網絡預測通常不需要32位甚至16位數字的浮點計算精度。通過一些努力,您可以使用8位整數來計算神經網絡預測,並仍然保持適當的精度。
Google Cloud Blog
另一方面,GPU最初設計用於圖形處理和渲染,這依賴於每個點之間的關係來創建可讀的圖像——如果這些點的精度較低,那麼在向量中會被放大,最終您會得到類似PlayStation 2時代的Spyro,而不是PlayStation 4的Spyro。
另一個重要的設計選擇是TPU圍繞着一個稱為收縮陣列的結構設計。收縮陣列創建了一個處理器網絡,每個處理器都在計算部分任務,然後將其傳遞到下一個節點,直到達到終點。每個節點通常是固定且相同的,但運行於它們之間的程序是可編程的。這被稱為數據處理單元(DPU)。
神經處理單元(NPU)
“NPU”有時用作所有專用AI處理器的類別名稱,但更常見的是指那些設計用於移動設備的處理器。為了增加混淆,請注意,三星也將其專有的芯片組稱為NPU。
NPU包含完成AI處理所需的所有信息,並且它們基於突觸權重的原理運行。突觸權重是一個從生物學中借來的術語,用來描述兩個神經元之間連接的強度。簡單來說,在我們的身體裡,如果兩個神經元更頻繁地共享信息,這些連接會變得更強,這使得能量更容易在它們之間傳遞。最終,這讓您更容易做某些事情。(現在習慣形成的科學更有意義了。)許多神經網絡模仿這一點。
當我們說AI算法學習時,這是其中一種方式——它們隨時間追踪可能性,並給予那個連接節點更高的權重。這在能量消耗方面影響巨大。並行處理可以同時運行每個任務,但在任務完成時尤其是當架構擴展且處理單元可能更分散時,並不擅長處理。
快速回顧:神經網絡與計算機的決策過程
如我們在AI 101中所討論的,當您考慮決策過程時,實際上是進行一系列決策,通常在達到最終決定之前考慮的因素會影響最終結果。由於計算機是基於嚴格的二進制設計的,它們“自然”不適合將信息背景化以做出更好的決定。神經網絡是解決方案。它們基於矩陣數學,看起來像這樣:

基本上,您要求計算機讓每個潛在決策與所有其他可能性進行檢查,衡量結果,並從自己的經驗和感官信息中學習。這一切都轉化為同時運行更多的計算。
重點差異回顧
這包含了很多內容。這裡有個總結:
- 功能性:GPU 是為圖形渲染而開發的,而 TPU 和 NPU 是為 AI/ML 工作負載而專門構建的。
- 並行性:GPU 是為並行處理而設計的,適合訓練複雜的神經網絡。TPU 進一步專門化,專注於張量運算,以達到更高的速度和能源效率。
- 定制化:TPU 和 NPU 更專業和定制化以適應 AI 任務,而 GPU 提供更通用的方法,適合各種計算工作負載。
- 使用案例:GPU 常用於數據中心和工作站進行 AI 研究和訓練。TPU 廣泛應用於 Google 的雲基礎設施中,NPU 則普遍存在於智能手機和物聯網(IoT)設備等 AI 支持的設備中。
- 可用性:GPU 由多家製造商廣泛供應,研究人員、開發人員和業餘愛好者均可使用。TPU 主要限於 Google Cloud 服務,NPU 則集成在特定設備中。
差異重要嗎?
經過一段時間後,不同處理器的定義聽起來非常相似。多核處理器將多個ALU(算術邏輯單元)組合在一個中央控制單元下。GPU 將更多的 ALU 組合在一個專用處理器下。TPU 將多個計算節點組合在 DPU(數據處理單元)下,這類似於 CPU。
最終,在處理器之間的設計選擇中存在一些細微差異,但它們的影響主要體現在規模上而非消費者層面。專用處理器能更高效地處理更大數據集,這轉化為更快的處理速度和更少的電力消耗(儘管隨著我們使用更多的 AI 工具,總能耗可能會上升)。
也需要注意,這些都是在不斷變化的領域中的新術語。Google 的 TPU 是在2015年公佈的,僅僅八年前。我無法計算我與他人討論 AI 對世界可能產生的影響時有多少次以誇張的語調結束,這主要是因為人們認為 AI 沒有任何限制。
然而,實現 AI 的創新是由真實的人創造的。(雖然,也許 AI 將開始自我編程,誰知道呢。)而,驅動 AI 的芯片是實實在在的東西——一塊來自地面的矽片,經過實驗室的處理。了解這些物理現實、我們需要克服的挑戰以及如何解決這些問題,可以幫助我們更有效地使用這些工具——並在未來做出更多酷炫的事情。
額外內容:硬件歷史簡述
這引出了我們的歷史課題。為了更深入地理解今天的主題,您需要了解一些關於計算機如何物理構建的知識。計算機最基本的語言是二進制代碼,表示為一系列的0和1。這些值分別對應於電路是閉合還是開路。當電路閉合時,無法通過電力;當它開放時,可以。晶體管調節電流,產生電信號,並充當開關或閘門。您可以通過電路連接許多晶體管來創建集成電路芯片。
晶體管的開閉模式組合可以被計算機讀取。隨著添加更多的晶體管,您能在二進制代碼中表達更多的數字。您可以看到這如何影響計算的基本基礎,例如我們如何測量位和字節。八個晶體管存儲一個字節數據:每個八個晶體管有兩種可能性,然後這些可能性的每一種組合(2^8)= 256 種開/閉閘門(位)的可能組合,因此8位=一個字節,可以表示0到255之間的任何數字。

晶體管組合形成邏輯。您需要大量這樣的東西來運行程序。圖片來源
減少晶體管尺寸和增加單個芯片上的晶體管密度的改進,主要得益於我們能夠提純半導體材料、利用更複雜的工具如化學蝕刻以及改進潔淨室技術,這些都促成了容量、速度和功耗的提升。這一切都始於集成電路芯片。
集成電路芯片大約於1958年發明,得益於幾個人幾乎同時解決了不同的挑戰。德州儀器的Jack Kilby創造了一個測量約7/16"乘1/16"(11.1毫米乘1.6毫米)的混合集成電路。Robert Noyce(最終成為英特爾的聯合創始人)創造了第一個單片集成電路芯片(即所有電路都包含在同一芯片上),其尺寸相似。這裡有一個放大的版本,由Noyce拿著:

注意這些第一批芯片僅包含約60個晶體管。目前的芯片可以在同一微芯片上刻有數十億個晶體管,而且尺寸更小。這裡有一個集成電路暴露後的樣子:

而,參考下來看,它大約這麼大:

這就是為什麼現在您可以擁有一台隱藏在智能手機中的完整計算機的原因之一。正如您所想像的,一台現代筆記本電腦或機架式服務器的尺寸可以更有效地組合更多這些元件。因此,AI 的興起。
再多一個縮寫:什麼是 FPGA?
到目前為止,我已經描述了晶片上固定的物理點,但晶片性能也受軟體影響。軟體代表了所有這些東西如何協同工作的邏輯和指令。所以,當你製造晶片時,你有兩個選擇:你要麼知道你要運行什麼軟體,並創建一個支持該軟體的定制晶片,要麼你得到一個可以根據需求重新編程的空白晶片。
第一種方法稱為特定應用集成電路(ASIC)。然而,就像製造業中的任何專有建造一樣,你需要大規模生產它們才能盈利,而且生產速度較慢。CPU 和 GPU 通常都在這種硬蝕刻的晶片上運行。
可重新編程的晶片被稱為現場可編程門陣列(FPGA)。它們靈活,並為開發者提供各種標準接口。這意味著它們對 AI 應用特別有價值,尤其是深度學習算法——隨著技術的快速發展,FPGA 可以在同一晶片上持續重新編程多種功能,這讓開發者可以快速測試、迭代和將其推向市場。這種靈活性最顯著的地方在於你還可以重新編程輸入/輸出(IO)接口等內容,所以你可以減少延遲並克服瓶頸。因此,人們經常會比較整個基於 ASIC 的處理器類別(CPU、GPU、NPU、TPU)與 FPGA 的效能,這當然也導致了混合解決方案的出現。
總結:目前晶片技術的演進仍在加速進行中
材料科學和微晶片構造的改進為 AI 所需的處理能力奠定了基礎,而業界的大玩家(台積電, Nvidia、Intel、Google、Microsoft 等)已經利用這些晶片創造了專門的處理器。
同時,軟體允許許多處理核心被網絡化,以控制和分配處理負載以提高速度。所有這些都導致了專門晶片的興起,滿足了 AI 的巨大需求。
希望你對各種晶片組有了更好的了解,包括它們如何工作以及它們之間的區別。還有問題嗎?請在評論中告訴我們。