Amazon SageMaker AI 分散式資料平行化程式庫常見問答集 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon SageMaker AI 分散式資料平行化程式庫常見問答集

使用下列項目來尋找有關 SMDDP 程式庫常見問題的答案。

問:使用程式庫時,如何管理 allreduce 支援 CPU 執行個體? 我是否必須建立異質 CPU-GPU 叢集,或 SageMaker AI 服務是否會為使用 SMDDP 程式庫的任務建立額外的 C5?

SMDDP 程式庫僅支援 GPU 執行個體,更具體地說,是具有 NVIDIA A100 GPU 和 EFA 的 P4d 和 P4de 執行個體。不會啟動其他 C5 或 CPU 執行個體;如果您的 SageMaker AI 訓練任務是 8個節點 P4d 叢集,則僅會使用 8 個 ml.p4d.24xlarge 執行個體。不會佈建其他執行個體。

問:我有一個需要 5 天的訓練任務,在具有一組超參數 H1 (學習速率、批次大小、最佳化工具等) 的單一 ml.p3.24xlarge 執行個體上執行。使用 SageMaker AI 的資料平行處理程式庫和五倍大的叢集,是否足以達到大約五倍的加速? 還是我在啟動 SMDDP 程式庫後重新檢視其訓練超參數?

程式庫會變更總體批次大小。新的總體批次大小會隨著使用的訓練執行個體數量線性擴展。因此,必須變更超參數 (例如學習速率) 才能確保整合。

問:SMDDP 程式庫是否支援 Spot?

是。您可以使用受管 Spot 訓練。您可以在 SageMaker 訓練任務中指定檢查點檔案的路徑。如同在 TensorFlow 訓練指令碼中使用 SMDDP 程式庫 (已棄用)在 PyTorch 訓練指令碼中使用 SMDDP 程式庫的最後一個步驟中所述,您可以在其訓練指令碼中儲存並還原檢查點。

問:SMDDP 程式庫是否在單一主機、多裝置設定中相關?

該程式庫可用於單一主機多裝置訓練,但程式庫僅在多主機訓練中提供效能改進。

問:應該將訓練資料集儲存在哪裡?

訓練資料集可儲存在 Amazon S3 儲存貯體或 Amazon FSx 磁碟機。請參閱訓練工作的各種支援輸入檔案系統文件

問:使用 SMDDP 程式庫時,是否必須在 FSx for Lustre 中提供訓練資料? 是否可以使用 Amazon EFS 和 Amazon S3 嗎?

我們通常建議您使用 Amazon FSx,因為其延遲較低且輸送量較高。如果您願意,您可以使用 Amazon EFS 或 Amazon S3。

問:程式庫是否可與 CPU 節點搭配使用?

否。若要尋找 SMDDP 程式庫支援的執行個體類型,請參閱 支援的執行個體類型

問:SMDDP 程式庫目前在啟動時支援哪些架構和架構版本?

SMDDP 程式庫目前支援 PyTorch 1.6.0 版或更新版本,以及 TensorFlow 2.3.0 版或更新版本。不支援 TensorFlow 1.x。有關 AWS 深度學習容器中封裝的 SMDDP 程式庫版本,請參閱深度學習容器版本備註

問:程式庫是否支援 AMP?

是,SMDDP 程式庫支援開箱即用的自動混合精確度 (AMP)。除了對訓練指令碼進行架構級修改之外,不需要額外的動作即可使用 AMP。如果梯度是 FP16,SageMaker AI 資料平行化程式庫會以 FP16 執行其 AllReduce 操作。有關將 AMP API 實施到訓練腳本的詳細資訊,請參閱以下資源:

問:如何識別分散式訓練任務是否因 I/O 瓶頸而減慢速度?

對於較大的叢集,訓練任務需要更多的 I/O 輸送量,因此訓練輸送量可能需要更長的時間 (更多週期) 才能提升到最大的效能。這表示 I/O 存在瓶頸,並且隨著節點擴展 (較高輸送量需求和更複雜的網路拓撲),更難以建立快取。有關在雲手錶上監控亞馬遜 FSX 吞吐量的更多資訊,請參閱監控 FSx for LustreFSx for Lustre 用戶指南

問:執行具有資料平行處理的分散式訓練任務時,如何解決 I/O 瓶頸?

如果您使用的是 Amazon S3,我們強烈建議您使用 Amazon FSx 做為資料管道。如果您已經在使用 Amazon FSx,但仍有 I/O 瓶頸問題,您可能已經設定 Amazon FSx 檔案系統為低 I/O 輸送量和小儲存容量。有關如何估計和選擇正確的 I/O 吞吐量容量大小的詳細資訊,請參閱使用 Amazon FSx 並設定最佳儲存和輸送容量

問:(適用於程式庫 1.4.0 版或更新版本) 如何解決初始化程序群組時的 Invalid backend 錯誤。

如果在呼叫 init_process_group 時遇到錯誤訊息 ValueError: Invalid backend: 'smddp',這是由於 SMDDP 程式庫 1.4.0 版及更新版本中的突破性變更。您必須匯入程式庫的 PyTorch 用戶端 (smdistributed.dataparallel.torch.torch_smddp),該用戶端會註冊 smddp 為 PyTorch 後端。如需詳細資訊,請參閱 在 PyTorch 訓練指令碼中使用 SMDDP 程式庫

問:(適用於 SMDDP 程式庫 1.4.0 版或更新版本),我想呼叫 torch.distributed 介面的集合基本元素。smddp 後端支援哪些基本元素?

在 v1.4.0 中,SMDDP 程式庫支援 torch.distributed 介面的 all_reducebroadcastreduceall_gatherbarrier

問:(適用於 SMDDP 程式庫 1.4.0 版或更新版本) 這個新的 API 是否可與其他自訂 DDP 類別或程式庫 (如 Apex DDP) 搭配使用?

SMDDP 程式庫會與使用 torch.distribtued 模組的其他第三方分散式資料平行程式庫和架構實作一起測試。只要 SMDDP 程式庫支援自訂 DDP 類別所使用的集合操作,就可以將 SMDDP 程式庫搭配自訂 DDP 類別一起使用。有關支援集合的清單,請參閱上述問題。如果您有這些使用案例並需要進一步的支援,請透過AWS 支援中心Amazon SageMaker AI 的 AWS 開發人員論壇與 SageMaker AI 團隊聯絡。

問:SMDDP 程式庫是否支援自攜容器 (BYOC) 選項? 如果有,我該如何透過編寫自訂 Dockerfile 來安裝程式褲,並執行分散式訓練任務?

如果您想要將 SMDDP 程式庫及其最小相依性整合到您自己的 Docker 容器,BYOC 是正確方法。您可以使用程式庫的二進位檔案建置自己的容器。建議的程序是使用程式庫及其相依性編寫自訂 Dockerfile、建置 Docker 容器、在 Amazon ECR 中託管,然後使用 ECR 映像 URI 啟動使用 SageMaker AI 一般估算器類別的訓練任務。如需有關如何使用 SMDDP 程式庫,在 SageMaker AI 中為分散式訓練準備自訂 Dockerfile 的更多指示,請參閱使用 SageMaker AI 分散式資料平行程式庫建立您自己的 Docker 容器