기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
배치 예측
오프라인 추론이라고도 하는 배치 예측은 배치 관찰에서 모델 예측을 생성합니다. 대규모 데이터세트나 모델 예측 요청에 대한 즉각적인 응답이 필요하지 않은 경우 배치 추론을 사용하는 것이 좋습니다.
반면, 온라인 추론(실시간 추론)은 실시간으로 예측을 생성합니다.
SageMaker API를 사용하여 AutoML 작업의 최적 후보를 검색한 다음 해당 후보를 사용하여 추론할 입력 데이터 배치를 제출할 수 있습니다.
-
AutoML 작업의 세부 정보를 검색합니다.
다음 AWS CLI 명령 예제에서는 DescribeAutoMLJobV2 API를 사용하여 최적의 모델 후보에 대한 정보를 포함하여 AutoML 작업에 대한 세부 정보를 가져옵니다.
aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name job-name
--region region
-
컨테이너 정의는 예측을 위해 훈련된 SageMaker AI 모델을 호스팅하는 데 사용되는 컨테이너화된 환경입니다.
BEST_CANDIDATE=$(aws sagemaker describe-auto-ml-job-v2 \
--auto-ml-job-name job-name
--region region
\
--query 'BestCandidate.InferenceContainers[0]' \
--output json
이 명령은 최상의 모델 후보에 대한 컨테이너 정의를 추출하여 BEST_CANDIDATE
변수에 저장합니다.
-
최상의 후보 컨테이너 정의를 사용하여 SageMaker AI 모델을 생성합니다.
이전 단계의 컨테이너 정의를 사용하여 CreateModel API를 사용하여 SageMaker AI 모델을 생성합니다.
aws sagemaker create-model \
--model-name 'model-name
' \
--primary-container "$BEST_CANDIDATE"
--execution-role-arn 'execution-role-arn>
' \
--region 'region>
--execution-role-arn
파라미터는 추론에 모델을 사용할 때 SageMaker AI가 수임하는 IAM 역할을 지정합니다. 이 역할에 필요한 권한에 대한 자세한 내용은 CreateModel API: 실행 역할 권한 섹션을 참조하세요.
-
배치 변환 작업을 생성합니다.
다음 예제에서는 CreateTransformJob API를 사용하여 변환 작업을 생성합니다.
aws sagemaker create-transform-job \
--transform-job-name 'transform-job-name
' \
--model-name 'model-name
'\
--transform-input file://transform-input.json \
--transform-output file://transform-output.json \
--transform-resources file://transform-resources.json \
--region 'region
'
입력, 출력 및 리소스 세부 정보는 별도의 JSON 파일에 정의됩니다.
-
transform-input.json
:
{
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://my-input-data-bucket/path/to/input/data"
}
},
"ContentType": "text/csv",
"SplitType": "None"
}
-
transform-output.json
:
{
"S3OutputPath": "s3://my-output-bucket/path/to/output",
"AssembleWith": "Line"
}
-
transform-resources.json
:
배치 예측의 경우 범용 워크로드에는 m5.12xlarge 인스턴스를 사용하고 빅 데이터 예측 작업에는 m5.24xlarge
인스턴스를 사용합니다.
{
"InstanceType": "instance-type",
"InstanceCount": 1
}
-
다음 AWS CLI 명령을 예제로 참조하세요.
aws sagemaker describe-transform-job \
--transform-job-name 'transform-job-name
' \
--region region
-
배치 변환 출력을 검색합니다.
작업이 완료되면 예측된 결과를 S3OutputPath
에서 확인할 수 있습니다.
출력 파일 이름의 형식: input_data_file_name.out
. 예를 들어, 입력 파일이 text_x.csv
인 경우 출력 이름은 text_x.csv.out
입니다.
aws s3 ls s3://my-output-bucket/path/to/output/
다음 코드 예제에서는 AWS SDK for Python(boto3) 및 배치 예측 AWS CLI 을 위한의 사용을 보여줍니다.
- AWS SDK for Python (boto3)
-
다음 예제에서는 Python용AWS SDK(boto3)를 사용하여 배치 예측을 만듭니다.
import sagemaker
import boto3
session = sagemaker.session.Session()
sm_client = boto3.client('sagemaker', region_name='us-west-2
')
role = 'arn:aws:iam::1234567890:role/sagemaker-execution-role
'
output_path = 's3://test-auto-ml-job/output
'
input_data = 's3://test-auto-ml-job/test_X.csv
'
best_candidate = sm_client.describe_auto_ml_job_v2(AutoMLJobName=job_name)['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['CandidateName']
# create model
reponse = sm_client.create_model(
ModelName = best_candidate_name,
ExecutionRoleArn = role,
Containers = best_candidate_containers
)
# Lauch Transform Job
response = sm_client.create_transform_job(
TransformJobName=f'{best_candidate_name}-transform-job',
ModelName=model_name,
TransformInput={
'DataSource': {
'S3DataSource': {
'S3DataType': 'S3Prefix',
'S3Uri': input_data
}
},
'ContentType': "text/csv
",
'SplitType': 'None'
},
TransformOutput={
'S3OutputPath': output_path,
'AssembleWith': 'Line',
},
TransformResources={
'InstanceType': 'ml.m5.2xlarge
',
'InstanceCount': 1
,
},
)
배치 추론 작업에서는 다음 형식으로 응답을 반환합니다.
{'TransformJobArn': 'arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-transform-job
',
'ResponseMetadata': {'RequestId': '659f97fc-28c4-440b-b957-a49733f7c2f2',
'HTTPStatusCode': 200,
'HTTPHeaders': {'x-amzn-requestid': '659f97fc-28c4-440b-b957-a49733f7c2f2',
'content-type': 'application/x-amz-json-1.1',
'content-length': '96',
'date': 'Thu, 11 Aug 2022 22:23:49 GMT'},
'RetryAttempts': 0}}
- AWS Command Line Interface (AWS CLI)
-
-
최상의 후보 컨테이너 정의를 획득합니다.
aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name 'test-automl-job
' --region us-west-2
-
모델을 생성합니다.
aws sagemaker create-model --model-name 'test-sagemaker-model
'
--containers '[{
"Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3",
"ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz
",
"Environment": {
"AUTOML_SPARSE_ENCODE_RECORDIO_PROTOBUF": "1",
"AUTOML_TRANSFORM_MODE": "feature-transform",
"SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "application/x-recordio-protobuf",
"SAGEMAKER_PROGRAM": "sagemaker_serve",
"SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
}
}, {
"Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1-cpu-py3",
"ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/tuning/flicdf10v2-dpp0-xgb/test-job1E9-244-7490a1c0/output/model.tar.gz
",
"Environment": {
"MAX_CONTENT_LENGTH": "20971520",
"SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
"SAGEMAKER_INFERENCE_OUTPUT": "predicted_label",
"SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,probabilities"
}
}, {
"Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3",
"ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz
",
"Environment": {
"AUTOML_TRANSFORM_MODE": "inverse-label-transform",
"SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
"SAGEMAKER_INFERENCE_INPUT": "predicted_label",
"SAGEMAKER_INFERENCE_OUTPUT": "predicted_label",
"SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,labels,probabilities",
"SAGEMAKER_PROGRAM": "sagemaker_serve",
"SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
}
}]' \
--execution-role-arn 'arn:aws:iam::1234567890:role/sagemaker-execution-role
' \
--region 'us-west-2
'
-
모델 변환 작업을 생성합니다..
aws sagemaker create-transform-job --transform-job-name 'test-tranform-job
'\
--model-name 'test-sagemaker-model
'\
--transform-input '{
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://amzn-s3-demo-bucket/data.csv
"
}
},
"ContentType": "text/csv
",
"SplitType": "None"
}'\
--transform-output '{
"S3OutputPath": "s3://amzn-s3-demo-bucket/output/
",
"AssembleWith": "Line"
}'\
--transform-resources '{
"InstanceType": "ml.m5.2xlarge
",
"InstanceCount": 1
}'\
--region 'us-west-2
'
-
변환 작업의 진행 상황을 확인합니다.
aws sagemaker describe-transform-job --transform-job-name 'test-tranform-job
' --region us-west-2
다음은 변환 작업의 응답입니다.
{
"TransformJobName": "test-tranform-job
",
"TransformJobArn": "arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-tranform-job
",
"TransformJobStatus": "InProgress",
"ModelName": "test-model
",
"TransformInput": {
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://amzn-s3-demo-bucket/data.csv
"
}
},
"ContentType": "text/csv
",
"CompressionType": "None",
"SplitType": "None"
},
"TransformOutput": {
"S3OutputPath": "s3://amzn-s3-demo-bucket/output/
",
"AssembleWith": "Line",
"KmsKeyId": ""
},
"TransformResources": {
"InstanceType": "ml.m5.2xlarge
",
"InstanceCount": 1
},
"CreationTime": 1662495635.679,
"TransformStartTime": 1662495847.496,
"DataProcessing": {
"InputFilter": "$",
"OutputFilter": "$",
"JoinSource": "None"
}
}
TransformJobStatus
상태를 Completed
로 변경한 후에는 S3OutputPath
에서 추론 결과를 확인할 수 있습니다.