추론을 위한 공통 데이터 형식 - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

추론을 위한 공통 데이터 형식

아마존 SageMaker 알고리즘은 온라인 및 미니 배치 예측을 가져오는 데 사용되는 HTTP 페이로드에 대한 여러 가지 MIME 유형을 수락 및 생산합니다. 다양하게 사용할 수 있습니다AWS추론 실행에 앞서 레코드를 변형 또는 사전 처리할 수 있습니다. 최소한 다음에 대한 데이터를 변환해야 합니다.

  • 추론 요청 직렬화(사용자가 처리)

  • 추론 요청 역직렬화(알고리즘이 처리)

  • 추론 응답 직렬화(알고리즘이 처리)

  • 추론 응답 역직렬화(사용자가 처리)

추론 요청 직렬화를 위한 데이터 변환

아마존의 콘텐츠 유형 옵션 SageMaker 알고리즘 추론 요청에는 다음이 포함됩니다.text/csv,application/json, 및application/x-recordio-protobuf. 이러한 유형을 모두 지원하지 않는 알고리즘은 다른 유형을 지원할 수 있습니다. 예를 들어 XGBoost는 이 목록에서 text/csv만 지원하지만 text/libsvm도 지원합니다.

text/csv, Body 인수의 값은invoke_endpoint는 각 특징에 대한 값을 쉼표로 구분하는 문자열이어야 합니다. 예를 들어 4가지 특징이 포함된 모델에 대한 레코드는 이런 모습일 수 있습니다.1.5,16.0,14,23.0. 교육 데이터에서 수행되는 모든 변형은 또한 추론을 얻기 전 데이터에서 수행되어야 합니다. 특징의 순서가 중요하고, 변경되어서는 안 됩니다.

application/json은 매우 유연하고 개발자가 애플리케이션에서 사용할 수 있는 여러 형식을 제공합니다. 상위 수준에서 JavaScript의 경우 페이로드는 다음과 같습니다.

let request = { // Instances might contain multiple rows that predictions are sought for. "instances": [ { // Request and algorithm specific inference parameters. "configuration": {}, // Data in the specific format required by the algorithm. "data": { "<field name>": dataElement } } ] }

dataElement 지정에 대해 다음과 같은 옵션이 있습니다.

프로토콜 버퍼 동일

// Has the same format as the protocol buffers implementation described for training. let dataElement = { "keys": [], "values": [], "shape": [] }

단순한 숫자 벡터

// An array containing numeric values is treated as an instance containing a // single dense vector. let dataElement = [1.5, 16.0, 14.0, 23.0] // It will be converted to the following representation by the SDK. let converted = { "features": { "values": dataElement } }

여러 레코드의 경우

let request = { "instances": [ // First instance. { "features": [ 1.5, 16.0, 14.0, 23.0 ] }, // Second instance. { "features": [ -2.0, 100.2, 15.2, 9.2 ] } ] }

추론 응답 역직렬화를 위한 데이터 변환

아마존 SageMaker 알고리즘은 여러 레이아웃에서 JSON을 반환합니다. 상위 수준에서 구조는 다음과 같습니다.

let response = { "predictions": [{ // Fields in the response object are defined on a per algorithm-basis. }] }

알고리즘 간 다른 예측이 포함된 필드입니다. 다음은 k-means 알고리즘 출력의 예제입니다.

단일 레코드 추론

let response = { "predictions": [{ "closest_cluster": 5, "distance_to_cluster": 36.5 }] }

다중 레코드 추론

let response = { "predictions": [ // First instance prediction. { "closest_cluster": 5, "distance_to_cluster": 36.5 }, // Second instance prediction. { "closest_cluster": 2, "distance_to_cluster": 90.3 } ] }

protobuf 입력이 포함된 다중 레코드 추론

{ "features": [], "label": { "closest_cluster": { "values": [ 5.0 ] // e.g. the closest centroid/cluster was 1.0 }, "distance_to_cluster": { "values": [ 36.5 ] } }, "uid": "abc123", "metadata": "{ "created_at": '2017-06-03' }" }

SageMaker 또한 알고리즘은 레코드당 응답 콘텐츠가 JSON 형식과 동일한 JSONLINES 형식을 지원합니다. 멀티 레코드 구조는 줄 바꿈 문자로 구분되는 레코드당 응답 객체가 연속되어 있습니다. 입력 데이터 포인트 2개에 대한 기본 제공 KMeans 알고리즘의 응답 콘텐츠는 다음과 같습니다.

{"distance_to_cluster": 23.40593910217285, "closest_cluster": 0.0} {"distance_to_cluster": 27.250282287597656, "closest_cluster": 0.0}

배치 변환을 실행하는 동안 다음을 사용하는 것이 좋습니다.jsonlines다음을 설정하여 응답 유형Accept필드CreateTransformJobRequestapplication/jsonlines.

모든 알고리즘에 대한 공통 요청 형식

대부분 알고리즘은 다음과 같은 여러 가지 추론 요청 형식을 사용합니다.

JSON 요청 형식

콘텐츠 유형application/JSON

밀집 형식

let request = { "instances": [ { "features": [1.5, 16.0, 14.0, 23.0] } ] } let request = { "instances": [ { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } } ] }

희소 형식

{ "instances": [ {"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }, {"data": {"features": { "keys": [0, 182, 232, 243, 431], "shape": [2000], "values": [13, 1, 1, 4, 1] } } }, ] }

JSONLINES 요청 형식

콘텐츠 유형application/jsonlines

밀집 형식

밀집 형식의 단일 레코드는 다음 중 하나로 표현될 수 있습니다.

{ "features": [1.5, 16.0, 14.0, 23.0] }

또는:

{ "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } }

희소 형식

희소 형식의 단일 레코드는 다음 중 하나로 표현될 수 있습니다.

{"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }

멀티 레코드는 줄 바꿈 문자로 구분되는 위의 단일 레코드 표현이 연결된 형태로 표현됩니다.

{"data": {"features": { "keys": [0, 1, 3], "shape": [4], "values": [1, 4, 1] } } } { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } { "features": [1.5, 16.0, 14.0, 23.0] }

CSV 요청 형식

콘텐츠 유형text/csv; label_size=0

참고

Factorization Machine에 대해 CSV 지원을 이용할 수 없습니다.

RECORDIO 요청 형식

Contject type: application/x-recordio-protobuf

내장 알고리즘과 함께 Batch 변환 사용

알고리즘에서 지원하는 경우 배치 변환을 실행하는 동안에는 알고리즘에서 지원하는 경우 JSON 대신 JSONLINES 응답 유형을 사용하는 것이 좋습니다. CreateTransformJobRequestAccept 필드를 application/jsonlines으로 설정하면 jsonlines 응답 유형을 사용할 수 있습니다.

변환 작업을 생성할 때 SplitType은 입력 데이터의 ContentType에 따라 설정해야 합니다. 마찬가지로, CreateTransformJobRequestAccept 필드에 따라 AssembleWith를 설정해야 합니다. 이러한 필드를 적절하게 설정하려면 다음 표를 참조하십시오.

ContentType 권장 SplitType
application/x-recordio-protobuf RecordIO
text/csv Line
application/jsonlines Line
application/json None
application/x-image None
image/* None
Accept 권장 AssembleWith
application/x-recordio-protobuf None
application/json None
application/jsonlines Line

특정 응답 형식에 대한 자세한 정보알고리즘자세한 내용은 단원을 참조하십시오.