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

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

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

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

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

SMDDP 程式庫僅支援具有 NVIDIA A100 GPUs 和 EFA 的 GPU 執行個體,更具體地說是 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 v1.6.0 或更新版本,以及 TensorFlow v2.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 錯誤。

如果您在呼叫 ValueError: Invalid backend: 'smddp'時遇到錯誤訊息init_process_group,這是因為 SMDDP 程式庫 1.4.0 版和更新版本中的重大變更。您必須匯入程式庫的 PyTorch 用戶端 (smdistributed.dataparallel.torch.torch_smddp),該用戶端會註冊 smddp 為 PyTorch 後端。如需進一步了解,請參閱 在 PyTorch 訓練指令碼中使用 SMDDP 程式庫

問:(對於 SMDDP 程式庫 1.4.0 版或更新版本) 我想呼叫torch.distributed界面的集體基本概念。smddp 後端支援哪些基本元素?

在 1.4.0 版中,SMDDP broadcast程式庫支援 torch.distributed all_reduce界面barrierreduceall_gather、、 和 。

問:(對於 SMDDP 程式庫 1.4.0 版或更新版本) 此新的 API 是否適用於其他自訂 DDP 類別或程式庫,例如 Apex DDP?

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

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

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