プライベート Docker レジストリ内のイメージにアクセスするようにトレーニングジョブを適応 - Amazon SageMaker

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

プライベート Docker レジストリ内のイメージにアクセスするようにトレーニングジョブを適応

Amazon Elastic Container Registry (Amazon ECR) の代わりにプライベート Docker レジストリを使用して、トレーニング用に SageMakerイメージをホストできます。以下の手順では、Docker レジストリの作成、Virtual Private Cloud (VPC) とトレーニングジョブの設定、イメージの保存、プライベート Docker レジストリのトレーニングイメージ SageMaker へのアクセス許可の付与を行う方法を示します。これらの手順では、 SageMaker トレーニングジョブの認証が必要な Docker レジストリの使用方法も示します。

プライベート Docker レジストリでのイメージの作成と保存

プライベート Docker レジストリを作成してイメージを保存します。レジストリは次の条件を満たす必要があります。

  • Docker レジストリ HTTP API プロトコルを使用します

  • CreateTrainingJob API の VpcConfigパラメータで指定された同じ VPC からアクセス可能である。トレーニングジョブの作成時に VpcConfig を入力します。

  • 既知の公開認証機関 (CA) からの TLS 証明書で保護されています。

Docker レジストリの作成の詳細については、「Deploy a registry server」を参照してください。

VPC と SageMaker トレーニングジョブを設定する

SageMaker は VPC 内のネットワーク接続を使用して、Docker レジストリ内のイメージにアクセスします。Docker レジストリ内のイメージをトレーニングに使用するには、アカウントの Amazon VPC からレジストリにアクセス可能である必要があります。詳細については、「トレーニングに認証が必要な Docker レジストリの使用」を参照してください。

また、Docker レジストリがアクセスできるのと同じ VPC に接続するようにトレーニングジョブを設定する必要があります。詳細については、「Configure a Training Job for Amazon VPC Access」を参照してください。

プライベート Docker レジストリのイメージを使用したトレーニングジョブの作成

プライベート Docker レジストリのイメージをトレーニングに使用するには、以下のガイドを使用してイメージの設定、トレーニングジョブの設定と作成を行います。次のコード例では、 AWS SDK for Python (Boto3) クライアントを使用しています。

  1. トレーニングイメージ設定オブジェクトを作成し、以下のように TrainingRepositoryAccessMode フィールドに Vpc を入力します。

    training_image_config = { 'TrainingRepositoryAccessMode': 'Vpc' }
    注記

    プライベート Docker レジストリに認証が必要な場合は、TrainingRepositoryAuthConfig オブジェクトを、トレーニングイメージ設定オブジェクトに追加する必要があります。また、 TrainingRepositoryAuthConfig オブジェクトの TrainingRepositoryCredentialsProviderArnフィールドを使用して、 へのアクセス SageMaker認証情報を提供する AWS Lambda 関数の Amazon リソースネーム (ARN) を指定する必要があります。詳細については、以下のコード構造例を参照してください。

    training_image_config = { 'TrainingRepositoryAccessMode': 'Vpc', 'TrainingRepositoryAuthConfig': { 'TrainingRepositoryCredentialsProviderArn': 'arn:aws:lambda:Region:Acct:function:FunctionName' } }

    認証を提供するために Lambda 関数を作成する方法については、「トレーニングに認証が必要な Docker レジストリの使用」を参照してください。

  2. Boto3 クライアントを使用してトレーニングジョブを作成し、正しい設定を create_training_job API に渡します。以下の手順は、コンポーネントの設定方法とトレーニングジョブの作成方法を示しています。

    1. create_training_job に渡す AlgorithmSpecification オブジェクトを作成します。次のコード例に示すように、前のステップで作成したトレーニングイメージ設定オブジェクトを使用します。

      algorithm_specification = { 'TrainingImage': 'myteam.myorg.com/docker-local/my-training-image:<IMAGE-TAG>', 'TrainingImageConfig': training_image_config, 'TrainingInputMode': 'File' }
      注記

      更新バージョンではなく固定バージョンのイメージを使用するには、名前やタグではなく、イメージのダイジェストを参照します。

    2. 次のコード例に示すように、create_training_job に渡すトレーニングジョブの名前とロールを指定します。

      training_job_name = 'private-registry-job' execution_role_arn = 'arn:aws:iam::123456789012:role/SageMakerExecutionRole'
    3. トレーニングジョブの VPC 設定のセキュリティグループとサブネットを指定します。プライベート Docker レジストリは、以下のコード例に示すように、指定したセキュリティグループからのインバウンドトラフィックを許可する必要があります。

      vpc_config = { 'SecurityGroupIds': ['sg-0123456789abcdef0'], 'Subnets': ['subnet-0123456789abcdef0','subnet-0123456789abcdef1'] }
      注記

      サブネットがプライベート Docker レジストリと同じ VPC 内にない場合は、VPC ピアリングを使用して 2 VPCs . SeeConnect VPCs 間のネットワーク接続を設定する必要があります。 https://docs.aws.amazon.com/vpc/latest/userguide/vpc-peering.html

    4. 次のコード例に示すように、トレーニングに使用する機械学習コンピューティングインスタンスやストレージボリュームなどのリソース設定を指定します。

      resource_config = { 'InstanceType': 'ml.m4.xlarge', 'InstanceCount': 1, 'VolumeSizeInGB': 10, }
    5. 次のコード例に示すように、入力および出力データ設定、トレーニングデータセットの保存場所、モデルアーティファクトの保存場所を指定します。

      input_data_config = [ { "ChannelName": "training", "DataSource": { "S3DataSource": { "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3Uri": "s3://your-training-data-bucket/training-data-folder" } } } ] output_data_config = { 'S3OutputPath': 's3://your-output-data-bucket/model-folder' }
    6. 次のコード例に示すように、モデルトレーニングジョブを実行できる最大秒数を指定します。

      stopping_condition = { 'MaxRuntimeInSeconds': 1800 }
    7. 最後に、次のコード例に示すように、前のステップで指定したパラメータを使用してトレーニングジョブを作成します。

      import boto3 sm = boto3.client('sagemaker') try: resp = sm.create_training_job( TrainingJobName=training_job_name, AlgorithmSpecification=algorithm_specification, RoleArn=execution_role_arn, InputDataConfig=input_data_config, OutputDataConfig=output_data_config, ResourceConfig=resource_config, VpcConfig=vpc_config, StoppingCondition=stopping_condition ) except Exception as e: print(f'error calling CreateTrainingJob operation: {e}') else: print(resp)