張量處理單元 是什麼?

TPU:張量處理單元 的完整解釋

張量處理單元(TPU)是Google專為加速機器學習工作負載而設計的客製化硬體加速器,尤其擅長處理張量運算,是深度學習的利器。

容易混淆

張量處理單元 vs CPU CPU 是通用處理器 TPU 是偏向張量和矩陣運算的專用加速器 最關鍵的區別:通用和專用

張量處理單元 vs GPU GPU 也很擅長平行運算 TPU 更偏向某些深度學習工作負載 最關鍵的區別:同樣是加速器,但設計重點不同

張量處理單元 vs 雲端服務 TPU 是硬體 雲端服務是提供硬體的使用方式 最關鍵的區別:晶片和平台不要混淆

記住這句就好

大量矩陣運算,交給專門的加速晶片最划算。

實際案例

大型訓練 模型訓練要跑數十億次乘加運算時,用 TPU 可以把時間壓得更短

線上推論 在服務流量很高的時候,TPU 能幫忙把每秒處理量撐起來

算法與應用

| 矩陣乘法 | 深度學習最常見的核心運算 | TPU 對這類工作很友善 | | 平行運算 | 同時處理很多數值 | 效能高但要配合模型設計 | | 能耗控制 | 以更低功耗完成運算 | 大規模部署時很重要 | | 工作負載 | 不是每種程式都適合 | 要看模型和資料流形態 |

TPU 的原理:脈動陣列

TPU 是 Google 為神經網路運算設計的專用晶片(ASIC),全名 Tensor Processing Unit,中文譯作張量處理單元。

它跟 CPU、GPU 最大的差別在於矩陣運算單元的結構,用的是脈動陣列(systolic array)。

一般處理器做矩陣乘法,每算一次都要從記憶體讀取運算元、算完再寫回去。神經網路的矩陣非常大,這些搬運動作會變成瓶頸,實際上晶片大部分時間是在等資料,不是在算。

脈動陣列的做法是把大量乘加單元排成二維網格,資料從邊緣灌進去之後,像血液流過血管一樣在單元之間依序傳遞,每經過一個單元就做一次乘加,中間結果直接傳給隔壁而不回寫記憶體。

結果是同一筆資料讀進來之後被重複利用很多次,記憶體存取次數大幅下降。這就是 TPU 在矩陣乘法這件事上能量效比很高的原因。

TPU 跟 GPU 怎麼選

項目 GPU TPU
定位 通用平行運算 為張量運算設計的專用晶片
彈性 高,什麼運算都能寫 低,非標準運算不一定跑得好
生態 CUDA 生態成熟,工具最多 主要透過 JAX 與 TensorFlow,PyTorch 需經 XLA
取得方式 可自購、各家雲端都有 只在 Google Cloud 上租用
適合場景 研究、實驗、模型架構常變動 大規模穩定訓練、超大批次推論

判斷方式很直接:模型架構還在動、需要寫自訂運算,用 GPU;架構固定、要長時間大規模訓練或服務,而且已經在 Google Cloud 上,TPU 的成本效益通常更好。

需要注意的是實際效能高度依賴模型能不能被編譯器有效轉換。標準的 Transformer 或 CNN 在 TPU 上表現很好,但用了大量動態控制流或自訂 kernel 的模型可能完全發揮不出來,這種情況要先跑小規模實測,不能只看規格。

情境判斷

Q1(直覺題):你要把很多張圖片一起丟進模型做推論,TPU 有幫助嗎? → 有可能有幫助,尤其在批次大、矩陣運算多的情況下。

Q2(判斷題):你只是寫一個小型資料整理腳本,還需要 TPU 嗎? → 通常不需要,通用 CPU 就足夠。

相關術語

常見問題

TPU 一定比 GPU 快嗎?

不一定,要看模型類型、框架支援和工作負載。

TPU 可以拿來做訓練嗎?

可以,而且很多大模型訓練本來就會用它。

TPU 和量子電腦有關嗎?

沒有,TPU 是傳統運算的專用加速硬體。