翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
プライベート Docker レジストリ内のイメージにアクセスするようにトレーニングジョブを適応
Amazon Elastic Container Registry (Amazon ECR) の代わりにプライベート 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) クライアントを使用しています。
-
トレーニングイメージ設定オブジェクトを作成し、以下のように
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 レジストリの使用」を参照してください。
-
Boto3 クライアントを使用してトレーニングジョブを作成し、正しい設定を create_training_job API に渡します。以下の手順は、コンポーネントの設定方法とトレーニングジョブの作成方法を示しています。
-
create_training_job
に渡すAlgorithmSpecification
オブジェクトを作成します。次のコード例に示すように、前のステップで作成したトレーニングイメージ設定オブジェクトを使用します。algorithm_specification = { 'TrainingImage': '
myteam.myorg.com/docker-local/my-training-image:<IMAGE-TAG>
', 'TrainingImageConfig': training_image_config, 'TrainingInputMode': 'File
' }注記
更新バージョンではなく固定バージョンのイメージを使用するには、名前やタグではなく、イメージのダイジェスト
を参照します。 -
次のコード例に示すように、
create_training_job
に渡すトレーニングジョブの名前とロールを指定します。training_job_name = '
private-registry-job
' execution_role_arn = 'arn:aws:iam::123456789012:role/SageMakerExecutionRole
' -
トレーニングジョブの 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
-
次のコード例に示すように、トレーニングに使用する機械学習コンピューティングインスタンスやストレージボリュームなどのリソース設定を指定します。
resource_config = { 'InstanceType': '
ml.m4.xlarge
', 'InstanceCount':1
, 'VolumeSizeInGB':10
, } -
次のコード例に示すように、入力および出力データ設定、トレーニングデータセットの保存場所、モデルアーティファクトの保存場所を指定します。
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
' } -
次のコード例に示すように、モデルトレーニングジョブを実行できる最大秒数を指定します。
stopping_condition = { 'MaxRuntimeInSeconds':
1800
} -
最後に、次のコード例に示すように、前のステップで指定したパラメータを使用してトレーニングジョブを作成します。
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)
-