사용자 지정 작업자 작업 템플릿 생성하기 - Amazon SageMaker AI

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

사용자 지정 작업자 작업 템플릿 생성하기

사용자 지정 레이블 지정 작업을 생성하려면 작업자 작업 템플릿을 업데이트하고 매니페스트 파일의 입력 데이터를 템플릿에 사용된 변수에 매핑하고 출력 데이터를 Amazon S3에 매핑해야 합니다. Liquid 자동화를 사용하는 고급 기능에 대한 자세한 내용은 Liquid를 사용하여 자동화 추가 섹션을 참조하세요.

다음 섹션에서는 각 필수 단계에 대해 설명합니다.

작업자 작업 템플릿

작업자 작업 템플릿은 Ground Truth에서 작업자 사용자 인터페이스(UI)를 사용자 지정하는 데 사용하는 파일입니다. HTML, CSS, JavaScript, Liquid 템플릿 언어군중 HTML 요소를 사용하여 작업자 작업 템플릿을 생성할 수 있습니다. Liquid는 템플릿을 자동화하는 데 사용됩니다. 군중 HTML 요소를 사용하여 일반적인 주석 도구를 포함하고 Ground Truth에 제출할 로직을 제공합니다.

다음 항목을 사용하여 작업자 작업 템플릿을 생성하는 방법을 알아보세요. GitHub에서 Ground Truth 작업자 작업 템플릿 예시의 리포지토리를 볼 수 있습니다.

SageMaker AI 콘솔에서 기본 작업자 작업 템플릿 사용

Ground Truth 콘솔의 템플릿 편집기를 사용하여 템플릿 생성을 시작할 수 있습니다. 이 편집기에는 미리 설계된 여러 기본 템플릿이 포함되어 있습니다. HTML 및 Crowd HTML 요소 코드에 대한 자동 채우기를 지원합니다.

Ground Truth 사용자 지정 템플릿 편집기에 액세스하는 방법:
  1. 레이블 지정 작업 생성(콘솔)의 지침을 따르세요.

  2. 그런 다음 레이블링 작업 작업 유형에 대해 사용자 지정을 선택합니다.

  3. 다음을 선택하면 사용자 지정 레이블 지정 설정 섹션에서 템플릿 편집기와 기본 템플릿에 액세스할 수 있습니다.

  4. (선택 사항) 템플릿 아래의 드롭다운 메뉴에서 기본 템플릿을 선택합니다. 템플릿을 처음부터 새로 만들려면 드롭다운 메뉴에서 사용자 지정을 선택하여 템플릿의 틀만 최소한으로 사용합니다.

다음 섹션을 사용하여 콘솔에서 로컬로 개발된 템플릿을 시각화하는 방법을 알아봅니다.

로컬에서 작업자 작업 템플릿 시각화

콘솔을 사용하여 템플릿이 수신 데이터를 처리하는 방법을 테스트해야 합니다. 템플릿의 HTML 및 사용자 지정 요소의 모양과 느낌을 테스트하려면 브라우저를 사용할 수 있습니다.

참고

변수는 구문 분석되지 않습니다. 콘텐츠를 로컬에서 보는 동안 이를 샘플 콘텐츠로 교체해야 할 수 있습니다.

다음 예제 코드 조각은 사용자 지정 HTML 요소를 렌더링하는 데 필요한 코드를 로드합니다. 콘솔이 아니라 원하는 편집기에서 템플릿의 모양 및 느낌을 개발하려면 이 방법을 사용하세요.

<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>

간단한 HTML 작업 샘플 생성

이제 기본 작업자 작업 템플릿이 있으므로 이 주제를 사용하여 간단한 HTML 기반 작업 템플릿을 생성할 수 있습니다.

다음은 입력 매니페스트 파일의 예제 항목입니다.

{ "source": "This train is really late.", "labels": [ "angry" , "sad", "happy" , "inconclusive" ], "header": "What emotion is the speaker feeling?" }

HTML 작업 템플릿에서는 입력 매니페스트 파일의 변수를 템플릿에 매핑해야 합니다. 예제 입력 매니페스트의 변수는 다음 구문 task.input.source, task.input.labelstask.input.header를 사용하여 매핑됩니다.

다음은 트윗 분석을 위한 간단한 HTML 작업자 작업 템플릿의 예입니다. 모든 작업이 <crowd-form> </crowd-form> 요소로 시작하고 끝납니다. 표준 HTML <form> 요소처럼 모든 양식 코드는 이 요소 사이에 있어야 합니다. Ground Truth는 사전 주석 Lambda를 구현하지 않는 한 템플릿에 지정된 컨텍스트에서 작업자의 작업을 직접 생성합니다. Ground Truth에서 반환한 taskInput 객체 또는 주석 전 Lambda는 템플릿의 task.input 객체입니다.

간단한 트윗 분석 작업의 경우 <crowd-classifier> 요소를 사용합니다. 이 작업에는 다음 속성이 필요합니다.

  • name - 출력 변수의 이름입니다. 작업자 주석은 출력 매니페스트의 이 변수 이름에 저장됩니다.

  • categories - 가능한 답변의 JSON 형식 어레이

  • header - 주석 도구의 제목

<crowd-classifier> 요소에는 다음 세 가지 하위 요소가 필요합니다.

  • <classification-target> - 위의 categories 속성에서 지정한 옵션을 기반으로 작업자가 분류할 텍스트

  • <full-instructions> - 도구의 "View full instructions(전체 지침 보기)" 링크에서 확인할 수 있는 지침 비워둘 수 있지만 더 나은 결과를 얻기 위해서는 적절한 지침을 제공하는 것이 좋습니다.

  • <short-instructions> - 도구의 사이드바에 나타나는 작업에 대한 보다 간단한 설명 비워둘 수 있지만 더 나은 결과를 얻기 위해서는 적절한 지침을 제공하는 것이 좋습니다.

이 도구의 간단한 버전의 모양은 다음과 같습니다. 변수{{ task.input.source }}는 입력 매니페스트 파일의 소스 데이터를 지정합니다. {{ task.input.labels | to_json }}은 배열을 JSON 표현으로 변환하기 위한 변수 필터의 예시입니다. categories 속성은 JSON이어야 합니다.

예 샘플 입력 매니페스트 json과 함께 crowd-classifier 사용
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script> <crowd-form> <crowd-classifier name="tweetFeeling" categories="='{{ task.input.labels | to_json }}'" header="{{ task.input.header }}'" > <classification-target> {{ task.input.source }} </classification-target> <full-instructions header="Sentiment Analysis Instructions"> Try to determine the sentiment the author of the tweet is trying to express. If none seem to match, choose "cannot determine." </full-instructions> <short-instructions> Pick the term that best describes the sentiment of the tweet. </short-instructions> </crowd-classifier> </crowd-form>

Ground Truth 라벨링 작업 생성 워크플로에서 코드를 복사하여 편집기에 붙여 넣고 도구를 미리 보거나 CodePen에서 이 코드의 데모를 볼 수 있습니다.

View a demo of this sample template on CodePen

입력 데이터, 외부 자산 및 작업 템플릿

다음 섹션에서는 외부 자산 사용, 입력 데이터 형식 요구 사항 및 주석 전 Lambda 함수 사용을 고려해야 하는 경우를 설명합니다.

입력 데이터 형식 요구 사항

사용자 지정 Ground Truth 레이블 지정 작업에 사용할 입력 매니페스트 파일을 생성할 때는 Amazon S3에 데이터를 저장해야 합니다. 입력 매니페스트 파일은 사용자 지정 Ground Truth 레이블 지정 작업을 실행할 때와 동일한 AWS 리전 에 저장해야 합니다. 또한, Ground Truth에서 사용자 지정 레이블 지정 작업을 실행하는 데 사용하는 IAM 서비스 역할에 액세스할 수 있는 모든 Amazon S3 버킷에 저장할 수 있습니다.

입력 매니페스트 파일은 새 줄로 구분된 JSON 또는 JSON 줄 형식을 사용해야 합니다. 각 행은 표준 줄 바꿈인 \n 또는 \r\n으로 구분됩니다. 각 줄은 유효한 JSON 객체여야 합니다.

또한 매니페스트 파일의 각 JSON 객체에는 source-ref 또는 source 키 중 하나가 포함되어야 합니다. 키 값은 다음과 같이 해석됩니다.

  • source-ref – 객체의 소스는 값에 지정된 Amazon S3 객체입니다. 객체가 바이너리 객체(예: 이미지)인 경우 이 값을 사용하세요.

  • source – 객체의 소스가 이 값입니다. 객체가 문자 값일 때 이 값을 사용하세요.

입력 매니페스트 파일 형식 지정에 대한 자세한 내용은 매니페스트 파일 입력 섹션을 참조하세요.

주석 전 Lambda 함수

선택적으로 사전 주석 Lambda 함수를 지정하여 레이블 지정 전에 입력 매니페스트 파일의 데이터가 처리되는 방식을 관리할 수 있습니다. isHumanAnnotationRequired 키-값 페어를 지정한 경우 사전 주석 Lambda 함수를 사용해야 합니다. Ground Truth가 사전 주석 Lambda 함수에 JSON 형식의 요청을 보내면 다음 스키마를 사용합니다.

source-ref 키-값 페어로 식별된 데이터 객체
{ "version": "2018-10-16", "labelingJobArn": arn:aws:lambda:us-west-2:555555555555:function:my-function "dataObject" : { "source-ref": s3://input-data-bucket/data-object-file-name } }
source 키-값 페어로 식별된 데이터 객체
{ "version": "2018-10-16", "labelingJobArn" : arn:aws:lambda:us-west-2:555555555555:function:my-function "dataObject" : { "source": Sue purchased 10 shares of the stock on April 10th, 2020 } }

다음은 를 isHumanAnnotationRequired 사용할 때 Lambda 함수에서 예상되는 응답입니다.

{ "taskInput": { "source": "This train is really late.", "labels": [ "angry" , "sad" , "happy" , "inconclusive" ], "header": "What emotion is the speaker feeling?" }, "isHumanAnnotationRequired": False }

외부 자산 사용

Amazon SageMaker Ground Truth 사용자 지정 템플릿을 사용하면 외부 스크립트 및 스타일 시트를 포함할 수 있습니다. 예를 들어, 다음 코드 블록은 https://www.example.com/my-enhancement-styles.css에 있는 스타일 시트를 템플릿에 추가하는 방법을 보여줍니다.

<script src="https://www.example.com/my-enhancment-script.js"></script> <link rel="stylesheet" type="text/css" href="https://www.example.com/my-enhancement-styles.css">

오류가 발생하면 원본 서버가 자산과 함께 올바른 MIME 유형 및 인코딩 헤더를 보내고 있는지 확인하세요.

예를 들어, 원격 스크립트의 MIME 및 인코딩 유형은 다음과 같습니다: application/javascript;CHARSET=UTF-8.

원격 스타일 시트의 MIME 및 인코딩 유형: text/css;CHARSET=UTF-8.

출력 데이터 및 작업 템플릿

다음 섹션에서는 사용자 지정 레이블 지정 작업의 출력 데이터와 주석 후 Lambda 함수 사용을 고려해야 하는 경우를 설명합니다.

출력 데이터

사용자 지정 레이블 지정 작업이 완료되면 레이블 지정 작업이 생성될 때 지정된 Amazon S3 버킷에 데이터가 저장됩니다. 데이터는 output.manifest 파일에 저장됩니다.

참고

labelAttributeName은 자리 표시자 변수입니다. 입력에서 라벨링 작업의 이름 또는 라벨링 작업을 생성할 때 지정하는 레이블 속성 이름입니다.

  • source 또는 source-ref - 문자열 또는 S3 URI 작업자에게 레이블을 지정하도록 요청했습니다.

  • labelAttributeName주석 후 Lambda 함수의 통합 레이블 내용이 포함된 사전입니다. 주석 후 Lambda 함수가 지정되지 않은 경우 이 사전은 비어 있습니다.

  • labelAttributeName-metadata – Ground Truth에 추가된 사용자 지정 레이블 지정 작업의 메타데이터입니다.

  • worker-response-ref – 데이터가 저장되는 버킷의 S3 URI입니다. 주석 후 Lambda 함수가 지정된 경우 이 키-값 페어는 표시되지 않습니다.

이 예제에서 JSON 객체는 가독성을 위해 형식이 지정되어 있고, 실체 출력 파일에서 JSON 객체는 단일 행에 있습니다.

{ "source" : "This train is really late.", "labelAttributeName" : {}, "labelAttributeName-metadata": { # These key values pairs are added by Ground Truth "job_name": "test-labeling-job", "type": "groundTruth/custom", "human-annotated": "yes", "creation_date": "2021-03-08T23:06:49.111000", "worker-response-ref": "s3://amzn-s3-demo-bucket/test-labeling-job/annotations/worker-response/iteration-1/0/2021-03-08_23:06:49.json" } }

주석 후 Lambda를 사용하여 작업자의 결과 통합

기본적으로 Ground Truth는 Amazon S3에서 처리되지 않은 작업자 응답을 저장합니다. 응답 처리 방식을 더 세밀하게 제어하려면 주석 후 Lambda 함수를 지정할 수 있습니다. 예를 들어 여러 작업자가 동일한 데이터 객체에 레이블을 지정한 경우 주석 후 Lambda 함수를 사용하여 주석을 통합할 수 있습니다. 주석 후 Lambda 함수 생성에 대한 자세한 내용은 주석 후 Lambda 섹션을 참조하세요.

주석 후 Lambda 함수를 사용하려면 CreateLabelingJob 요청에서 AnnotationConsolidationConfig의 일부로 지정해야 합니다.

주석 통합의 작동 방식에 대한 자세한 내용은 주석 통합 섹션을 참조하세요.