기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
이 섹션은 엔드포인트를 구성하기 전에 모델 컨테이너 입력 및 출력의 호환성을 사전 확인하는 방법을 보여줍니다. SageMaker Clarify의 설명자는 모델에 구애받지 않지만 모델 컨테이너 입력 및 출력에 대한 요구 사항이 있습니다.
참고
단일 요청으로 2개 이상의 레코드를 지원하는 배치 요청을 지원하도록 컨테이너를 구성하여 효율성을 높일 수 있습니다. 예를 들어 단일 레코드는 CSV 데이터 한 줄 또는 JSON 행 데이터 한 줄입니다. SageMaker Clarify는 단일 레코드 요청으로 돌아가기 전에 먼저 미니 배치의 레코드를 모델 컨테이너로 보내려고 시도합니다.
모델 컨테이너 입력
모델 컨테이너는 MIME 유형: text/csv
의 CSV 입력을 지원합니다. 다음 테이블에 SageMaker Clarify가 지원하는 입력의 예제가 나와 있습니다.
모델 컨테이너 입력(문자열 표현) | 설명 |
---|---|
'1,2,3,4' |
네 가지 수치적 특징을 사용하는 단일 레코드. |
'1,2,3,4\n5,6,7,8' |
줄 바꿈 '\n'으로 구분된 2개의 레코드 |
'"좋은 제품입니다”,5' |
텍스트 특징 1개 및 수치적 특징 1개를 포함한 단일 레코드. |
‘"좋은 제품입니다",5\n"나쁜 쇼핑 경험",1' |
레코드 2개. |
모델 컨테이너 출력
또한 모델 컨테이너 출력은 CSV 또는 JSON 행 밀집 형식이어야 합니다. 또한 모델 컨테이너에는 SageMaker Clarify가 기능 속성을 계산하는 데 사용하는 입력 레코드의 확률이 포함되어야 합니다.
다음 데이터 예제는 CSV 형식의 모델 컨테이너 출력에 대한 것입니다.
회귀 및 바이너리 분류 문제의 경우 모델 컨테이너는 예측 레이블의 단일 확률 값(점수)을 출력합니다. 열 인덱스 0을 사용하여 이러한 확률을 추출할 수 있습니다. 다중 클래스 문제의 경우 모델 컨테이너는 확률 목록(점수)을 출력합니다. 다중 클래스 문제의 경우 인덱스가 제공되지 않으면 모든 값이 추출됩니다.
모델 컨테이너 입력 | 모델 컨테이너 출력(문자열 표현) |
---|---|
단일 레코드 |
'0.6' |
레코드 2개(한 줄에 결과 표시) |
'0.6,0.3' |
레코드 2개(두 줄로 결과 표시) |
'0.6\n0.3' |
멀티클래스 모델의 단일 레코드(3개 클래스) |
'0.1,0.6,0.3' |
멀티클래스 모델의 레코드 2개(클래스 3개) |
'0.1,0.6,0.3\n0.2,0.5,0.3' |
다음 데이터 예제는 JSON 행 형식의 모델 컨테이너 출력에 대한 것입니다.
이 예제에서 모델 컨테이너는 JMESPath
score
로 추출할 수 있는 확률을 JSON 행 형식으로 출력합니다.
모델 컨테이너 입력 | 모델 컨테이너 출력 |
---|---|
단일 레코드 |
'{"score":0.6}' |
레코드 2개 |
'{"score":0.6}\n{"score":0.3}' |
모델 컨테이너 검증
모델을 SageMaker AI 실시간 추론 엔드포인트에 배포하고 엔드포인트에 요청을 보내는 것이 좋습니다. 요청(모델 컨테이너 입력)과 응답(모델 컨테이너 출력)을 수동으로 검사하여 둘 다 모델 컨테이너 입력 섹션 및 모델 컨테이너 출력 섹션의 요구 사항을 준수하는지 확인합니다. 모델 컨테이너가 배치 요청을 지원하는 경우, 먼저 단일 레코드 요청으로 시작했다가 이후 2개 이상의 레코드로 시도해볼 수 있습니다.
다음 명령은 AWS CLI를 사용하여 응답을 요청하는 방법을 보여줍니다. AWS CLI
는 SageMaker Studio Classic 및 SageMaker Notebook 인스턴스에 사전 설치되어 있습니다. 를 설치해야 하는 경우이 설치 안내서
aws sagemaker-runtime invoke-endpoint \
--endpoint-name $ENDPOINT_NAME \
--content-type $CONTENT_TYPE \
--accept $ACCEPT_TYPE \
--body $REQUEST_DATA \
$CLI_BINARY_FORMAT \
/dev/stderr 1>/dev/null
파라미터는 다음과 같이 정의됩니다.
-
$ENDPOINT NAME
: 엔드포인트의 이름. -
$CONTENT_TYPE
: 요청의 MIME 유형(모델 컨테이너 입력). -
$ACCEPT_TYPE
: 응답의 MIME 유형(모델 컨테이너 출력). -
$REQUEST_DATA
: 요청된 페이로드 문자열. -
$CLI_BINARY_FORMAT
: 명령줄 인터페이스(CLI) 파라미터 형식. AWS CLI v1의 경우이 파라미터는 비워 두어야 합니다. v2의 경우 이 파라미터를--cli-binary-format raw-in-base64-out
으로 설정해야 합니다.
참고
AWS CLI v2는 바이너리 파라미터를 base64로 인코딩된 문자열 기본값으로 전달합니다.
다음 예제에서는 AWS CLI v1을 사용합니다.
-
요청은 단일 레코드로 구성되며, 응답은 레코드의 확률 값에 해당합니다.
aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-sagemaker-xgboost-model \ --content-type text/csv \ --accept text/csv \ --body '1,2,3,4' \ /dev/stderr 1>/dev/null
출력:
0.6
-
요청은 두 개의 레코드로 구성되며, 응답에는 레코드의 확률이 포함되고, 모델은 확률을 쉼표로 구분합니다.
--body
에 포함된$'content'
표현식은 명령이 콘텐츠의\n
을 줄 바꿈으로 해석하도록 지시합니다.aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-sagemaker-xgboost-model \ --content-type text/csv \ --accept text/csv \ --body $'1,2,3,4\n5,6,7,8' \ /dev/stderr 1>/dev/null
출력:
0.6,0.3
-
요청은 두 개의 레코드로 구성되며, 응답에는 레코드의 확률이 포함되고, 모델은 확률을 줄 바꿈으로 구분합니다.
aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-csv-1 \ --content-type text/csv \ --accept text/csv \ --body $'1,2,3,4\n5,6,7,8' \ /dev/stderr 1>/dev/null
출력:
0.6
0.3
-
요청은 단일 레코드로 구성되며 응답은 확률 값(다중 클래스 모델, 세 가지 클래스)입니다.
aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-csv-1 \ --content-type text/csv \ --accept text/csv \ --body '1,2,3,4' \ /dev/stderr 1>/dev/null
출력:
0.1,0.6,0.3
-
요청은 레코드 2개로 구성되며, 응답에는 해당 레코드의 확률 값(다중 클래스 모델, 세 가지 클래스)이 포함됩니다.
aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-csv-1 \ --content-type text/csv \ --accept text/csv \ --body $'1,2,3,4\n5,6,7,8' \ /dev/stderr 1>/dev/null
출력:
0.1,0.6,0.3
0.2,0.5,0.3
-
요청은 레코드 2개로 구성되며, 응답에는 예측 레이블과 확률이 포함됩니다.
aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-csv-2 \ --content-type text/csv \ --accept text/csv \ --body $'1,2,3,4\n5,6,7,8' \ /dev/stderr 1>/dev/null
출력:
1,0.6
0,0.3
-
요청은 레코드 2개로 구성되며, 응답에는 레이블 헤더와 확률이 포함됩니다.
aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-csv-3 \ --content-type text/csv \ --accept text/csv \ --body $'1,2,3,4\n5,6,7,8' \ /dev/stderr 1>/dev/null
출력:
"['cat','dog','fish']","[0.1,0.6,0.3]"
"['cat','dog','fish']","[0.2,0.5,0.3]"
검증이 완료된 후 테스트 엔드포인트를 삭제하세요.