本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon SageMaker 分散式資料平行程式庫常見問題
使用以下內容找到有關 SMDDP 庫的常見問題的答案。
問:使用程式庫時,如何管理 allreduce
支援 CPU 執行個體? 我是否必須建立異質 CPU-GPU 叢集,或是 SageMaker 服務是否會為使用 SMDDP 程式庫的工作建立額外的 C5?
SMDDP 程式庫僅支援 GPU 執行個體 (更具體而言),也就是搭載 NVIDIA A100 GPU 和 EFA 的 P4dE 執行個體。不會啟動額外的 C5 或 CPU 執行個體;如果您的 SageMaker訓練工作位於 8 節點 P4d 叢集上,則只會使用 8 ml.p4d.24xlarge
個執行個體。不會佈建其他執行個體。
問:我有一個需要 5 天的訓練任務,在具有一組超參數 H1 (學習速率、批次大小、最佳化工具等) 的單一 ml.p3.24xlarge
執行個體上執行。使用 SageMaker的數據並行庫和一個五次更大的集群是否足以實現大約五次加速? 還是在激活 SMDDP 庫後,我必須重新訪問其培訓超參數?
程式庫會變更總體批次大小。新的總體批次大小會隨著使用的訓練執行個體數量線性擴展。因此,必須變更超參數 (例如學習速率) 才能確保整合。
問:SMDDP 程式庫是否支援競價型?
是。您可以使用受管 Spot 訓練。您可以在 SageMaker 訓練工作中指定檢查點檔案的路徑。如同 在 TensorFlow 訓練指令碼中使用SMDDP程式庫 (已棄用) 和 在 PyTorch 訓練指令碼中使用SMDDP程式庫 的最後一個步驟中所述,您可以在其訓練指令碼中儲存並還原檢查點。
問:SMDDP 程式庫與單一主機、多裝置設定中是否相關?
該程式庫可用於單一主機多裝置訓練,但程式庫僅在多主機訓練中提供效能改進。
問:應該將訓練資料集儲存在哪裡?
訓練資料集可儲存在 Amazon S3 儲存貯體或 Amazon FSx 磁碟機。請參閱訓練工作的各種支援輸入檔案系統文件
問:使用 SMDDP 程式庫時,是否必須在 FSx 中為 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。如需 Deep Learning Containers 封裝之 SMDDP 程式庫版本的詳細資訊,請參閱 AWS 深度學習容器的版本說明。
問:程式庫是否支援 AMP?
是的,SMDDP 程式庫支援開箱即用的自動混合精確度 (AMP)。除了對訓練指令碼進行架構級修改之外,不需要額外的動作即可使用 AMP。如果漸層是 FP16, SageMaker 資料平行程式庫會在 FP16 中執行其AllReduce
作業。有關將 AMP API 實施到訓練指令碼的詳細資訊,請參閱以下資源:
-
架構- PyTorch
在 NVIDIA 深度學習效能說明文件中 -
架構- TensorFlow
在 NVIDIA 深度學習效能說明文件中 -
NVIDIA 開發人員文件中的 Automatic Mixed Precision for Deep Learning
-
在部落格中推出原生 PyTorch 自動混合精準度,以加快對 NVIDIA GPU 進行訓練
的PyTorch 速度 -
TensorFlow TensorFlow 文檔中的混合精度 API
問:如何識別分散式訓練任務是否因 I/O 瓶頸而減慢速度?
對於較大的叢集,訓練任務需要更多的 I/O 輸送量,因此訓練輸送量可能需要更長的時間 (更多週期) 才能提升到最大的效能。這表示 I/O 存在瓶頸,並且隨著節點擴展 (較高輸送量需求和更複雜的網路拓撲),更難以建立快取。如需有關監控 Amazon FSx 輸送量的詳細資訊 CloudWatch,請參閱 FSx for Lustre 使用者指南中的監控 FSx 是否有光澤。
問:執行具有資料平行處理的分散式訓練任務時,如何解決 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 程式庫 v1.4.0 及更新版本的中斷變更所致。您必須匯入程式庫的 PyTorch 用戶端smdistributed.dataparallel.torch.torch_smddp
,該用戶端會註冊smddp
為 PyTorch. 如需進一步了解,請參閱 在 PyTorch 訓練指令碼中使用SMDDP程式庫。
問:(對於 SMDDP 庫 v1.4.0 或更高版本),我想調用接口的集體原語。torch.distributed
smddp
後端支援哪些基本元素?
在第 1.4.0 版中,SMDDP 程式庫支援介面barrier
的all_reduce
broadcast
reduce
all_gather
、、和。torch.distributed
問:(適用於 SMDDP 程式庫 v1.4.0 或更新版本) 這個新的 API 是否可與其他自訂 DDP 類別或程式庫 (如 Apex DDP) 搭配使用?
SMDDP 程式庫會與使用這些模組的其他協力廠商分散式資料 parallel 程式庫和架構實作進行測試。torch.distribtued
只要 SMDDP 程式庫支援 SMDDP 程式庫支援自訂 DDP 類別所使用的集體作業,就可以使用自訂 DDP 類別。有關支援集合的清單,請參閱上述問題。如果您有這些使用案例並需要進一步 Support,請透過AWS 支援中心
問:SMDDP 程式庫是否支援 bring-your-own-container (BYOC) 選項? 如果有,我該如何透過編寫自訂 Dockerfile 來安裝程式褲,並執行分散式訓練任務?
如果您想要將 SMDDP 程式庫及其最小相依性整合到您自己的 Docker 容器中,BYOC 是正確的方法。您可以使用程式庫的二進位檔案建置自己的容器。建議的程序是使用程式庫及其相依性撰寫自訂 Docker 檔案、建立 Docker 容器、在 Amazon ECR 中託管,然後使用 ECR 映像 URI 啟動使用一般估算器類別的訓練任務。 SageMaker 如需有關如何在 SMDDP 程式庫中準備自訂 Docker 檔案以進行分散式訓練 SageMaker 的更多指示,請參閱。使用 SageMaker 分散式資料平行程式庫建立您自己的 Docker 容器