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

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

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

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

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

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

  • Docker レジストリHTTPAPIプロトコルを使用する

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

  • 既知のパブリック認証機関からのTLS証明書で保護されています。

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

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

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

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

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

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

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

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

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

    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と同じ にない場合は、2 つの 間のネットワーク接続を設定する必要がありますVPCs。 SeeConnect VPCs詳細については、VPCピアリングを使用します。

    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)