張量處理單元 是什麼?
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 是傳統運算的專用加速硬體。