BLOG

Amazon SageMaker Ground Truth로 표시된 데이터셋을 사용하여 모델을 쉽게 교육하기
작성일: 2018년 12월 28일

데이터 과학자와 개발자는 이제 Amazon SageMaker Ground Truth로 표시된 데이터셋에서 기계 학습 모델을 쉽게 훈련할 수 있습니다. Amazon SageMaker Training은 이제 AWS 관리 콘솔과 Amazon SageMaker Python SDK API를 통해 입력으로 증강 매니페스트 형식으로 생성된 레이블이 지정된 데이터셋을 수용합니다.

 

지난 달 AWS re:Invent 동안, 저희는 일반인뿐만 아니라 인간 라벨러의 개인 노동자들을 돕기 위해 기계 학습을 사용하여 라벨링 비용을 최대 70%까지 절감한 매우 정확한 교육 데이터셋을 구축하기 위해 Amazon SageMaker Ground Truth를 출시했습니다. 레이블 데이터셋은 라벨과 같은 파일 인라인의 추가 메타데이터로 각 입력 데이터셋 객체를 확장하는 증강 매니페스트 파일 형식으로 생성됩니다. 이전에 하위 레벨의 AWS SDK API만 사용하여 증강 데이터셋에 대한 모델을 교육할 수 있었습니다. 오늘부터, 상위 레벨 Amazon SageMaker Python SDK를 사용하여 Amazon SageMaker 콘솔 또는 한 줄의 API 호출을 몇 번 클릭하면 이러한 교육을 쉽고 빠르게 수행할 수 있습니다.

 

또한, 모델은 Amazon SageMaker Pipe Mode를 사용하여 교육을 받을 것입니다. 이 모드는 데이터를 Amazon S3(Amazon Simple Storage Service)에서 Amazon SageMaker로 스트리밍하는 속도를 상당히 가속화하여 교육 작업을 더 빨리 시작하고, 더 빨리 완료하고, 더 적은 디스크 공간을 필요로 하므로 Amazon SageMaker의 기계 학습 모델을 훈련하기 위한 전체 비용을 절감할 수 있습니다.

 

이제 예를 들어 봅시다. 저희의 예는 3548개의 거리 이미지로 구성된 CBCL StreetScenes 데이터셋을 사용합니다. 이전 블로그 포스트에서 저희는 이미지 안의 모든 자동차 주변에 상자를 그리는 노동력을 관리하기 위해 Amazon SageMaker Ground Truth를 어떻게 사용할 수 있는지에 대한 예를 보여 드렸으며, 따라서 Amazon SageMaker Object Detection 모델을 훈련하기 위한 레이블 데이터셋을 만들 수 있습니다. 이제 저희는 여러분에게 Amazon SageMaker에서 그러한 모델을 훈련시키는 방법을 보여줄 것입니다.

 

1단계: 레이블이 지정된 데이터셋 탐색

레아블 데이터셋은 증강 매니페스트 파일 형식으로 생성됩니다. 증강 매니페스트 파일은 JSON 라인 형식의 파일입니다. 즉, 파일의 각 행은 완전한 JSON 객체 다음에 뉴라인 분리기가 뒤따릅니다. 각 JSON 개체는 레이블과 함께 이미지 파일의 Amazon S3 URI를 포함합니다. 레이블은 이미지의 각 차량 주위에 있는 경계 상자의 좌표입니다. 여기에 4대의 자동차로 레이블된 이미지를 위한 증강 매니페스트 파일에서 나온 샘플 JSON 객체가 있습니다.

SSDB00004.JPG

 

이것은 증강 매니페스트 파일의 JSON 객체 입니다. 저희는 시각화의 용이성을 위해 표시장치를 포맷했습니다. 증강 매니페스트 파일에서, 이것은 한 줄에 JSON 개체로 나타납니다.

 

{

“source-ref”:”s3://sthakur/demo/images/SSDB00004.JPG”,

“sthakur-groundtruth-demo”:{

“annotations”:[

{“class_id”:0,”width”:162,”top”:458,”height”:89,”left”:378},

{“class_id”:0,”width”:201,”top”:434,”height”:96,”left”:602},

{“class_id”:0,”width”:61,”top”:434,”height”:39,”left”:343},

{“class_id”:0,”width”:66,”top”:426,”height”:47,”left”:240}

],

“image_size”:[{“width”:1280,”depth”:3,”height”:960}]

},

“sthakur-groundtruth-demo-metadata”:{

“job-name”:”labeling-job/sthakur-groundtruth-demo”,

“class-map”:{“0″:”car”},

“human-annotated”:”yes”,

“objects”:[

{“confidence”:0.09},

{“confidence”:0.09},

{“confidence”:0.09},

{“confidence”:0.09}

],

“creation-date”:”2018-12-13T21:24:33.546706″,

“type”:”groundtruth/object-detection”

}

}

 

source-ref는 이미지 파일의 Amazon S3 URI입니다. sthakur-groundtruth-demo (처음에는 매니페스트 파일을 만든 Amazon SageMaker Ground Truth 라벨링 작업의 이름을 따서 명명됨)가 레이블 목록임을 유의합니다. 레이블은 인간 라벨러가 부착한 4대의 차량 좌표로 구성됩니다.

 

2단계: Amazon SageMaker 교육 작업 생성

이제 저희는 1단계의 증강 매니페스트 파일을 입력으로 받아들이는 Amazon SageMaker Object Detection 모델을 훈련시킬 것입니다.

 

Amazon SageMaker 콘솔 사용

Amazon SageMaker 콘솔의 왼쪽 탐색 창에서 교육 작업을 선택한 다음 교육 작업 만들기를 선택하십시오. 학습 알고리즘, 교육 클러스터 사양 및 하이퍼파라미터와 같은 모델 교육 구성을 선택한 후 교육 데이터셋을 소싱하기 위해 입력 데이터 채널을 입력하는 섹션으로 스크롤하십시오.

 

S3 데이터 유형을 AugmentedManifestFile로 선택하십시오. 1단계에서 매니페스트 파일의 Amazon S3 위치를 제공하십시오. 또한 객체 감지 알고리즘이 증강 매니페스트 파일에서 사용할 JSON 속성의 이름을 입력하십시오. 여기서는 모델 교육을 위해 1단계에서 설명한 바와 같이 source-ref 와 sthakur-groundtruth-demo 라는 두 가지 특성만 있으면 됩니다.

증강 매니페스트 파일의 JSON 객체는 Amazon SageMaker Pipe 모드를 사용하여 순서대로 스트리밍되므로, 알고리즘이 입력 데이터 스트림에서 찾을 것으로 예상되는 속성 이름의 순서를 신중하게 선택해야 합니다. 시퀀스를 선택하려면 각 속성 이름 옆에 있는 위쪽 및 아래쪽 화살표 버튼을 사용하십시오.

 

교육 데이터셋을 소싱하기 위한 입력 데이터 채널을 생성하는 방법을 여기서 설명하는 동안, 객체 감지 알고리즘에는 검증 데이터셋을 위한 입력 데이터 채널도 필요합니다. 검증 데이터셋을 준비하는 한 가지 방법은 레이블이 부착된 이미지의 하위 집합을 유지하고 검증셋에 대한 또 다른 증강 매니페스트 파일을 만드는 것입니다. 그런 다음 새 증강 매니페스트 파일의 Amazon S3 URI를 검증 채널에 대한 입력으로 사용하고, 이 단계에서 설명한 것과 동일한 방식으로 채널을 정의할 수 있습니다.

 

Amazon SageMaker Python SDK 사용

저희는 객체 탐지 모델을 훈련시키기 위해 Amazon SageMaker Estimator를 사용할 것입니다.

 

od_model = sagemaker.estimator.Estimator(training_image,

role,

train_instance_count=1,

train_instance_type=’ml.p3.2xlarge’,

train_volume_size = 50,

train_max_run = 360000,

input_mode = ‘Pipe’,

output_path=s3_output_location,

sagemaker_session=sess)

…………………………..

 

train_data = sagemaker.session.s3_input(s3_train_data, distribution=’FullyReplicated’, content_type=’image/jpeg’, s3_data_type=’AugmentedManifestFile’, attribute_names=[‘source-ref’, ‘sthakur-groundtruth-demo’])

 

validation_data = sagemaker.session.s3_input(s3_validation_data, distribution=’FullyReplicated’, content_type=’image/jpeg’, s3_data_type=’AugmentedManifestFile’, attribute_names=[‘source-ref’, ‘sthakur-groundtruth-demo’])

 

 

…………………………………………..

 

data_channels = {‘train’: train_data, ‘validation’: validation_data}

od_model.fit(inputs=data_channels, logs=True)

 

SageMaker estimator의  fit  루틴을 사용하여 모델을 교육하기 전에 input_mode 를 Pipe로, s3_data_type을 AugmentedManifestFile로 선택했으며, attribute_names 시퀀스를 지정했다는 점에 유의하십시오.

 

증강 매니페스트 형식을 사용할 경우의 추가 이점

Amazon SageMaker는 항상 Amazon S3에 저장된 데이터셋의 모델 훈련을 위해 기존 매니페스트 파일을 지원해왔습니다. 매니페스트 파일은 모델을 훈련하기 위해 Amazon SageMaker로 다운로드해야 하는 데이터 개체에 대한 Amazon S3 키 이름 접두사 목록을 제공합니다.

 

예를 들어, 이것은 매니페스트 파일입니다.

 

[

{“prefix”:”s3://foo/”},

“relative/path/to/data-1”,

“relative/path/to/data-2”,

]

 

이는 다음의 Amazon S3 URI와 일치합니다.

 

s3://foo/relative/path/to/data-1

s3://foo/relative/path/to/data-2

 

시각적 인식 알고리즘과 같은 학습 알고리즘을 위한 입력 데이터 채널을 지정하기 위해 이러한 전통적인 접근방식을 사용하려면 Amazon SageMaker에서 입력 데이터(이미지) 및 라벨용 입력 데이터 채널 2개를 지정해야 합니다. 증강 매니페스트를 사용하면 데이터와 그 라벨을 하나의 매니페스트 파일에 저장할 수 있으므로, 두 채널의 필요성을 줄일 수 있습니다. 또한 여러 채널의 레이블과 데이터 객체를 일치시키기 위한 알고리즘 코드의 불필요한 복잡성을 제거합니다.

 

예를 들어 이 매니페스트 파일은 S3 URI를 JSON 라인 형식으로 재구성하고 레이블을 인라인으로 추가함으로써 증강 매니페스트로 쉽게 표시할 수 있습니다.

 

{“source-ref”:”s3://foo/relative/path/to/data-1″,”label”:”0″}

{“source-ref”:”s3://foo/relative/path/to/data-2″,”label”:”1″}

……….

 

모델을 교육하는 동안 attribute_names=['source-ref','label'] 을 설정하십시오.

 

또한, 증강 매니페스트 파일은 Amazon SageMaker Pipe 모드를 사용합니다. 이는 여러분의 학습 알고리즘이 Amazon S3에서 Amazon SageMaker의 교육 인스턴스로의 높은 처리량 데이터 스트리밍으로부터 이익을 얻을 수 있다는 것을 의미합니다. 여기 파이프 모드를 사용하여 데이터를 사용하기 위해 학습 알고리즘에 적용할 수 있는 변경 사항을 설명하는 블로그 게시물이 있습니다.

 

더 많은 예제 및 개발자 지원 시작

저희는 여러분에게 어떻게 하면 증강 매니페스트 파일 형식의 레이블 데이터셋을 사용하여 Amazon SageMaker에서 모델을 훈련시킬 수 있는지의 예를 보여 주었습니다. 또한 단계별 AWS SDK 환경을 제공하는 샘플 노트북을 사용해 보십시오. 또한 개발자 가이드에서 추가 예를 보거나 개발자 포럼에 질문을 게시하십시오.

 

원문 URL : https://aws.amazon.com/ko/blogs/machine-learning/easily-train-models-using-datasets-labeled-by-amazon-sagemaker-ground-truth/

** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.