기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SageMaker AI AWS Batch 에서 시작하기
AWS Batch 서비스 작업을 사용하면 예약, 우선 순위 지정 및 대기열 기능을 사용하여 AWS Batch 작업 대기열을 통해 SageMaker 훈련 작업을 제출할 수 있습니다. 이 자습서에서는 AWS Batch 서비스 작업을 사용하여 간단한 SageMaker 훈련 작업을 설정하고 실행하는 방법을 보여줍니다.
목차
개요
이 자습서에서는를 사용하여 SageMaker 훈련 작업에 대한 AWS Batch 서비스 작업을 설정하는 방법을 보여줍니다 AWS CLI.
- 대상
-
이 자습서는 대규모 기계 학습 훈련 작업의 설정 및 실행을 담당하는 데이터 과학자 및 개발자를 위해 설계되었습니다.
- 사용된 기능
-
이 자습서에서는를 사용하여 다음을 AWS CLI 수행하는 방법을 보여줍니다.
-
SageMaker 훈련 작업을 위한 서비스 환경 생성
-
SageMaker 훈련 작업 대기열 생성
-
SubmitServiceJobAPI를 사용하여 서비스 작업 제출 -
작업 상태 모니터링 및 출력 보기
-
훈련 작업에 대한 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 실행 역할 생성
Amazon SageMaker AI는 실행 역할을 통해 사용자 대신 다른 AWS
서비스를 사용하여 작업을 수행합니다. 실행 역할을 생성하고 훈련 작업에 필요한 서비스 및 리소스를 사용할 수 있는 권한을 SageMaker AI에 부여해야 합니다. AmazonSageMakerFullAccess 관리형 정책에는 Amazon S3에 대한 권한이 포함되어 있으므로 이 정책을 사용합니다.
참고
다음 지침에 따라 이 자습서를 위한 SageMaker AI 실행 역할을 생성합니다.
프로덕션 환경을 위한 실행 역할을 생성하기 전에 SageMaker AI 개발자 안내서의 SageMaker AI 실행 역할을 사용하는 방법을 검토할 것이 권장됩니다.
-
IAM 역할 생성
다음 신뢰 정책을 통해
sagemaker-trust-policy.json이라는 이름의 JSON 파일을 생성합니다.신뢰 정책을 사용하여 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/AmazonSageMakerFullAccessaws 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을 저장합니다. 이 ARN은 훈련 작업 페이로드를 생성할 때 사용됩니다.
2단계: 테스트 환경 생성
서비스 환경은 SageMaker 훈련 작업에 대한 용량 제약 조건을 정의합니다. 서비스 환경은 동시에 실행할 수 있는 최대 훈련 인스턴스 수를 캡슐화합니다.
중요
SageMaker 훈련을 위한 첫 번째 서비스 환경을 생성하면 AWS Batch
는 계정에서 AWSServiceRoleForAWSBatchWithSagemaker라는 서비스 연결 역할을 자동 생성합니다. 이 역할을 통해 AWS Batch 는 사용자를 대신하여 SageMaker 훈련 작업을 대기열에 넣고 관리할 수 있습니다. 서비스 연결 역할 및 해당 권한에 대한 자세한 내용은 SageMaker AI AWS Batch 에서에 대한 역할 사용 섹션을 참조하세요.
최대 5개의 인스턴스를 처리할 수 있는 서비스 환경을 생성합니다.
aws batch create-service-environment \ --service-environment-nameTutorialServiceEnvironment\ --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-environmentsTutorialServiceEnvironment
출력:
{ "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-namemy-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-queuesmy-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 작업 대기열에 대한 자세한 내용은 AWS Batch에서 SageMaker 훈련 작업 대기열 생성 섹션을 참조하세요.
4단계: 훈련 작업 생성 및 제출
이제 간단한 훈련 작업을 생성하여 작업 대기열에 제출합니다. 이 예제에서는 서비스 작업 기능을 보여주는 간단한 'hello world' 훈련 작업을 사용합니다.
다음 콘텐츠가 포함된 이라는 파일을 생성합니다. my_training_job.jsonyour-account-id를 AWS
계정 ID로 바꿉니다.
참고
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-queuemy-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-queuemy-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-queuemy-sm-training-fifo-jq--job-status RUNNABLE
대기열에서 예정된 작업의 스냅샷을 가져옵니다.
aws batch get-job-queue-snapshot --job-queuemy-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-queuemy-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-idyour-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 훈련 작업 ARN 등 SageMaker AI를 통해 작업에 직접 액세스하는 데 사용할 수 있는 포괄적인 작업 정보를 반환합니다.
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 AWSBatchmy-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-nameyour-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-queuemy-sm-training-fifo-jq\ --state DISABLED
작업 대기열이 비활성화될 때까지 기다린 다음 삭제합니다.
aws batch delete-job-queue \ --job-queuemy-sm-training-fifo-jq
그런 다음 서비스 환경을 비활성화하고 삭제합니다.
aws batch update-service-environment \ --service-environmentTutorialServiceEnvironment\ --state DISABLED
서비스 환경이 비활성화될 때까지 기다린 다음 삭제합니다.
aws batch delete-service-environment \ --service-environmentTutorialServiceEnvironment
추가 리소스
자습서를 완료한 후 다음과 같은 주제를 살펴볼 수 있습니다.
-
PySDK에는 헬퍼 클래스와 유틸리티가 있으므로 서비스 작업 생성 및 작업 대기열 제출에 PySDK를 사용할 것이 권장됩니다. PySDK 사용에 대한 예제는 GitHub의 SageMaker AI 예제
를 참조하세요. -
의 서비스 작업 AWS Batch에 대해 자세히 알아보세요.
-
보다 복잡한 훈련 작업 구성에 대해서는 의 서비스 작업 페이로드 AWS Batch 섹션을 살펴보세요.
-
에서 서비스 작업 제출 AWS Batch 및
SubmitServiceJobAPI에 대해 알아봅니다. -
AWS Batch 서비스 작업 상태를 SageMaker AI 상태로 매핑 섹션을 검토하여 작업 상태 전환에 대해 이해합니다.
-
Python을 사용하여 다양한 기능과 함께 SageMaker 훈련 작업을 생성하고 제출하는 방법은 SageMaker AI Python SDK 설명서
를 참조하세요. -
보다 복잡한 기계 학습 워크플로에 대해서는 SageMaker 예제 노트북
을 살펴보세요.