기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SageMaker AI AWS Batch 에서 시작하기
AWS Batch 서비스 작업을 사용하면 예약, 우선 순위 지정 및 대기열 기능을 사용하여 AWS Batch 작업 대기열을 통해 SageMaker 훈련 작업을 제출할 수 있습니다. 이 자습서에서는 AWS Batch 서비스 작업을 사용하여 간단한 SageMaker 훈련 작업을 설정하고 실행하는 방법을 보여줍니다.
목차
개요
이 자습서에서는를 사용하여 SageMaker 훈련 작업에 대한 AWS Batch 서비스 작업을 설정하는 방법을 보여줍니다 AWS CLI.
- 대상
-
이 자습서는 대규모 기계 학습 훈련 작업의 설정 및 실행을 담당하는 데이터 과학자와 개발자를 위해 설계되었습니다.
- 사용된 기능
-
이 자습서에서는를 사용하여 다음을 AWS CLI 수행하는 방법을 보여줍니다.
-
SageMaker 훈련 작업을 위한 서비스 환경 생성
-
SageMaker 훈련 작업 대기열 생성
-
SubmitServiceJob
API를 사용하여 서비스 작업 제출 -
작업 상태 모니터링 및 출력 보기
-
훈련 작업에 대한 CloudWatch 로그 액세스
-
- 필요한 시간
-
이 자습서를 완료하려면 약 15분 정도 걸립니다.
- 리전별 제한 사항
-
이 자습서는 AWS Batch 및 SageMaker AI를 모두 사용할 수 있는 모든 AWS 리전에서 완료할 수 있습니다.
- 리소스 사용 비용
-
AWS 계정 생성에는 요금이 부과되지 않습니다. 그러나이 솔루션을 구현하면 다음 리소스에 대한 비용이 발생할 수 있습니다.
설명 비용(USD) SageMaker AI 훈련 인스턴스 사용한 각 SageMaker AI 훈련 인스턴스에 대해 비용을 지불합니다. 요금에 대한 자세한 내용은 SageMaker AI 요금을 참조하세요. Amazon S3 스토리지 훈련 작업 출력을 저장하는 데 드는 최소한의 비용. 자세한 내용은 Amazon S3 요금 을 참조하세요.
사전 조건
이 자습서를 시작하기 전에 및 AWS Batch SageMaker AI 리소스를 모두 생성하고 관리하는 데 필요한 다음 도구와 리소스를 설치하고 구성해야 합니다.
-
AWS CLI - AWS Batch 및 SageMaker AI를 포함한 AWS 서비스 작업을 위한 명령줄 도구입니다. 이 가이드에서는 버전 2.8.6 이상을 사용해야 합니다. 자세한 내용은 AWS Command Line Interface 사용 설명서의 AWS CLI의 설치, 업데이트, 제거를 참조하세요. 설치 후 도 구성하는 것이 AWS CLI좋습니다. 자세한 내용은 AWS Command Line Interface 사용 설명서에서
aws configure
를 사용한 빠른 구성을 참조하세요.
1단계: SageMaker AI 실행 역할 생성
SageMaker AI는 실행 역할을 사용하여 다른 AWS 서비스를 사용하여 사용자를 대신하여 작업을 수행합니다. 실행 역할을 생성하고 훈련 작업에 필요한 서비스 및 리소스를 사용할 수 있는 권한을 SageMaker AI에 부여해야 합니다. Amazon S3에 대한 권한이 포함되어 있으므로 AmazonSageMakerFullAccess
관리형 정책을 사용합니다.
참고
다음 지침에 따라이 자습서를 위한 SageMaker AI 실행 역할을 생성합니다.
프로덕션 환경에 대한 실행 역할을 생성하기 전에 SageMaker AI 개발자 안내서의 SageMaker AI 실행 역할을 사용하는 방법을 검토하는 것이 좋습니다. SageMaker
-
IAM 역할 생성
다음 신뢰 정책을
sagemaker-trust-policy.json
사용하여 라는 JSON 파일을 생성합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
신뢰 정책을 사용하여 IAM 역할을 생성합니다.
aws iam create-role \ --role-name SageMakerExecutionRole \ --assume-role-policy-document file://sagemaker-trust-policy.json \ --description "Execution role for SageMaker training jobs"
-
관리형 정책 연결
필요한 관리형 정책을 역할에 연결합니다.
aws iam attach-role-policy \ --role-name SageMakerExecutionRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
aws iam attach-role-policy \ --role-name SageMakerExecutionRole \ --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
-
역할 ARN 기록
역할 ARN을 가져옵니다.이 ARN은 다음 단계에서 필요합니다.
aws iam get-role --role-name SageMakerExecutionRole --query 'Role.Arn' --output text
훈련 작업 페이로드를 생성할 때 사용할 것이므로이 ARN을 저장합니다.
2단계: 서비스 환경 생성
서비스 환경은 SageMaker 훈련 작업에 대한 용량 제약 조건을 정의합니다. 서비스 환경은 동시에 실행할 수 있는 최대 훈련 인스턴스 수를 캡슐화합니다.
중요
SageMaker 훈련을 위한 첫 번째 서비스 환경을 생성하면 AWS Batch 는 계정AWSServiceRoleForAWSBatchWithSagemaker
에서 라는 서비스 연결 역할을 자동으로 생성합니다. 이 역할을 통해 AWS Batch 는 사용자를 대신하여 SageMaker 훈련 작업을 대기열에 넣고 관리할 수 있습니다. 이 서비스 연결 역할 및 권한에 대한 자세한 내용은 섹션을 참조하세요SageMaker AI AWS Batch 에서에 대한 역할 사용.
최대 5개의 인스턴스를 처리할 수 있는 서비스 환경을 생성합니다.
aws batch create-service-environment \ --service-environment-name
TutorialServiceEnvironment
\ --service-environment-type SAGEMAKER_TRAINING \ --capacity-limits capacityUnit=NUM_INSTANCES,maxCapacity=5
출력:
{ "serviceEnvironmentName": "
TutorialServiceEnvironment
", "serviceEnvironmentArn": "arn:aws:batch:your-region
:your-account-id
:service-environment/TutorialServiceEnvironment
" }
서비스 환경이 성공적으로 생성되었는지 확인합니다.
aws batch describe-service-environments --service-environments
TutorialServiceEnvironment
출력:
{ "serviceEnvironments": [ { "serviceEnvironmentName": "
TutorialServiceEnvironment
", "serviceEnvironmentArn": "arn:aws:batch:your-region
:your-account-id
:service-environment/TutorialServiceEnvironment
", "serviceEnvironmentType": "SAGEMAKER_TRAINING", "state": "ENABLED", "status": "VALID", "capacityLimits": [ { "maxCapacity": 5, "capacityUnit": "NUM_INSTANCES" } ], "tags": {} } ] }
서비스 환경에 대한 자세한 내용은 섹션을 참조하세요용 서비스 환경 AWS Batch.
3단계: SageMaker 작업 대기열 생성
SageMaker 작업 대기열은 서비스 작업의 예약 및 실행을 관리합니다. 이 대기열에 제출된 작업은 사용 가능한 용량에 따라 서비스 환경으로 디스패치됩니다.
SageMaker 훈련 작업 대기열 생성:
aws batch create-job-queue \ --job-queue-name
my-sm-training-fifo-jq
\ --job-queue-type SAGEMAKER_TRAINING \ --priority 1 \ --service-environment-order order=1,serviceEnvironment=TutorialServiceEnvironment
출력:
{ "jobQueueName": "
my-sm-training-fifo-jq
", "jobQueueArn": "arn:aws:batch:your-region
:your-account-id
:job-queue/my-sm-training-fifo-jq
" }
작업 대기열이 성공적으로 생성되었는지 확인합니다.
aws batch describe-job-queues --job-queues
my-sm-training-fifo-jq
출력:
{ "jobQueues": [ { "jobQueueName": "
my-sm-training-fifo-jq
", "jobQueueArn": "arn:aws:batch:your-region
:your-account-id
:job-queue/my-sm-training-fifo-jq
", "state": "ENABLED", "status": "VALID", "statusReason": "JobQueue Healthy", "priority": 1, "computeEnvironmentOrder": [], "serviceEnvironmentOrder": [ { "order": 1, "serviceEnvironment": "arn:aws:batch:your-region
:your-account-id
:service-environment/TutorialServiceEnvironment
" } ], "jobQueueType": "SAGEMAKER_TRAINING", "tags": {} } ] }
SageMaker 작업 대기열에 대한 자세한 내용은 섹션을 참조하세요에서 SageMaker 훈련 작업 대기열 생성 AWS Batch.
4단계: 훈련 작업 생성 및 제출
이제 간단한 훈련 작업을 생성하여 작업 대기열에 제출합니다. 이 예제에서는 서비스 작업 기능을 보여주는 기본 "hello world" 훈련 작업을 사용합니다.
다음 콘텐츠가 포함된
이라는 파일을 생성합니다. my_training_job.json
your-account-id
를 계정 ID로 바꿉니다. AWS
참고
S3OutputPath
는 SageMaker 훈련 작업을 생성하는 데 필요하지만이 자습서의 결과는 Amazon S3 버킷에 저장되지 않으며 다음 JSON의 경로를 사용할 수 있습니다. 프로덕션 환경에서 선택한 경우 출력을 저장하려면 유효한 Amazon S3 버킷이 필요합니다.
{ "TrainingJobName": "
my-simple-training-job
", "RoleArn": "arn:aws:iam::your-account-id
:role/SageMakerExecutionRole", "AlgorithmSpecification": { "TrainingInputMode": "File", "TrainingImage": "763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310", "ContainerEntrypoint": [ "echo", "hello world" ] }, "ResourceConfig": { "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "VolumeSizeInGB": 1 }, "OutputDataConfig": { "S3OutputPath": "s3://your-s3-bucket/output" }, "StoppingCondition": { "MaxRuntimeInSeconds": 30 } }
SubmitServiceJob API를 사용하여 훈련 작업을 제출합니다.
aws batch submit-service-job \ --job-queue
my-sm-training-fifo-jq
\ --job-namemy-batch-sm-job
\ --service-job-type SAGEMAKER_TRAINING \ --retry-strategy attempts=1 \ --timeout-config attemptDurationSeconds=60 \ --service-request-payload file://my_training_job.json
출력:
{ "jobArn": "arn:aws:batch:
your-region
:your-account-id
:service-job/your-job-id
", "jobName": "my-batch-sm-job
", "jobId": "your-job-id
" }
서비스 작업 페이로드에 대한 자세한 내용은 섹션을 참조하세요의 서비스 작업 페이로드 AWS Batch. 서비스 작업 제출에 대한 자세한 내용은 섹션을 참조하세요에서 서비스 작업 제출 AWS Batch.
5단계: 작업 상태 모니터링
DescribeServiceJob, ListServiceJobs 및 GetJobQueueSnapshot AWS Batch APIs 사용하여 훈련 작업을 모니터링할 수 있습니다. 이 섹션에서는 작업 상태 및 대기열 정보를 확인하는 다양한 방법을 보여줍니다.
대기열에서 실행 중인 작업 보기:
aws batch list-service-jobs \ --job-queue
my-sm-training-fifo-jq
--job-status RUNNING
출력:
{ "jobSummaryList": [ { "latestAttempt": { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:
your-region
:your-account-id
:training-job/AWSBatch<my-simple-training-job>
<your-attempt-id>
" } }, "createdAt": 1753718760, "jobArn": "arn:aws:batch:your-region
:your-account-id
:service-job/your-job-id
", "jobId": "your-job-id
", "jobName": "my-batch-sm-job
", "serviceJobType": "SAGEMAKER_TRAINING", "status": "RUNNING", "startedAt": 1753718820 } ] }
RUNNABLE
상태에 있는 작업을 봅니다.
aws batch list-service-jobs \ --job-queue
my-sm-training-fifo-jq
--job-status RUNNABLE
대기열에서 예정된 작업의 스냅샷을 가져옵니다.
aws batch get-job-queue-snapshot --job-queue
my-sm-training-fifo-jq
출력:
{ "frontOfQueue": { "jobs": [ { "jobArn": "arn:aws:batch:
your-region
:your-account-id
:service-job/your-job-id
", "earliestTimeAtPosition": 1753718880 }, { "jobArn": "arn:aws:batch:your-region
:your-account-id
:service-job/your-job-id-2
", "earliestTimeAtPosition": 1753718940 } ], "lastUpdatedAt": 1753718970 } }
이름으로 작업을 검색합니다.
aws batch list-service-jobs \ --job-queue
my-sm-training-fifo-jq
\ --filters name=JOB_NAME,values="my-batch-sm-job
"
출력:
{ "jobSummaryList": [ { "latestAttempt": { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:
your-region
:your-account-id
:training-job/AWSBatch<my-simple-training-job>
<your-attempt-id>
" } }, "createdAt": 1753718760, "jobArn": "arn:aws:batch:your-region
:your-account-id
:service-job/your-job-id
", "jobId": "your-job-id
", "jobName": "my-batch-sm-job
", "serviceJobType": "SAGEMAKER_TRAINING", "status": "RUNNING" } ] }
작업 상태 매핑에 대한 자세한 내용은 섹션을 참조하세요AWS Batch 서비스 작업 상태를 SageMaker AI 상태로 매핑.
6단계: 작업 출력 보기
작업이 완료되면 AWS Batch 및 SageMaker AI APIs.
AWS Batch다음에서 작업에 대한 자세한 정보를 가져옵니다.
aws batch describe-service-job \ --job-id
your-job-id
출력:
{ "attempts": [ { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:
your-region
:your-account-id
:training-job/AWSBatch<my-simple-training-job>
<your-attempt-id>
" }, "startedAt": 1753718820, "stoppedAt": 1753718880, "statusReason": "Received status from SageMaker: Training job completed" } ], "createdAt": 1753718760, "jobArn": "arn:aws:batch:your-region
:your-account-id
:service-job/your-job-id
", "jobId": "your-job-id
", "jobName": "my-batch-sm-job
", "jobQueue": "arn:aws:batch:your-region
:your-account-id
:job-queue/my-sm-training-fifo-jq
", "latestAttempt": { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:your-region
:your-account-id
:training-job/AWSBatch<my-simple-training-job>
<your-attempt-id>
" } }, "retryStrategy": { "attempts": 1, "evaluateOnExit": [] }, "serviceRequestPayload": "your-training-job-request-json
", "serviceJobType": "SAGEMAKER_TRAINING", "startedAt": 1753718820, "status": "SUCCEEDED", "statusReason": "Received status from SageMaker: Training job completed", "stoppedAt": 1753718880, "tags": {}, "timeoutConfig": { "attemptDurationSeconds": 60 } }
이 명령은 SageMaker AI를 통해 작업에 직접 액세스하는 데 사용할 수 있는 SageMaker 훈련 작업 ARN을 포함한 포괄적인 작업 정보를 반환합니다.
aws sagemaker describe-training-job \ --training-job-name AWSBatch
<my-simple-training-job>
<your-attempt-id>
훈련 작업에 대한 CloudWatch 로그를 보려면 먼저 로그 스트림 이름을 가져옵니다.
aws logs describe-log-streams \ --log-group-name /aws/sagemaker/TrainingJobs \ --log-stream-name-prefix AWSBatch
my-simple-training-job
출력:
{ "logStreams": [ { "logStreamName": "
your-log-stream-name
", "creationTime": 1753718830, "firstEventTimestamp": 1753718840, "lastEventTimestamp": 1753718850, "lastIngestionTime": 1753718860, "uploadSequenceToken":upload-sequence-token
, "arn": "arn:aws:logs:your-region
:your-account-id
:log-group:/aws/sagemaker/TrainingJobs:log-stream:AWSBatch<my-simple-training-job>
<your-attempt-id>
/algo-1-algo-id
", "storedBytes": 0 } ] }
그런 다음 이전 응답의 로그 스트림 이름을 사용하여 로그를 검색합니다.
aws logs get-log-events \ --log-group-name /aws/sagemaker/TrainingJobs \ --log-stream-name
your-log-stream-name
출력:
{ "events": [ { "timestamp": 1753718845, "message": "hello world", "ingestionTime": 1753718865 } ], "nextForwardToken": "
next-forward-token
", "nextBackwardToken": "next-backward-token
" }
로그 출력에는 훈련 작업의 "hello world" 메시지가 표시되어 작업이 성공적으로 실행되었음을 확인합니다.
7단계: 자습서 리소스 정리
자습서를 마치면 지속적인 요금이 부과되지 않도록 생성한 리소스를 정리합니다.
먼저 작업 대기열을 비활성화하고 삭제합니다.
aws batch update-job-queue \ --job-queue
my-sm-training-fifo-jq
\ --state DISABLED
작업 대기열이 비활성화될 때까지 기다린 다음 삭제합니다.
aws batch delete-job-queue \ --job-queue
my-sm-training-fifo-jq
그런 다음 서비스 환경을 비활성화하고 삭제합니다.
aws batch update-service-environment \ --service-environment
TutorialServiceEnvironment
\ --state DISABLED
서비스 환경이 비활성화될 때까지 기다린 다음 삭제합니다.
aws batch delete-service-environment \ --service-environment
TutorialServiceEnvironment
추가 리소스
자습서를 완료한 후 다음 주제를 살펴볼 수 있습니다.
-
PySDK에는 헬퍼 클래스와 유틸리티가 있으므로 서비스 작업 생성 및 작업 대기열에 제출에 PySDK를 사용하는 것이 좋습니다. PySDK 사용 예제는 GitHub의 SageMaker AI 예제
를 참조하세요. -
의 서비스 작업 AWS Batch 단원에 대해 자세히 알아보세요.
-
보다 복잡한 훈련 작업 구성을 탐색의 서비스 작업 페이로드 AWS Batch합니다.
-
에서 서비스 작업 제출 AWS Batch 및
SubmitServiceJob
API에 대해 알아봅니다. -
AWS Batch 서비스 작업 상태를 SageMaker AI 상태로 매핑를 검토하여 작업 상태 전환을 이해합니다.
-
Python을 사용하여 SageMaker 훈련 작업을 생성하고 제출하는 다양한 방법은 SageMaker AI Python SDK 설명서를
참조하세요. SageMaker -
더 복잡한 기계 학습 워크플로를 보려면 SageMaker 예제 노트북
을 살펴보세요.