本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon SageMaker AI 中使用異質叢集設定訓練任務
本節提供如何使用包含多個執行個體類型的異質叢集來執行訓練任務之說明。
開始之前,請注意下列事項。
-
所有執行個體群組都共用相同的 Docker 映像和訓練指令碼。因此,您應該修改訓練指令碼,以偵測它所屬的執行個體群組,並相應地進行 fork 執行。
-
異質叢集功能與 SageMaker AI 本機模式不相容。
-
異質叢集訓練任務的 Amazon CloudWatch 日誌串流不會依執行個體群組分組。您需要從日誌中找出哪些節點在哪個群組中。
選項 1:使用 SageMaker Python SDK
請遵循有關如何使用 SageMaker Python SDK 為異質叢集設定執行個體群組的指示。
-
若要針對訓練任務配置異質叢集的執行個體群組,請使用
sagemaker.instance_group.InstanceGroup類別。您可以為每個執行個體群組指定自訂名稱、執行個體類型,以及每個執行個體群組的執行個體數目。如需詳細資訊,請參閱 SageMaker AI Python SDK 文件中的 sagemaker.instance_group.InstanceGroup。 SageMaker 注意
如需有關可用執行個體類型和可在異質叢集中設定的執行個體數目上限等詳細資訊,請參閱 InstanceGroup API 參考資料。
下列程式碼範例說明如何設定兩個執行個體群組,這兩個執行個體群組包含兩個名為
instance_group_1的ml.c5.18xlarge僅限 CPU 執行個體,以及一個名為instance_group_2的ml.p3dn.24xlargeGPU 執行個體,如下圖所示。
上圖顯示預先訓練程序的概念範例,例如資料預先處理,如何指派給 CPU 執行個體群組,並將預先處理的資料串流至 GPU 執行個體群組。
from sagemaker.instance_group import InstanceGroup instance_group_1 = InstanceGroup( "instance_group_1", "ml.c5.18xlarge",2) instance_group_2 = InstanceGroup( "instance_group_2", "ml.p3dn.24xlarge",1) -
使用執行個體群組物件,設定訓練輸入頻道,並透過 sagemaker.inputs.TrainingInput
的 instance_group_names引數,將執行個體群組指派給頻道。instance_group_names引數會接受執行個體群組名稱的字串清單。下列範例顯示如何設定兩個訓練輸入頻道,並指派在上一個步驟範例中建立的執行個體群組。您也可以指定 Amazon S3 儲存貯體的
s3_data引數路徑,讓執行個體群組為您的使用目的處理資料。from sagemaker.inputs import TrainingInput training_input_channel_1 = TrainingInput( s3_data_type='S3Prefix', # Available Options: S3Prefix | ManifestFile | AugmentedManifestFile s3_data='s3://your-training-data-storage/folder1', distribution='FullyReplicated', # Available Options: FullyReplicated | ShardedByS3Key input_mode='File', # Available Options: File | Pipe | FastFile instance_groups=["instance_group_1"] ) training_input_channel_2 = TrainingInput( s3_data_type='S3Prefix', s3_data='s3://your-training-data-storage/folder2', distribution='FullyReplicated', input_mode='File', instance_groups=["instance_group_2"] )如需
TrainingInput引數的詳細資訊,請參閱以下連結。-
SageMaker Python SDK 文件中的 sagemaker.inputs.TrainingInput
類別 -
SageMaker AI API 參考中的 S3DataSource API SageMaker
-
-
使用
instance_groups引數設定 SageMaker AI 估算器,如下列程式碼範例所示。instance_groups引數接受InstanceGroup物件的清單。注意
異質叢集功能可透過 SageMaker AI PyTorch
和 TensorFlow 架構估算器類別取得。系統支援的架構為 PyTorch v1.10 或較新版本,以及 TensorFlow v2.6 或較新版本。若要尋找可用架構容器、架構版本和 Python 版本的完整清單,請參閱 AWS 深度學習容器 GitHub 儲存庫中的 SageMaker AI Framework Containers 。 注意
SageMaker AI 估算器類別的 和
instance_typeinstance_count引數對和instance_groups引數是互斥的。對於同質叢集訓練,請使用instance_type和instance_count引數對。若要進行異質叢集訓練,請使用instance_groups。注意
若要尋找可用架構容器、架構版本和 Python 版本的完整清單,請參閱 AWS 深度學習容器 GitHub 儲存庫中的 SageMaker AI Framework Containers
。 -
使用執行個體群組配置的訓練輸入頻道來設定
estimator.fit方法,然後開始訓練任務。estimator.fit( inputs={ 'training':training_input_channel_1, 'dummy-input-channel':training_input_channel_2} )
選項 2:使用低階 SageMaker APIs
如果您使用 AWS Command Line Interface 或 適用於 Python (Boto3) 的 AWS SDK 並想要使用低階 SageMaker APIs 來提交具有異質叢集的訓練任務請求,請參閱下列 API 參考。