Amazon Virtual Private 클라우드에서 Amazon SageMaker Ground Truth 라벨링 작업 실행 - 아마존 SageMaker

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

Amazon Virtual Private 클라우드에서 Amazon SageMaker Ground Truth 라벨링 작업 실행

Ground Truth는 Amazon VPC에서 다음 기능을 지원합니다.

  • Amazon S3 버킷 정책을 사용하여 특정 VPC 엔드포인트 또는 특정 VPC의 버킷에 대한 액세스를 제어할 수 있습니다. 레이블 지정 작업을 시작하고 입력 데이터가 VPC의 사용자로 제한된 Amazon S3 버킷에 있는 경우, 버킷 정책을 추가하여 Ground Truth 엔드포인트에 버킷에 액세스할 수 있는 권한도 부여할 수 있습니다. 자세한 내용은 Ground Truth가 VPC 제한 Amazon S3 버킷에 액세스하도록 허용 섹션을 참조하세요.

  • VPC에서 자동화된 데이터 레이블 지정 작업을 시작할 수 있습니다. VPC 구성을 사용하여 VPC 서브넷과 보안 그룹을 지정합니다. SageMaker 는 이 구성을 사용하여 VPC에서 자동화된 데이터 레이블 지정에 사용되는 학습 및 추론 작업을 시작합니다. 자세한 내용은 VPC에서 자동 데이터 레이블 지정 작업 생성 섹션을 참조하세요.

다음 방법 중 하나를 사용하여 이러한 옵션을 사용할 수 있습니다.

  • 이 두 가지 방법을 모두 사용하여 자동 데이터 레이블 지정을 활성화한 VPC 보호 Amazon S3 버킷을 사용하여 레이블 지정 작업을 시작할 수 있습니다.

  • VPC 보호 버킷을 사용하여 기본 제공 태스크 유형을 이용한 레이블 지정 작업을 시작할 수 있습니다.

  • VPC 보호 버킷을 사용하여 사용자 지정 레이블 지정 워크플로를 시작할 수 있습니다. Ground Truth는 AWS PrivateLink 엔드포인트를 사용하여 사전 주석 및 사후 주석 Lambda 함수와 상호 작용합니다.

Amazon VPC에서 레이블 지정 작업을 생성하기 전에 VPC에서 Ground Truth 레이블 지정 작업을 실행하기 위한 사전 요구 사항 섹션을 검토하는 것이 좋습니다.

VPC에서 Ground Truth 레이블 지정 작업을 실행하기 위한 사전 요구 사항

Amazon VPC에서 Ground Truth 레이블 지정 작업을 생성하기 전에 다음 사전 조건을 검토하세요.

  • Ground Truth 보안 및 권한 섹션을 검토하고 다음 조건을 충족하는지 확인하세요.

    • 레이블 지정 작업을 생성하는 사용자에게는 필요한 모든 권한이 있습니다.

    • 필수 권한을 가진 IAM 실행 역할을 생성했습니다. 사용 사례에 맞게 미세 조정된 권한이 필요하지 않은 경우, Ground Truth 사용을 시작하기 위한 일반 권한 부여에 설명된 IAM 관리형 정책을 사용하는 것이 좋습니다.

    • VPC가 sagemaker-labeling-data-regionsm-bxcb-region-saved-task-states S3 버킷에 액세스할 수 있도록 허용합니다. 이는 작업자가 작업을 수행할 때 작업자 포털에서 액세스하는 시스템 소유의 리전 S3 버킷입니다. 이러한 버킷을 사용하여 시스템 관리 데이터와 상호 작용합니다.

Ground Truth가 VPC 제한 Amazon S3 버킷에 액세스하도록 허용

다음 섹션에서는 Ground Truth가 VPC 및 VPC 엔드포인트로 액세스가 제한된 Amazon S3 버킷을 사용하여 레이블 지정 작업을 시작하는 데 필요한 권한에 대한 세부 정보를 제공합니다. VPC로 Amazon S3 버킷에 대한 액세스를 제한하는 방법을 알아보려면 Amazon Simple Storage Service 사용 설명서의 버킷 정책으로 VPC 엔드포인트 액세스 제어 섹션을 참조하세요. S3 버킷에 정책을 추가하는 방법을 알아보려면 Amazon S3 콘솔을 사용하여 버킷 정책 추가를 참조하세요.

참고

기존 버킷의 정책을 수정하면 IN_PROGRESS Ground Truth 작업이 실패할 수 있습니다. 새 버킷을 사용하여 새 작업을 시작하는 것이 좋습니다. 동일한 버킷을 계속 사용하려는 경우 다음 중 하나를 수행할 수 있습니다.

  • IN_PROGRESS 작업이 완료될 때까지 기다립니다.

  • 콘솔 또는 AWS CLI를 사용하여 작업을 종료합니다.

AWS PrivateLink 엔드포인트를 사용하여 VPC의 사용자에 대한 Amazon S3 버킷 액세스를 제한할 수 있습니다. 다음은 엔드포인트 의 특정 버킷인 <bucket-name>에 대해 <vpc-endpoint> 및 엔드포인트 <vpc>에서만 특정 버킷에 액세스를 허용하는 S3 버킷 정책의 예입니다. 이 정책을 수정할 때는 빨간색 기울임꼴로 표시된 텍스트를 모두 리소스 및 사양으로 바꿔야 합니다.

참고

다음 정책은 VPC 내 사용자를 제외한 모든 엔터티가 Action에 나열된 작업을 수행하는 것을 거부합니다. 이 목록에 작업을 포함하지 않아도 이 버킷에 대한 액세스 권한과 해당 작업을 수행할 권한이 있는 모든 엔터티가 해당 작업에 계속 액세스할 수 있습니다. 예를 들어, 사용자에게 Amazon S3 버킷에서 GetBucketLocation을 수행할 권한이 있는 경우, 아래 정책은 사용자가 VPC 외부에서 이 작업을 수행하는 것을 제한하지 않습니다.

{ "Version": "2012-10-17", "Id": "Policy1415115909152", "Statement": [ { "Sid": "Access-to-specific-VPCE-only", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Deny", "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*" ], "Condition": { "StringNotEquals": { "aws:sourceVpce": [ "<vpc-endpoint>", "<vpc>" ] } } } ] }

Ground Truth는 레이블 지정 작업을 구성하는 데 사용하는 S3 버킷에서 다음과 같은 Amazon S3 작업을 수행할 수 있어야 합니다.

"s3:AbortMultipartUpload", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:GetBucketLocation"

앞서 언급한 것과 같이 Ground Truth 엔드포인트를 버킷 정책에 추가하여 이 작업을 수행할 수 있습니다. 다음 표에는 각 AWS 지역의 Ground Truth 서비스 엔드포인트가 나와 있습니다. 레이블 지정 작업을 실행하는 데 사용하는 것과 동일한 AWS 리전의 엔드포인트를 버킷 정책에 추가합니다.

AWS 리전 Ground Truth 엔드포인트
us-east-2 vpce-02569ba1c40aad0bc
us-east-1 vpce-08408e335ebf95b40
us-west-2 vpce-0ea07aa498eb78469
ca-central-1 vpce-0d46ea4c9ff55e1b7
eu-central-1 vpce-0865e7194a099183d
eu-west-2 vpce-0bccd56798f4c5df0
eu-west-1 vpce-0788e7ed8628e595d
ap-south-1 vpce-0d7fcda14e1783f11
ap-southeast-2 vpce-0b7609e6f305a77d4
ap-southeast-1 vpce-0e7e67b32e9efed27
ap-northeast-2 vpce-007893f89e05f2bbf
ap-northeast-1 vpce-0247996a1a1807dbd

예를 들어, 다음 정책은 다음에 대한 GetObjectPutObject 작업을 제한합니다.

  • VPC의 사용자를 위한 Amazon S3 버킷(<vpc>)

  • VPC 엔드포인트(<vpc-endpoint>)

  • Ground Truth 서비스 엔드포인트(<ground-truth-endpoint>)

{ "Version": "2012-10-17", "Id": "1", "Statement": [ { "Sid": "DenyAccessFromNonGTandCustomerVPC", "Effect": "Deny", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*" ], "Condition": { "ForAllValues:StringNotEquals": { "aws:sourceVpce": [ "<vpc-endpoint>", "<ground-truth-endpoint>" ], "aws:SourceVpc": "<vpc>" } } } ] }

Ground Truth 콘솔을 사용하여 레이블 지정 작업을 시작할 권한을 사용자에게 부여하려면 aws:PrincipalArn 조건을 사용하여 사용자의 ARN을 버킷 정책에 추가해야 합니다. 또한 이 사용자는 레이블 지정 작업을 시작하는 데 사용하는 버킷에서 다음과 같은 Amazon S3 작업을 수행할 권한이 있어야 합니다.

"s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:GetBucketCors", "s3:PutBucketCors", "s3:ListAllMyBuckets",

다음 코드는 S3 버킷 <bucket-name>에서 Action에 나열된 작업을 수행할 권한을 다음 역할로 제한하는 버킷 정책의 예입니다.

  • <role-name>

  • aws:sourceVpce에 나열된 VPC 엔드포인트

  • <vpc>라는 이름의 VPC 내의 사용자

{ "Version": "2012-10-17", "Id": "1", "Statement": [ { "Sid": "DenyAccessFromNonGTandCustomerVPC", "Effect": "Deny", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<bucket-name>/*", "arn:aws:s3:::<bucket-name>" ], "Condition": { "ForAllValues:StringNotEquals": { "aws:sourceVpce": [ "<vpc-endpoint>", "<ground-truth-endpoint>" ], "aws:PrincipalArn": "arn:aws:iam::<aws-account-id>:role/<role-name>", "aws:SourceVpc": "<vpc>" } } } ] }
참고

입력 및 출력 데이터에 사용하는 Amazon VPC 인터페이스 엔드포인트와 보호된 Amazon S3 버킷은 레이블 지정 작업을 생성할 때 사용한 것과 동일한 AWS 지역에 있어야 합니다.

Amazon S3 버킷에 액세스할 수 있는 Ground Truth 권한을 부여한 후에는 레이블 지정 작업 생성의 주제 중 하나를 사용하여 레이블 지정 작업을 시작할 수 있습니다. 입력 및 출력 데이터 버킷에 대해 VPC 제한 Amazon S3 버킷을 지정합니다.

VPC에서 자동 데이터 레이블 지정 작업 생성

Amazon VPC를 사용하여 자동 데이터 레이블 지정 작업을 생성하려면 Ground Truth 콘솔 또는 CreateLabelingJob API 작업을 사용하여 VPC 구성을 제공해야 합니다. SageMaker 제공한 서브넷과 보안 그룹을 사용하여 자동 레이블 지정에 사용되는 교육 및 추론 작업을 시작합니다.

중요

VPC 구성으로 자동 데이터 레이블 지정 작업을 시작하기 전에 레이블 지정 작업에 사용할 VPC를 사용하여 Amazon S3 VPC 엔드포인트를 생성했는지 확인하세요. 방법을 알아보려면 Amazon S3 VPC 엔드포인트 생성을 참조하세요.

또한 VPC 제한 Amazon S3 버킷을 사용하여 자동 데이터 레이블 지정 작업을 생성하는 경우, Ground Truth가 VPC 제한 Amazon S3 버킷에 액세스하도록 허용의 지침에 따라 Ground Truth에 버킷 액세스 권한을 부여해야 합니다.

다음 절차를 사용하여 레이블 지정 작업 요청에 VPC 구성을 추가하는 방법을 알아보세요.

자동 데이터 레이블 지정 작업에 VPC 구성 추가(콘솔):
  1. 레이블 지정 작업 생성(콘솔)의 지침에 따라 절차의 각 단계를 15단계까지 완료하세요.

  2. 작업자 섹션에서 자동 데이터 레이블 지정 활성화 옆의 확인란을 선택합니다.

  3. 화살표를 선택하여 콘솔의 VPC 구성 섹션을 최대화합니다.

  4. 자동 데이터 레이블 지정 작업에 사용할 Virtual Private Cloud(VPC)를 지정합니다.

  5. 서브넷에서 드롭다운 목록을 선택하고 하나 이상의 서브넷을 선택합니다.

  6. 보안 그룹에서 드롭다운 목록을 선택하고 하나 이상의 그룹을 선택합니다.

  7. 레이블 지정 작업 생성(콘솔)에서 나머지 절차를 모두 완료하세요.

자동 데이터 레이블 지정 작업(API)에 VPC 구성 추가:

Ground Truth API 작업 CreateLabelingJob을 사용하여 레이블 지정 작업을 구성하려면 자동 데이터 레이블 지정 작업(API) 생성의 지침에 따라 요청을 구성하세요. 이 설명서에 설명된 파라미터 외에도 다음 스키마를 사용하여 하나 이상의 서브넷 및 보안 그룹을 지정하려면 VpcConfig 파라미터를 LabelingJobResourceConfig에 포함해야 합니다.

"LabelingJobAlgorithmsConfig": { "InitialActiveLearningModelArn": "string", "LabelingJobAlgorithmSpecificationArn": "string", "LabelingJobResourceConfig": { "VolumeKmsKeyId": "string", "VpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] } } }

다음은 프라이빗 작업 인력을 사용하여 미국 동부(버지니아 북부) 리전에 자동 데이터 레이블 지정 작업을 생성하는 AWS Python SDK(Boto3) 요청의 예시입니다. 빨간색 기울임꼴로 표시된 모든 텍스트를 레이블 지정 작업 리소스 및 사양으로 바꾸세요. CreateLabelingJob작업에 대한 자세한 내용은 라벨링 작업 생성 (API) 튜토리얼 및 CreateLabelingJob API 설명서를 참조하십시오.

import boto3 client = boto3.client(service_name='sagemaker') response = client.create_labeling_job( LabelingJobName="example-labeling-job", LabelAttributeName="label", InputConfig={ 'DataSource': { 'S3DataSource': { 'ManifestS3Uri': "s3://bucket/path/manifest-with-input-data.json" } } }, "LabelingJobAlgorithmsConfig": { "LabelingJobAlgorithmSpecificationArn": "arn:aws:sagemaker:us-east-1:027400017018:labeling-job-algorithm-specification/tasktype", "LabelingJobResourceConfig": { "VpcConfig": { "SecurityGroupIds": [ "sg-01233456789", "sg-987654321" ], "Subnets": [ "subnet-e0123456", "subnet-e7891011" ] } } }, OutputConfig={ 'S3OutputPath': "s3://bucket/path/file-to-store-output-data", 'KmsKeyId': "string" }, RoleArn="arn:aws:iam::*:role/*, LabelCategoryConfigS3Uri="s3://bucket/path/label-categories.json", StoppingConditions={ 'MaxHumanLabeledObjectCount': 123, 'MaxPercentageOfInputDatasetLabeled': 123 }, HumanTaskConfig={ 'WorkteamArn': "arn:aws:sagemaker:region:*:workteam/private-crowd/*", 'UiConfig': { 'UiTemplateS3Uri': "s3://bucket/path/custom-worker-task-template.html" }, 'PreHumanTaskLambdaArn': "arn:aws:lambda:us-east-1:432418664414:function:PRE-tasktype", 'TaskKeywords': [ "Images", "Classification", "Multi-label" ], 'TaskTitle': "Add task title here", 'TaskDescription': "Add description of task here for workers", 'NumberOfHumanWorkersPerDataObject': 1, 'TaskTimeLimitInSeconds': 3600, 'TaskAvailabilityLifetimeInSeconds': 21600, 'MaxConcurrentTaskCount': 1000, 'AnnotationConsolidationConfig': { 'AnnotationConsolidationLambdaArn': "arn:aws:lambda:us-east-1:432418664414:function:ACS-tasktype" }, Tags=[ { 'Key': "string", 'Value': "string" }, ] )