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

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

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

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

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

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

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

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

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

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

VPC と SageMaker トレーニングジョブの設定

SageMaker AI は 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 オブジェクトを、トレーニングイメージ設定オブジェクトに追加する必要があります。オブジェクトの 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 つの VPC 間にネットワーク接続を設定する必要があります。詳細については、「VPC ピアリングを使用して 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)