기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
생성된 컨테이너에 추론 출력을 구성하기
Autopilot은 순서가 지정된 ContainerDefinition
목록을 생성합니다. 이를 사용하여 기계 학습 파이프라인에 배포할 모델을 구축할 수 있습니다. 이 모델은 온라인 호스팅 및 추론에 사용할 수 있습니다.
고객은 ListCandidateForAutoMLJob
를 사용하여 추론 컨테이너 정의를 나열할 수 있습니다API. 최적의 후보를 나타내는 추론 컨테이너 정의 목록은 DescribeAutoMLJob
응답에서도 확인할 수 있습니다.
회귀 및 분류 문제 유형의 추론 컨테이너 정의
Autopilot은 훈련 모드 및 작업의 문제 유형에 맞는 추론 컨테이너를 생성합니다.
하이퍼파라미터 최적화(HPO) 모드의 컨테이너 정의
-
회귀 : 두 개의 컨테이너를 HPO 생성합니다.
-
원래의 기능을 회귀 알고리즘이 학습할 수 있는 기능으로 변환하는 기능 엔지니어링 컨테이너입니다.
-
기능을 변환하고 데이터 세트의 회귀 점수를 생성하는 알고리즘 컨테이너입니다.
-
-
분류: 는 세 개의 컨테이너를 HPO 생성합니다.
-
원래의 기능을 분류 알고리즘이 학습할 수 있는 기능으로 변환하는 기능 엔지니어링 컨테이너입니다.
-
가장 높은 확률의
predicted_label
을 생성하는 알고리즘 컨테이너입니다. 또한 이 컨테이너는 추론 응답의 분류 결과와 관련된 다양한 확률을 산출할 수 있습니다. -
알고리즘 예측의 사후 처리를 수행하는 기능 엔지니어링 컨테이너입니다. 예를 들어 예측된 레이블에 역변환을 수행하여 원래 레이블로 변경할 수 있습니다.
-
앙상블 모드의 컨테이너 정의
앙상블 모드에서는 회귀 및 분류 문제 유형 모두 추론 컨테이너가 단 하나입니다. 이 추론 컨테이너는 기능을 변환하고 문제 유형에 따라 예측을 생성합니다.
문제 유형별 추론 응답
분류 모델의 추론 응답
분류 추론 컨테이너의 경우 다음과 같이 사전 정의된 네 개의 키를 사용하여 추론 응답의 내용을 선택할 수 있습니다.
-
predicted_label
: Autopilot에 의해 결정된, 정확한 라벨을 예측할 확률이 가장 높은 라벨. -
probability
:-
HPO 모델: 이진 분류를 위한
True
클래스의 확률입니다. 멀티클래스 분류의predicted_label
확률. -
앙상블 모델: 바이너리 및 멀티클래스 분류의
predicted_label
확률.
-
-
probabilities
: 해당하는 모든 클래스의 확률 목록. -
labels
: 모든 레이블 목록.
예를 들어 바이너리 분류 문제의 경우 추론 응답 키 ['predicted_label', 'probability', 'probabilities', 'labels']
를 전달하고 출력 응답이 [1, 0.1, "[0.9, 0.1]", "['1', '0']"]
으로 나타나면 다음과 같이 해석해야 합니다.
-
predicted_label
은1
와 같습니다. 레이블 “1"의 확률이 더 높기 때문입니다(이 경우0.9
). -
HPO 모델의 경우
0.1
는 Autopilot에서 선택한positive_class
(0
이 경우)의 확률을probability
나타냅니다.앙상블 모델의 경우
probability
는predicted_label
의 확률인0.9
와 같습니다. -
probabilities
은labels
에 있는 각 레이블의probability
목록을 표시합니다. -
labels
는 데이터 세트의 고유한 레이블로, 두 번째 레이블(이 경우 “0")이 Autopilot이 선택한positive_class
입니다.
기본적으로 추론 컨테이너는 predicted_label
만 생성하도록 구성됩니다. 추가 추론 콘텐츠를 선택하려면 다음 세 가지 환경 변수를 포함하도록 inference_response_keys
파라미터를 업데이트하면 됩니다.
-
SAGEMAKER_INFERENCE_SUPPORTED
: 각 컨테이너가 지원하는 콘텐츠에 대한 힌트를 제공하도록 설정됩니다. -
SAGEMAKER_INFERENCE_INPUT
: 컨테이너가 입력 페이로드에서 예상하는 키로 설정해야 합니다. -
SAGEMAKER_INFERENCE_OUTPUT
: 컨테이너가 출력하는 키 세트로 채워져야 합니다.
HPO 모드의 분류 모델에 대한 추론 응답
이 섹션에서는 하이퍼파라미터 최적화(HPO) 모드를 사용하여 분류 모델에서 추론 응답을 구성하는 방법을 보여줍니다.
HPO 모드에서 추론 응답 콘텐츠를 선택하려면: 분류 문제에 대해 HPO 모드에서 생성된 두 번째 및 세 번째 컨테이너에 SAGEMAKER_INFERENCE_INPUT
및 SAGEMAKER_INFERENCE_OUTPUT
변수를 추가합니다.
두 번째 컨테이너(알고리즘)에서 지원하는 키는 predicted_label, probability 및 probabilities입니다. labels
은 의도적으로 SAGEMAKER_INFERENCE_SUPPORTED
에 추가하지 않았습니다.
세 번째 분류 모델 컨테이너에서 지원하는 키는predicted_label
, labels
, probability
및 probabilities
입니다. 따라서 SAGEMAKER_INFERENCE_SUPPORTED
환경에는 이러한 키의 이름이 포함됩니다.
predicted_label
및 probability
을 받을 추론 컨테이너 정의를 업데이트하려면 다음 코드 예제를 사용합니다.
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'}) containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'}) containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
다음 코드 예제는 predicted_label
, probabilities
및 labels
을 받을 추론 컨테이너 정의를 업데이트합니다. 두 번째 컨테이너(알고리즘 컨테이너)에 labels
을 전달하지 마세요. 이는 세 번째 컨테이너에서 독립적으로 생성됩니다.
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label,probabilities'}) containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label,probabilities'}) containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probabilities,labels'})
다음 축소 가능한 섹션에서는 Python용 AWS SDK for Python (Boto3) 및용 코드 예제 SageMaker SDK를 제공합니다. 각 섹션에서는 각 코드 예제에 대해 HPO 모드에서 추론 응답의 내용을 선택하는 방법을 보여줍니다.
import boto3 sm_client = boto3.client('sagemaker', region_name='
<Region>
') role = '<IAM role>
' input_data = '<S3 input uri>
' output_path = '<S3 output uri>
' best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='<AutoML Job Name>
')['BestCandidate'] best_candidate_containers = best_candidate['InferenceContainers'] best_candidate_name = best_candidate['CandidateName
'] best_candidate_containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'}) best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'}) best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'}) # create model reponse = sm_client.create_model( ModelName = '<Model Name>
', ExecutionRoleArn = role, Containers = best_candidate_containers ) # Lauch Transform Job response = sm_client.create_transform_job( TransformJobName='<Transform Job Name>
', ModelName='<Model Name>
', TransformInput={ 'DataSource': { 'S3DataSource': { 'S3DataType': 'S3Prefix
', 'S3Uri':input_data
} }, 'ContentType': "text/CSV", 'SplitType': 'Line' }, TransformOutput={ 'S3OutputPath':output_path
, 'AssembleWith': 'Line', }, TransformResources={ 'InstanceType': 'ml.m4.xlarge
', 'InstanceCount': 1, }, )
from sagemaker import AutoML aml = AutoML.attach(auto_ml_job_name='
<AutoML Job Name>
') aml_best_model = aml.create_model(name='<Model Name>
', candidate=None, inference_response_keys**=['probabilities', 'labels']) aml_transformer = aml_best_model.transformer(accept='text/csv', assemble_with='Line', instance_type='ml.m5.xlarge
', instance_count=1,) aml_transformer.transform('<S3 input uri>
', content_type='text/csv', split_type='Line', job_name='<Transform Job Name>
', wait=True)
앙상블 모드에서 분류 모델의 추론 응답
이 섹션에서는 앙상블 모드를 사용하여 분류 모델의 추론 응답을 구성하는 방법을 보여줍니다.
앙상블 모드에서 추론 응답의 내용을 선택하려면 SAGEMAKER_INFERENCE_OUTPUT
환경 변수를 업데이트합니다.
분류 모델 컨테이너에서 지원하는 키는predicted_label
, labels
, probability
및 probabilities
입니다. 이러한 키는 SAGEMAKER_INFERENCE_SUPPORTED
환경에 포함됩니다.
predicted_label
및 probability
를 받을 추론 컨테이너 정의를 업데이트하려면 다음 코드 예제를 참조하세요.
containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
다음 접이식 섹션에서는 앙상블 모드에서 추론 응답의 내용을 선택하기 위한 코드 예제를 제공합니다. 이 예제에서는 를 사용합니다 AWS SDK for Python (Boto3).
import boto3 sm_client = boto3.client('sagemaker', region_name='
<Region>
') role = '<IAM role>
' input_data = '<S3 input uri>
' output_path = '<S3 output uri>
' best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='<AutoML Job Name>
')['BestCandidate'] best_candidate_containers = best_candidate['InferenceContainers'] best_candidate_name = best_candidate['CandidateName
'] *best_candidate_containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'}) * # create model reponse = sm_client.create_model( ModelName = '<Model Name>
', ExecutionRoleArn = role, Containers = best_candidate_containers ) # Lauch Transform Job response = sm_client.create_transform_job( TransformJobName='<Transform Job Name>
', ModelName='<Model Name>
', TransformInput={ 'DataSource': { 'S3DataSource': { 'S3DataType': 'S3Prefix
', 'S3Uri': input_data } }, 'ContentType': "text/CSV", 'SplitType': 'Line' }, TransformOutput={ 'S3OutputPath': output_path, 'AssembleWith': 'Line', }, TransformResources={ 'InstanceType': 'ml.m4.xlarge
', 'InstanceCount': 1, }, )
다음 축소 가능 섹션에서는 의 Python SageMaker SDK용 예제와 동일한 코드 예제를 제공합니다HPO. 편의를 위해 포함되어 있습니다.
다음 HPO 코드 예제는 에서 Python에 사용합니다 SageMaker SDK.
from sagemaker import AutoML aml = AutoML.attach(auto_ml_job_name='<AutoML Job Name>') aml_best_model = aml.create_model(name='<Model Name>', candidate=None, *inference_response_keys**=['probabilities', 'labels'])* aml_transformer = aml_best_model.transformer(accept='text/csv', assemble_with='Line', instance_type='ml.m5.xlarge', instance_count=1,) aml_transformer.transform('<S3 input uri>', content_type='text/csv', split_type='Line', job_name='<Transform Job Name>', wait=True)