Amazon SageMaker AI で異種クラスターを使用してトレーニングジョブを設定する - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SageMaker AI で異種クラスターを使用してトレーニングジョブを設定する

このセクションでは、複数のインスタンスタイプで構成される異種クラスターを使用してトレーニングジョブを実行する方法について説明します。

開始する前に、次の点に注意してください。

  • すべてのインスタンスグループは同じ Docker イメージとトレーニングスクリプトを共有します。そのため、トレーニングスクリプトは、そのスクリプトがどのインスタンスグループに属しているかを検出し、それに応じて実行をフォークするように変更する必要があります。

  • 異種クラスター機能は、SageMaker AI ローカルモードと互換性がありません。

  • 異種クラスタートレーニングジョブの Amazon CloudWatch ログストリームは、インスタンスグループごとにグループ化されていません。どのノードがどのグループに属しているかをログから把握する必要があります。

オプション 1: SageMaker Python SDK を使用する

指示に従って、SageMaker Python SDK を使用して異種クラスターのインスタンスグループを設定します。

  1. 異種クラスターのインスタンスグループをトレーニングジョブ用に設定するには、sagemaker.instance_group.InstanceGroup クラスを使用します。各インスタンスグループのカスタム名、インスタンスタイプ、インスタンス数を指定できます。詳細については、SageMaker AI Python SDK ドキュメントの「sagemaker.instance_group.InstanceGroup」を参照してください。 SageMaker

    注記

    利用可能なインスタンスタイプと、異種クラスターで構成できるインスタンスグループの最大数の詳細については、「InstanceGroup」の API リファレンスをご覧ください。

    以下のコード例は、次の図のように instance_group_1 という名前の 2 つの ml.c5.18xlarge CPU 専用インスタンスと、instance_group_2 という名前の 1 つの ml.p3dn.24xlarge GPU インスタンスで構成される 2 つのインスタンスグループを設定する方法を示しています。

    SageMaker トレーニングジョブでデータを割り当てる方法の概念的な例。

    前の図は、データ前処理などの事前トレーニングプロセスを 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 )
  2. インスタンスグループオブジェクトを使用してトレーニング入力チャンネルを設定し、「sagemaker.inputs.TrainingInput」クラスの instance_group_names 引数を使用してインスタンスグループをチャンネルに割り当てます。instance_group_names 引数には、インスタンスグループ名の文字列のリストを使用できます。

    以下の例では、2 つのトレーニング入力チャンネルを設定し、前のステップの例で作成したインスタンスグループを割り当てる方法を示します。インスタンスグループの s3_data 引数に Amazon S3 バケットパスを指定することで、利用目的に応じたデータを処理を行うこともできます。

    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 の引数の詳細については、以下のリンクを参照してください。

  3. 次のコード例に示すように、 instance_groups引数を使用して SageMaker AI 推定器を設定します。instance_groups 引数には InstanceGroup オブジェクトのリストを使用できます。

    注記

    異種クラスター機能は、SageMaker AI PyTorch および TensorFlow フレームワーク推定器クラスを通じて使用できます。サポートされているフレームワークは PyTorch v1.10 以降と TensorFlow v2.6 以降です。使用可能なフレームワークコンテナ、フレームワークバージョン、Python バージョンの完全なリストについては、 AWS Deep Learning Container GitHub リポジトリのSageMaker AI Framework Containers」を参照してください。

    PyTorch
    from sagemaker.pytorch import PyTorch estimator = PyTorch( ... entry_point='my-training-script.py', framework_version='x.y.z', # 1.10.0 or later py_version='pyxy', job_name='my-training-job-with-heterogeneous-cluster', instance_groups=[instance_group_1, instance_group_2] )
    TensorFlow
    from sagemaker.tensorflow import TensorFlow estimator = TensorFlow( ... entry_point='my-training-script.py', framework_version='x.y.z', # 2.6.0 or later py_version='pyxy', job_name='my-training-job-with-heterogeneous-cluster', instance_groups=[instance_group_1, instance_group_2] )
    注記

    instance_type および 引instance_count数のペアと SageMaker AI 推定器クラスの instance_groups引数は相互に排他的です。同種クラスタートレーニングには、instance_typeinstance_count 引数のペアを使用します。異種クラスタートレーニングには、instance_groups を使用します。

    注記

    使用可能なフレームワークコンテナ、フレームワークバージョン、Python バージョンの完全なリストについては、 AWS Deep Learning Container GitHub リポジトリのSageMaker AI Framework Containers」を参照してください。

  4. インスタンスグループで設定したトレーニング入力チャネルで estimator.fit メソッドを設定し、トレーニングジョブを開始します。

    estimator.fit( inputs={ 'training': training_input_channel_1, 'dummy-input-channel': training_input_channel_2 } )

オプション 2: 詳細な設定が可能な SageMaker API を使用する

AWS Command Line Interface または を使用して AWS SDK for Python (Boto3) いて、異種クラスターでトレーニングジョブリクエストを送信するために低レベルの SageMaker APIs を使用する場合は、次の API リファレンスを参照してください。