使用 TPU 配量進行訓練
TPU 的設計可擴充至 TPU Pod。TPU Pod 是由 TPU 裝置組成,並透過專用高速網路介面連線。TPU Pod 可讓您將處理負載分配至多個 TPU。每個 TPU 板都連線至以 CPU 為基礎的高效能主機,用於載入及預先處理資料等作業。如要充分運用大量 TPU,您必須調整多個訓練工作參數。
以下各節說明一些常見問題、模型中需要進行的變更,以及減少或避免 Pod 失敗的最佳做法。
針對批量訓練次數進行資源調度
如要在較大的 TPU 類型上實現線性擴展,請保持每個核心的批量大小相同。
舉例來說,如果您在 v6e-8 上使用 1024 的批次大小,請在 v6e-32 上使用 4096 (4 * 1024) 的批次大小。這樣就能充分利用 TPU 硬體。您可以使用較小的批次大小,但這樣做的話,訓練作業不會線性擴展。
部分模型會包含 train_steps 旗標,其中一個步驟對應處理單一批次的資料。增加批量大小時,請減少訓練步驟數量,確保訓練樣本總數維持不變。
舉例來說,如果 100 個步驟的批量為 1000,則訓練期間會處理 100,000 個樣本。如果現在有 4 個工作站,有效批次大小為 4000,則必須將步數調整為 25,才能處理相同的 100,000 個範例。如果模型使用 epochs 標記,則不需要調整步數。
較大的批次大小可能會改變模型的收斂行為,因此您可能也需要調整一些超參數,例如學習率。
在與 TPU Pod 相同的區域中使用區域型 Cloud Storage bucket
一般來說,TPU 訓練的最佳做法是使用相同區域的資源。使用 TPU Pod 時,資源區域尤其重要,因為 Cloud Storage bucket 和 TPU 位於同一區域時,資料傳輸速率會較高。
請務必使用與 TPU 位於相同區域的區域 Cloud Storage bucket,儲存訓練資料集和檢查點。
在 TPU Pod 上開發時的工作流程最佳做法
開發新的 TPU 工作負載時,通常最好先從最小的 TPU 開始開發,然後逐步疊代至較大的 TPU 大小。請先使用小型 TPU 版本 (例如 v6e-8)。
- 測試工作負載是否符合預期行為
- 使用效能工具測試及驗證效能
工作負載運作正常並達到效能目標後,請擴大使用較大的 TPU 類型,例如 v6e-32。逐步且反覆增加 TPU 大小,同時驗證擴充性 (功能和效能),直到達到所需的 TPU 大小為止。