CPU、GPU、NPU 的差異:設計理念、運算單元、資料型態、能源效率比較

CPU 是可以執行任何工作的通用處理器,以少數複雜的核心盡快完成單一處理。GPU 以大量運算單元平行處理大量資料,廣泛用於繪圖與 AI 訓練等平行運算。NPU 是專門針對佔神經網路運算大部分的矩陣乘積累加運算的專用電路,排列大量 INT8 等低精度的運算單元,並在晶片內的記憶體中重複利用資料,以非常高的能源效率進行推論。但相對地,不擅長處理所支援以外的運算。

項目CPUGPUNPU
設計理念通用、低延遲。盡可能快速完成單一處理高吞吐量。集中處理大量平行運算專門針對神經網路運算(主要是推論),提高每瓦效能
運算單元的組成數個至數百個複雜的核心。每個核心配有 SIMD 運算單元數千個簡單的運算單元。許多也具備矩陣運算單元大型乘積累加運算單元陣列(如脈動陣列),以及用於激活函數等的向量運算單元
控制方式每道指令都進行分支預測與推測執行(亂序執行)切換大量執行緒以隱藏記憶體的等待時間多數依照編譯器事先決定的資料流運作,逐指令的控制很少
擅長的處理分支多的處理、作業系統、應用程式的邏輯繪圖、AI 的訓練與推論、科學計算以卷積與矩陣乘積為主的 AI 推論
記憶體大型快取與 DDR 等主記憶體GDDR 或 HBM 等高頻寬記憶體在晶片內的 SRAM 緩衝區重複利用權重與中間資料。內建於 SoC 時與 CPU 共用主記憶體
主要資料型態以 FP64、FP32 與整數為主,幾乎都能處理以 FP32、FP16、BF16 為主。訓練用途也有 FP8 等以 INT8、INT4、FP16 等低精度為主
效能的表示方式時脈頻率、核心數、IPCFLOPS(TFLOPS 等)TOPS(多為以 INT8 計算的理論最大值)
AI 推論的能源效率低高最高。有時比 CPU 高出 1 個數量級以上
彈性最高。任何程式都能執行高。只要是可平行化的處理就能廣泛使用低。不支援的運算會退回 CPU 或 GPU 執行
程式設計一般的程式語言與編譯器以 GPU 專用的平行程式設計模型撰寫核心(kernel)將訓練好的模型以 AI 編譯器或推論執行環境轉換後執行。很少直接撰寫程式
配置的位置所有電腦獨立顯示卡,或內建於 SoC多內建於智慧型手機或個人電腦的 SoC。也有資料中心用的專用晶片

數值為具代表性的大致參考值,會因世代或產品而異。

適用於什麼情況

CPU
分支多、循序的處理,以及整個系統的控制。也用於執行小型模型或 NPU 不支援的運算。
GPU
AI 訓練、大型模型的推論、繪圖、科學計算等,需要多種精度選擇與彈性的大規模平行運算。
NPU
想在智慧型手機或個人電腦上,持續執行照片修正、語音辨識、翻譯等推論而不耗損電池時。將模型量化後,以 NPU 擅長的 INT8 等格式執行。

常見問題

NPU 與 GPU 有什麼不同?

GPU 是能以程式彈性運用大量運算單元的通用平行處理器,也能用於繪圖與訓練。NPU 則聚焦於神經網路推論的乘積累加運算,以低精度運算單元與晶片內記憶體為核心打造,因此在支援的處理上能源效率高,但不擅長其他處理。

為什麼 NPU 的能源效率高?

因為 CPU 每道指令都要驅動分支預測、指令重排等大量電路,而 NPU 省去了其中大部分,並排列大量 INT8 等小型乘積累加運算單元。此外,還在晶片內的 SRAM 中重複利用權重與中間資料,減少耗能較多的外部記憶體存取。

NPU 也能進行訓練嗎?

智慧型手機或個人電腦的 NPU 主要是為推論而設計。訓練需要梯度計算與較高的精度,一般使用 GPU 或資料中心用的訓練加速器。

TOPS 數字越大的 NPU 就越快嗎?

不一定。TOPS 多半是以 INT8 等計算的理論最大值,有時也是以稀疏資料為前提的數值。實際速度會因記憶體頻寬、運算單元的使用率,以及模型的運算是否受 NPU 支援而有很大差異。

理解度檢測

智慧型手機SoC上搭載的NPU,在AI推論上比CPU電力效率高,其主要原因為下列何者?

  1. A因為NPU不使用電力而是以光來計算
  2. B因為排列了大量INT8等低精度的乘加運算單元,並省去了AI計算不需要的通用電路
  3. C因為NPU必定以比CPU更高的時脈運作
查看答案與解析

正確答案:B. 因為排列了大量INT8等低精度的乘加運算單元,並省去了AI計算不需要的通用電路

CPU為了能執行任何事,每個指令都要驅動分支預測與指令重新排序等許多電路。NPU專精於矩陣的乘加,排列大量低精度的運算單元,並設計成讓資料在晶片內重複使用,因此每次運算所需的能量小了好幾個數量級。相對地,它不適合AI以外的處理,或不支援的運算。

為了以高速且低功耗進行 AI 推論處理,而搭載於智慧型手機用 SoC 等的專用電路是下列何者?

  1. APLL(鎖相迴路)
  2. BADC(類比數位轉換器)
  3. CNPU(神經網路處理器)
查看答案與解析

正確答案:C. NPU(神經網路處理器)

NPU 是以 8 位元以下的整數等較低的精度,大量平行處理佔神經網路計算大部分的乘加運算之專用電路。其每單位功耗的效能比通用 CPU 高出一個數量級以上,可在智慧型手機內處理照片修正、語音辨識、翻譯等。效能以 TOPS(每秒兆次運算)表示,個人電腦用的 SoC 也日益普遍地搭載。

在 AI 用加速器等中,將多個乘加運算單元排列成格狀,讓資料依序流向相鄰運算單元的同時計算矩陣乘積的架構是下列何者?

  1. A脈動陣列(systolic array)
  2. B交叉開關(crossbar switch)
  3. C環形緩衝區(ring buffer)
查看答案與解析

正確答案:A. 脈動陣列(systolic array)

脈動陣列是將乘加運算單元(MAC)以二維方式排列,並讓資料規律地傳送到相鄰運算單元的同時進行計算的架構,其名稱源自心臟收縮(systole)將血液送出的比喻。讀入一次的資料可由多個運算單元重複使用,因此能減少對記憶體的存取,有效率地進行矩陣運算。Google 的 TPU 配備了 128×128 等大型陣列。

  1. AI加速器所使用的脈動陣列(systolic array)能有效率地計算矩陣相乘,其主要原因為下列何者?
  2. 在AI推論中,將權重從FP32轉換(量化)為INT8的主要優點為下列何者?
  3. 關於AI加速器效能所標示的「○○ TOPS」這個數值,應注意的地方下列何者正確?

前往AI硬體與軟體堆疊的練習題

相關名詞的解說

NPU(神經網路處理單元)
以高速且低消耗功率執行 AI 神經網路推論處理的專用電路。搭載於智慧型手機與個人電腦的 SoC。
GPU
為 Graphics Processing Unit 的縮寫。擁有大量簡單運算單元,平行處理大量資料的處理器。除影像處理外,也廣泛用於 AI 的訓練與推論。
脈動陣列
將許多乘加運算單元排成格狀,讓資料依序流向相鄰的運算單元,同時計算矩陣乘積的架構。用於 AI 加速器。
INT8
8位元的有號整數(−128〜127)。在AI推論中,將權重或激活值乘上縮放係數轉換(量化)為INT8,可大幅減少計算與記憶體,並以整數的小型電路高速處理。
TOPS(每秒兆次運算)
以兆(tera)為單位表示每秒運算次數的 AI 加速器效能指標。多半是以低精度計算的理論最大值。

相關的比較