프라이빗 Docker 레지스트리에 있는 이미지에 액세스할 수 있도록 훈련 작업을 조정하십시오. - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

프라이빗 Docker 레지스트리에 있는 이미지에 액세스할 수 있도록 훈련 작업을 조정하십시오.

Amazon Elastic 컨테이너 레지스트리 (Amazon ECR) 대신 사설 Docker 레지스트리를 사용하여 교육용 이미지를 호스팅할 수 있습니다. SageMaker 다음 지침은 Docker 레지스트리를 생성하고, 가상 사설 클라우드 (VPC) 및 교육 작업을 구성하고, 이미지를 저장하고, 사설 도커 레지스트리의 교육 이미지에 대한 액세스 권한을 SageMaker 부여하는 방법을 보여줍니다. 또한 이 지침에서는 교육 작업에 인증이 필요한 Docker 레지스트리를 사용하는 방법도 보여줍니다. SageMaker

프라이빗 Docker 레지스트리에 이미지를 생성 및 저장

프라이빗 Docker 레지스트리를 생성하여 이미지를 저장합니다. 레지스트리는 다음과 같아야 합니다.

  • Docker 레지스트리 HTTP API 프로토콜을 사용합니다

  • API의 VpcConfig파라미터에 지정된 동일한 VPC에서 액세스할 수 있습니다. CreateTrainingJob 훈련 작업을 생성할 때 VpcConfig를 입력합니다.

  • 알려진 퍼블릭 인증 기관의 TLS 인증서로 보호됩니다.

Docker 레지스트리 생성에 대한 자세한 내용은 레지스트리 서버 배포를 참조하십시오.

VPC 및 SageMaker 교육 작업 구성

SageMaker VPC 내의 네트워크 연결을 사용하여 Docker 레지스트리의 이미지에 액세스합니다. Docker 레지스트리의 이미지를 훈련에 사용하려면 계정의 Amazon VPC에서 레지스트리에 액세스할 수 있어야 합니다. 자세한 설명은 훈련을 위해 인증이 필요한 Docker 레지스트리 사용 섹션을 참조하세요.

또한 Docker 레지스트리에서 액세스할 수 있는 동일한 VPC에 연결하도록 훈련 작업을 구성해야 합니다. 자세한 내용은 Amazon VPC 액세스를 위한 훈련 작업 구성을 참조하십시오.

프라이빗 Docker 레지스트리의 이미지를 사용하여 훈련 작업 생성

프라이빗 Docker 레지스트리의 이미지를 훈련에 사용하려면 다음 안내서를 사용하여 이미지를 구성하고 훈련 작업을 구성 및 생성하십시오. 다음 코드 예제는 클라이언트를 사용합니다. AWS SDK for Python (Boto3)

  1. 훈련 이미지 구성 객체를 생성하고 다음과 같이 TrainingRepositoryAccessMode 필드에 Vpc를 입력합니다.

    training_image_config = { 'TrainingRepositoryAccessMode': 'Vpc' }
    참고

    프라이빗 Docker 레지스트리에 인증이 필요한 경우 훈련 이미지 구성 객체에 TrainingRepositoryAuthConfig 객체를 추가해야 합니다. 또한 객체의 TrainingRepositoryCredentialsProviderArn 필드 SageMaker 사용에 대한 액세스 자격 증명을 제공하는 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에 있지 않은 경우 두 VPC 간에 네트워킹 연결을 설정해야 합니다. SeeConnect 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)