예측 결과를 입력 레코드에 연결 - Amazon SageMaker

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

예측 결과를 입력 레코드에 연결

대규모 데이터 세트에서 예측을 실행할 경우 예측에 필요하지 않은 속성을 제외할 수 있습니다. 예측을 실행한 후 때로는 제외된 속성 일부를 보고서에서 해당 예측 또는 다른 입력 데이터에 연결할 수 있습니다. 배치 변환을 사용하여 이러한 데이터 처리 단계를 수행하면 추가적인 사전 처리나 사후 처리가 필요 없습니다. 입력 파일은 JSON 및 CSV 형식으로만 사용할 수 있습니다.

추론을 입력 레코드에 연결하는 워크플로

다음 다이어그램은 추론을 입력 레코드에 연결하는 워크플로를 보여줍니다.

추론을 입력 레코드와 연결하기 위한 워크플로입니다.

추론을 입력 데이터에 연결할 때 다음 세 가지 단계가 있습니다.

  1. 입력 데이터를 배치 변환 작업에 전달하기 전에 추론에 필요하지 않은 입력 데이터를 필터링합니다. InputFilter 파라미터를 사용하여 어느 속성을 모델에 대한 입력으로 사용할지 결정합니다.

  2. 입력 데이터를 추론 결과에 연결합니다. JoinSource 파라미터를 사용하여 입력 데이터를 추론과 결합합니다.

  3. 조인된 데이터를 필터링하여 보고서에서 예측을 해석하기 위한 컨텍스트를 제공하는 데 필요한 입력을 유지합니다. OutputFilter를 사용하여 조인된 데이터 세트의 지정된 부분을 출력 파일에 저장합니다.

배치 변환 작업에서 데이터 처리 사용

CreateTransformJob을 사용하여 데이터를 처리할 배치 변환 작업을 생성하는 경우 다음을 수행합니다.

  1. DataProcessing 데이터 구조에서 InputFilter 파라미터를 사용하여 모델로 전달할 입력 부분을 지정합니다.

  2. JoinSource 파라미터를 사용하여 원시 데이터를 변환된 데이터와 조인합니다.

  3. OutputFilter 파라미터를 사용하여 조인된 입력과 배치 변환 작업에서 변환된 데이터의 어떤 부분을 출력 파일에 포함할지 지정합니다.

  4. 입력할 형식 파일 또는 JSON CSV형식 파일 중 하나를 선택합니다.

    • JSON- 또는 JSON 줄 형식의 입력 파일의 경우 는 속성을 입력 파일에 SageMaker 추가하거나 SageMakerInputSageMakerOutput 속성이 포함된 새 JSON 출력 파일을 생성합니다SageMakerOutput. 자세한 내용은 DataProcessing 단원을 참조하십시오.

    • CSV형식이 지정된 입력 파일의 경우 조인된 입력 데이터에 변환된 데이터가 이어지고 출력은 CSV 파일입니다.

DataProcessing 구조를 포함하는 알고리즘을 사용하는 경우, 해당 알고리즘이 입력 및 출력 파일 모두에 대해 선택한 형식을 지원해야 합니다. 예를 들어, CreateTransformJobTransformOutput 필드를 사용하면 ContentTypeAccept 파라미터를 모두 text/csv, application/json또는 중 하나로 설정해야 API합니다application/jsonlines. CSV 파일에서 열을 지정하고 JSON 파일에서 속성을 지정하는 구문은 다릅니다. 잘못된 구문을 사용하면 오류가 발생합니다. 자세한 내용은 배치 변환 예제 단원을 참조하십시오. 기본 제공 알고리즘을 위한 입력 및 출력 형식에 대한 자세한 내용은 Amazon의 내장 알고리즘 및 사전 훈련된 모델 SageMaker 섹션을 참조하세요.

입력 및 출력용 레코드 구분 기호 역시 선택한 파일 입력과 일치해야 합니다. SplitType 파라미터는 입력 데이터 세트에서 레코드를 분할하는 방법을 나타냅니다. AssembleWith 파라미터는 출력의 레코드를 리어셈블하는 방법을 나타냅니다. 입력 및 출력 형식을 text/csv로 설정한 경우, SplitTypeAssembleWith 파라미터를 line으로 설정해야 합니다. 입력 및 출력 형식을 application/jsonlines로 설정한 경우, SplitTypeAssembleWith 모두 line으로 설정할 수 있습니다.

CSV 파일의 경우 포함된 새 줄 문자를 사용할 수 없습니다. JSON 파일의 경우 속성 이름은 출력용으로 예약SageMakerOutput됩니다. JSON 입력 파일에는 이 이름의 속성이 있을 수 없습니다. 그럴 경우 입력 파일의 해당 데이터가 덮여 쓰일 수 있습니다.

지원되는 JSONPath 연산자

입력 데이터와 추론을 필터링하고 조인하려면 JSONPath 하위 표현식을 사용합니다. SageMaker 는 정의된 JSONPath 연산자의 하위 집합만 지원합니다. 다음 표에는 지원되는 JSONPath 연산자가 나열되어 있습니다. CSV 데이터의 경우 각 행은 JSON 배열로 간주되므로 , 와 같은 인덱스 기반 $[0]만 적용할 JSONPaths 수 있습니다$[1:]. CSV 데이터는 RFC 형식 도 따라야 합니다.

JSONPath 연산자 설명
$

쿼리의 루트 요소. 이 연산자는 모든 경로 표현식의 시작 부분에 필요합니다.

$
.<name>

점으로 표기된 하위 요소.

$.id

*

와일드카드. 속성 이름 또는 숫자 값 대신 사용합니다.

$.id.*

['<name>' (,'<name>')]

괄호로 표기된 요소 또는 다중 하위 요소.

$['id','SageMakerOutput']

[<number> (,<number>)]

인덱스 또는 인덱스 배열. 음의 인덱스 값도 지원됩니다. -1 인덱스는 특정 배열의 마지막 요소를 말합니다.

$[1] , $[1,3,5]

[<start>:<end>]

배열 조각 연산자. 배열 조각() 메서드는 배열의 한 부분을 추출하고 새 배열을 반환합니다. 생략하는 경우 <start>, 배열의 첫 번째 요소를 SageMaker 사용합니다. 생략하는 경우 <end>, 배열의 마지막 요소를 SageMaker 사용합니다.

$[2:5], $[:5], $[2:]

대괄호 표기법을 사용하여 주어진 필드의 여러 하위 요소를 지정하는 경우 대괄호 안에 하위 요소를 추가 중첩할 수 없습니다. 예를 들어 $.field1.['child1','child2']는 지원되는 반면 $.field1.['child1','child2.grandchild']는 지원되지 않습니다.

JSONPath 연산자에 대한 자세한 내용은 JsonPath의 섹션을 참조하세요 GitHub.

배치 변환 예제

다음 예제에서는 입력 데이터를 예측 결과와 조인하는 몇 가지 일반적인 방법을 보여줍니다.

예제: 추론만 출력

기본적으로 DataProcessing 파라미터는 추론 결과를 입력과 조인하지 않습니다. 추론 결과만 출력합니다.

입력으로 결과를 조인하지 않도록 명시적으로 지정하려면 Amazon SageMaker PythonSDK을 사용하고 변환기 호출에서 다음 설정을 지정합니다.

sm_transformer = sagemaker.transformer.Transformer(…) sm_transformer.transform(…, input_filter="$", join_source= "None", output_filter="$")

for Python을 AWS SDK 사용하여 추론을 출력하려면 CreateTransformJob 요청에 다음 코드를 추가합니다. 다음 코드는 기본 동작을 모방합니다.

{ "DataProcessing": { "InputFilter": "$", "JoinSource": "None", "OutputFilter": "$" } }

예제: 입력 데이터와 조인된 추론 출력

Amazon SageMaker PythonSDK을 사용하여 입력 데이터를 출력 파일의 추론과 결합하는 경우 변환기 객체를 초기화할 때 assemble_withaccept 파라미터를 지정합니다. 변환 호출을 사용할 때는 join_source 파라미터에 대해 Input을 지정하고 split_typecontent_type 파라미터도 지정하세요. split_type 파라미터는 assemble_with와 같은 값을 가져야 하고 content_type 파라미터는 accept와 같은 값을 가져야 합니다. 파라미터 및 허용되는 값에 대한 자세한 내용은 Amazon SageMaker Python SDKTransformer 페이지를 참조하세요.

sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv") sm_transformer.transform(…, join_source="Input", split_type="Line", content_type="text/csv")

for Python(Boto 3)을 AWS SDK 사용하는 경우 CreateTransformJob 요청에 다음 코드를 추가하여 모든 입력 데이터를 추론과 조인합니다. AcceptContentType의 값이 일치해야 하고, AssembleWithSplitType의 값도 일치해야 합니다.

{ "DataProcessing": { "JoinSource": "Input" }, "TransformOutput": { "Accept": "text/csv", "AssembleWith": "Line" }, "TransformInput": { "ContentType": "text/csv", "SplitType": "Line" } }

JSON 또는 JSON 행 입력 파일의 경우 결과는 입력 JSON 파일의 SageMakerOutput 키에 있습니다. 예를 들어, 입력이 키-값 페어가 포함된 JSON 파일인 경우 {"key":1}데이터 변환 결과는 일 수 있습니다{"label":1}.

SageMaker 는 둘 다 SageMakerInput 키의 입력 파일에 저장합니다.

{ "key":1, "SageMakerOutput":{"label":1} }
참고

에 대해 조인된 결과는 키-값 페어 객체여야 JSON 합니다. 입력이 키-값 페어 객체가 아닌 경우 는 새 JSON 파일을 SageMaker 생성합니다. 새 JSON 파일에서 입력 데이터는 SageMakerInput 키에 저장되고 결과는 SageMakerOutput 값으로 저장됩니다.

예를 들어 CSV 파일의 경우 레코드가 [1,2,3]이고 레이블 결과가 인 경우 출력 파일에 [1]가 포함됩니다[1,2,3,1].

예: 입력 데이터와 조인된 출력 추론 및 입력에서 ID 열 제외(CSV)

Amazon SageMaker PythonSDK을 사용하여 트랜스포머 입력에서 ID 열을 제외하면서 입력 데이터를 추론 출력과 조인하는 경우 이전 예제와 동일한 파라미터와 트랜스포머 호출input_filter의 에 대한 JSONPath 하위 표현식을 지정합니다. 예를 들어 입력 데이터가 5개 열을 포함하고 첫 번째 열이 ID 열인 경우, 다음과 같은 변환기 요청을 사용하여 기능으로 ID 열을 제외한 모든 열을 선택하세요. 변환기는 여전히 추론과 조인된 모든 입력 열을 출력합니다. 파라미터 및 허용되는 값에 대한 자세한 내용은 Amazon SageMaker PythonSDKTransformer 페이지를 참조하세요.

sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv") sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input")

Python용(Boto 3)을 AWS SDK 사용하는 경우 CreateTransformJob 요청에 다음 코드를 추가합니다.

{ "DataProcessing": { "InputFilter": "$[1:]", "JoinSource": "Input" }, "TransformOutput": { "Accept": "text/csv", "AssembleWith": "Line" }, "TransformInput": { "ContentType": "text/csv", "SplitType": "Line" } }

에서 열을 지정하려면 배열 요소의 인덱스를 SageMaker사용합니다. 첫 번째 열은 인덱스 0, 두 번째 열은 인덱스 1, 여섯 번째 열은 인덱스 5입니다.

입력에서 첫 번째 열을 제외하려면 InputFilter"$[1:]"로 설정합니다. 콜론(:)은 두 값 사이의 모든 요소를 SageMaker 포함하도록 지시합니다. 예를 들어, $[1:4]는 두 번째 열부터 다섯 번째 열까지 지정합니다.

예를 들어, [5:] 같이 콜론 뒤의 숫자를 생략할 경우 하위 집합에 여섯 번째 열부터 마지막 열까지 모든 열이 포함됩니다. 예를 들어, [:5] 같이 콜론 앞의 숫자를 생략할 경우 하위 집합에 첫 번째 열(인덱스 0)부터 여섯 번째 열까지 모든 열이 포함됩니다.

예: ID 열로 조인된 출력 추론 및 입력에서 ID 열 제외(CSV)

Amazon SageMaker Python SDK을 사용하는 경우 변환기 호출output_filter에서 를 지정하여 특정 입력 열(예: ID 열)만 추론과 조인하도록 출력을 지정할 수 있습니다. 는 JSONPath 하위 표현식을 output_filter 사용하여 입력 데이터를 추론 결과와 조인한 후 출력으로 반환할 열을 지정합니다. 다음 요청은 ID 열을 제외한 상태에서 예측한 다음 ID 열을 추론과 결합하는 방법을 보여줍니다. 다음 예제에서는 출력의 마지막 열(-1)에 추론이 포함되어 있다는 점에 유의하세요. JSON 파일을 사용하는 경우 는 추론 결과를 속성 에 SageMaker 저장합니다SageMakerOutput. 파라미터 및 허용되는 값에 대한 자세한 내용은 Amazon SageMaker PythonSDKTransformer 페이지를 참조하세요.

sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv") sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input", output_filter="$[0,-1]")

Python용 (Boto 3) 를 AWS SDK 사용하는 경우 CreateTransformJob 요청에 다음 코드를 추가하여 추론과 ID 열만 조인합니다.

{ "DataProcessing": { "InputFilter": "$[1:]", "JoinSource": "Input", "OutputFilter": "$[0,-1]" }, "TransformOutput": { "Accept": "text/csv", "AssembleWith": "Line" }, "TransformInput": { "ContentType": "text/csv", "SplitType": "Line" } }
주의

JSON형식이 지정된 입력 파일을 사용하는 경우 파일에 속성 이름 이 포함될 수 없습니다SageMakerOutput. 이 속성 이름은 출력 파일에서 추론용으로 예약됩니다. JSON형식이 지정된 입력 파일에 이 이름의 속성이 포함된 경우 입력 파일의 값을 추론으로 덮어쓸 수 있습니다.