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 次訓練要讓大量晶片長時間運作,消耗大量電力每次雖小,但每次使用都會執行,使用量大時總量會變大

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

適用於什麼情況

訓練
建立新的模型時,或以自己的資料對既有模型進行追加訓練(微調)時。
推論
在服務或產品中使用訓練好的模型時。影像辨識、文章生成、語音辨識等。
技巧
推論時,以量化、剪枝、知識蒸餾讓模型輕量化。訓練時,以混合精度或梯度檢查點節省記憶體與計算。

常見問題

為什麼訓練使用的記憶體比推論多得多?

因為訓練除了權重之外,還要保存同樣數量的梯度與最佳化器的狀態(Adam 為 2 個),並且為了反向傳播,還要保存前向傳播過程中的活化值。例如 70 億參數的模型,若全部以 FP32 保存,不含活化值約需 112 GB,而只以 FP16 權重進行推論則約 14 GB 即可。

推論時增大批次大小會怎樣?

一次讀入的權重可用於多個輸入的計算,能有效利用運算器,提高整體的吞吐量。另一方面,等待輸入湊齊的時間與每次處理的時間會增加,因此對 1 個請求的回應(延遲)會變慢,記憶體的使用量也會增加。

訓練與推論可以使用相同的硬體嗎?

可以。GPU 同時用於訓練與推論。不過,若只做推論,就不需要反向傳播與大容量記憶體,因此也會使用重視電力效率的硬體,例如排列大量 INT8 等低精度運算器的推論用加速器,或智慧型手機的 NPU。

訓練需要多少計算量?

對於 Transformer 模型,設參數數量為 N、用於訓練的詞元數為 D,整體的運算次數常以約 6ND 來近似。這是因為前向傳播每個詞元約需 2N,而反向傳播約需其 2 倍。

理解度檢測

關於神經網路的「訓練」與「推論」之差異,下列何者正確?

  1. A訓練是反覆進行順向傳播、反向傳播與權重更新來決定權重,推論則以固定的權重只做順向傳播來得出答案
  2. B訓練與推論都只做順向傳播
  3. C推論會更新權重,訓練不使用權重
查看答案與解析

正確答案:A. 訓練是反覆進行順向傳播、反向傳播與權重更新來決定權重,推論則以固定的權重只做順向傳播來得出答案

訓練時,會用大量資料反覆進行以下步驟:依序計算輸入以求得輸出(順向傳播)、從輸出端往輸入端回溯正確答案的誤差以求出各權重的梯度(反向傳播),再依梯度一點一點地修正權重。推論則是使用訓練所決定的權重,只做順向傳播。反向傳播所需的計算量約為順向傳播的2倍,而且還要保存中間結果,因此訓練是比推論沉重許多的處理。

下列何者「不是」訓練所需記憶體遠大於同一模型推論的原因?

  1. A因為訓練時的權重數量會變成推論的好幾倍
  2. B因為反向傳播需要用到順向傳播的中間結果(啟動值),所以必須保存下來
  3. C因為必須持有與權重同樣數量的梯度,以及優化器的狀態
查看答案與解析

正確答案:A. 因為訓練時的權重數量會變成推論的好幾倍

模型的權重數量在訓練與推論時是相同的。然而訓練時,為了在反向傳播中計算梯度,必須在各層保存順向傳播的中間結果,也需要與權重同樣數量的梯度,以及Adam等優化器為每個權重所持有的值(兩個移動平均等)。因此訓練的記憶體是僅需權重的推論的好幾倍,訓練大型模型就需要多顆GPU。

以FP32(4位元組)持有權重、梯度與Adam的兩個狀態,來訓練參數量70億(7B)的模型。排除啟動值後,所需記憶體最接近下列何者?

  1. A約28 GB
  2. B約112 GB
  3. C約14 GB
查看答案與解析

正確答案:B. 約112 GB

每個參數需要權重4位元組、梯度4位元組、Adam的一階與二階移動平均各4位元組,合計16位元組。70億×16位元組=1120億位元組,約為112 GB,再加上啟動值的記憶體。這通常無法放進一張GPU的記憶體,因此會採用將優化器的狀態分散到多顆GPU上持有、以較低的精度持有等做法。

  1. 在推論中加大批次大小(一次處理的輸入數量),整體效率容易提升,其原因為下列何者?
  2. 在推論中將批次大小加得過大時的缺點,下列何者正確?
  3. 作為Transformer模型訓練所需運算數的參考,當參數量為N、訓練使用的token數為D時,常用的近似式為下列何者?

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

相關名詞的解說

AI 推論(AI inference)
使用由訓練決定的權重,只從輸入進行順向傳播以得出答案的 AI 處理。所需的運算與記憶體比訓練少。
反向傳播(Backpropagation)
在神經網路的訓練中,將輸出與正確答案的誤差從輸出側往輸入側回溯傳遞,求出各權重梯度的運算。
批次大小(Batch size)
一併處理的輸入數量。增大後可重複使用權重而提高效率,但回應的延遲與記憶體也會增加。
混合精度(Mixed precision)
針對運算的各個部分使用不同精度的數值。以 FP16 等進行乘法,以 FP32 進行累加,兼顧速度與精度。
梯度檢查點(Gradient checkpointing)
只保存順向傳播中途結果的一部分,在反向傳播需要時重新計算其餘部分,以增加運算換取減少記憶體的方法。

相關的比較