AI 訓練與推論的差異:計算、記憶體、數值格式、批次大小、硬體比較
訓練是將資料進行前向傳播以求出損失,以反向傳播計算梯度,再以最佳化器更新權重,大量重複這些步驟來決定模型權重的處理。推論則是以固定的權重只進行前向傳播,對新的輸入給出答案的處理。訓練除了權重之外,還要保存梯度、最佳化器的狀態,以及反向傳播所需的活化值,因此比同一模型的推論需要多得多的記憶體與計算。推論每次的計算量雖小,但每次使用都會執行,且重視回應速度。
| 項目 | 訓練 | 推論 |
|---|---|---|
| 目的 | 從資料決定模型的權重 | 以固定的權重,對新的輸入給出答案 |
| 計算內容 | 重複 前向傳播 → 計算損失 → 以反向傳播計算梯度 → 以最佳化器更新權重 | 只有前向傳播 |
| 計算量的大致範圍 | 每個輸入約為前向傳播的 3 倍(反向傳播約為前向傳播的 2 倍)。Transformer 整體約為 6 × 參數數量 × 詞元數 | 參數數量為 N 的模型,每個詞元約 2N |
| 所需記憶體 | 權重、梯度、最佳化器的狀態(Adam 為 2 個)、反向傳播所需的活化值。全部以 FP32 保存時,每個參數 16 位元組,再加上活化值 | 權重與計算中的活化值(大型語言模型還有 KV 快取)。FP16 時每個參數 2 位元組 |
| 數值格式 | BF16 或 FP16 的混合精度(主權重為 FP32) | FP16 或 BF16,或量化為 INT8、INT4 等的格式 |
| 批次大小 | 整合成大批次,提高運算器的使用率 | 要求快速回應時較小(有時為 1)。伺服器會整合多個請求以提高效率 |
| 重視的效能 | 吞吐量(完成訓練所需的時間、運算器的使用率) | 兼顧延遲(對 1 個請求的回應時間)與吞吐量、每次處理的成本 |
| 硬體 | 以高速網路連接大量具備大容量 HBM 與高運算效能的 GPU 或加速器 | 範圍很廣,從資料中心的 GPU、推論用加速器,到智慧型手機的 NPU 與微控制器 |
| 平行化 | 資料平行、張量平行、管線平行。以 All-Reduce 彙整梯度 | 平行處理多個請求。大型模型以張量平行等方式分散到多顆晶片 |
| 能源 | 1 次訓練要讓大量晶片長時間運作,消耗大量電力 | 每次雖小,但每次使用都會執行,使用量大時總量會變大 |
數值為具代表性的大致參考值,會因世代或產品而異。