What is Batch Size(批次大小)?

    在模型訓練的一次前向-反向傳遞中同時處理的訓練範例數量,影響記憶體使用、訓練速度和收斂行為。

    Definition

    批次大小是一個基本的訓練超參數,決定訓練資料集中有多少範例在訓練迴圈的單次迭代中一起處理。模型處理完一個批次後,計算批次中所有範例的平均損失,並用此計算梯度來更新模型權重。較大的批次大小提供更穩定的梯度估計(因為平均值是在更多範例上計算的),但相應需要更多的 GPU 記憶體。

    在 LLM 微調中,批次大小尤其受到 GPU 記憶體的限制。7B 模型的單個訓練範例可能消耗數 GB 的 VRAM 用於激活值、梯度和優化器狀態。因此,微調的實際批次大小通常很小——通常每個 GPU 1 到 8 個範例。為了在不超過記憶體限制的情況下獲得較大有效批次大小的穩定性優勢,從業者使用梯度累積:順序處理多個小批次並在執行單次權重更新之前累積其梯度。透過以梯度累積處理 4 個大小為 8 的批次,可以達到 32 的有效批次大小。

    批次大小和學習率之間的關係已被充分確立:較大的有效批次大小通常需要較高的學習率來維持訓練動態,遵循線性縮放規則。這意味著在調整批次大小時,學習率通常需要相應地調整以維持穩定的收斂。這兩個超參數之間的交互作用是微調配置中的關鍵考量之一。

    Why It Matters

    批次大小直接影響訓練的三個關鍵面向:記憶體消耗(較大批次需要更多 VRAM)、訓練速度(較大批次更有效地利用 GPU 並行性)以及收斂行為(較大批次提供更平滑的梯度估計,但可能收斂到泛化較差的尖銳極小值)。對於使用有限 GPU 資源的團隊——這包括大多數微調從業者——理解批次大小的權衡對於在硬體限制內最大化結果品質至關重要。錯誤的批次大小選擇可能導致記憶體不足錯誤、浪費訓練時間或次優的模型品質。

    How It Works

    在每個訓練步驟中,資料載入器從訓練資料集中選擇 batch_size 個範例。這些範例被分詞、填充到相同長度並堆疊成張量。模型對整個批次同時執行前向傳遞(利用 GPU 並行性),一次計算所有範例的預測。損失函數計算每個範例的誤差並取平均。反向傳遞計算此平均損失相對於所有可訓練參數的梯度。當使用梯度累積時,這些梯度會在 N 個步驟中加到一個運行緩衝區中,然後優化器使用累積的梯度來更新權重。有效批次大小即為 batch_size × gradient_accumulation_steps。

    Example Use Case

    一個團隊在 NVIDIA A100 40GB GPU 上微調 13B 模型,發現批次大小 4 會導致記憶體不足錯誤。他們將每設備批次大小減少到 1,並設置梯度累積步驟為 8,在 VRAM 限制內達到有效批次大小 8。他們將學習率從 2e-5 調整到 1e-5,以考慮與原始計劃相比較小的有效批次大小。訓練成功完成,模型在 3 個 epoch 後達到了目標驗證準確度。

    Key Takeaways

    • 批次大小決定每個訓練步驟處理多少範例。
    • 較大的批次提供更穩定的梯度,但需要更多 GPU 記憶體。
    • 梯度累積在記憶體限制內模擬較大的批次。
    • 批次大小和學習率應一起調整(線性縮放規則)。
    • 實際微調批次大小通常為每 GPU 1-8 個,配合梯度累積達到更大的有效大小。

    How Ertas Helps

    Ertas Studio 根據所選模型大小和 Ertas Cloud 中可用的 GPU 資源自動配置批次大小和梯度累積。需要手動控制的使用者可以在進階超參數面板中調整這兩個參數。平台透過在訓練開始前估算 VRAM 需求並建議適當的批次大小配置來防止記憶體不足錯誤,使沒有深厚硬體知識的使用者也能可靠地訓練模型。

    Related Resources

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.