BLOG

Amazon SageMaker에 배치 변환 기능 및 Tensor Flow 컨테이너에 대한 파이프 입력 모드 추가
작성일: 2018년 8월 9일

(다운로드는 AWS 원문을 참고하세요)

 

뉴욕 Summit에서 저희는 두 가지 새로운 Amazon SageMaker기능을 출시했습니다. 즉, 고객이 수 페타바이트의 데이터 및 TensorFlow 컨테이너에 대한 파이프 입력 모드 지원에 대해 실제 시간이 아닌 시나리오에서 예측할 수 있도록 하는 배치 변환이라는 새로운 배치 추론 기능입니다. SageMaker는 저희는 이 블로그기계 학습 블로그에서 광범위하게 다루고 있습니다. 사실, SageMaker 팀의 빠른 혁신 속도는 따라잡기가 힘듭니다. SageMaker의 “하이퍼파라미터 최적화와 함께 자동 모델 조정“에 대한 마지막 게시물 이후, 이 팀은 4개의 새로운 내장형 알고리즘과 수톤의 새로운 기능을 출시했습니다. 새로운 배치 변환 기능을 살펴보겠습니다.

 

배치 변환

배치 변환 기능은 데이터를 변환하고 추론을 생성할 수 있는 고성능의 높은 처리량의 방법입니다. 대규모 데이터 배치를 처리하거나, 초 미만의 지연 시간이 필요하지 않거나, 훈련 데이터를 사전 처리하고 변환해야 하는 시나리오에 적합합니다. 가장 좋은 부분이요? 이 기능을 사용하기 위해 추가 코드 라인을 하나도 작성할 필요가 없습니다. 기존 모델을 모두 사용하여 배치 변환 작업을 시작할 수 있습니다. 이 기능은 추가 비용 없이 제공되며 기본 리소스에 대해서만 지불됩니다.

내장형 개체 검색 알고리즘에 대해 어떻게 하는지 살펴보겠습니다. 저는 물체 감지 모델을 훈련시키기 위해 예제 노트북을 따랐습니다. 이제 SageMaker 콘솔로 이동하여 배치 변환 하위 콘솔을 엽니다.

여기서 새 배치 변환 작업을 시작할 수 있습니다.

여기서는 변환 작업의 이름을 지정하고, 사용할 모델과 사용할 인스턴스의 수 및 유형을 선택할 수 있습니다. 또한 추론에 전송할 레코드 수와 페이로드 크기에 대한 세부 사항을 동시에 구성할 수 있습니다. 수동으로 지정하지 않으면 SageMaker에서 몇가지 합리적인 기본 값을 선택합니다.

다음으로 입력 위치를 지정해야 합니다. 매니 페스트 파일을 사용하거나 모든 파일을 S3 위치에 로드할 수 있습니다. 여기서 이미지를 다룰 때부터 입력 내용 유형을 수동으로 지정했습니다.

마지막으로 출력 위치를 구성하고 작업을 시작합니다!

작업이 실행되면 작업 세부 정보 페이지를 열고 Amazon CloudWatch의 메트릭 및 로그에 대한 링크를 따라갈 수 있습니다.

작업이 실행 중인 것을 볼 수 있고, S3에서 결과를 보면 각 이미지에 대한 예측 레이블을 볼 수 있습니다.

변환을 통해 탐지된 개체를 포함하는 입력 파일당 하나의 출력 JSON 파일이 생성되었습니다.

여기서 AWS Glue에 버킷 테이블을 만들고 Amazon Athena로 결과를 조회하거나 Amazon QuickSight를 사용하여 결과를 시각화하는 것을 쉽게 할 수 있습니다.

물론 SageMaker API에서 이러한 작업을 프로그래밍 방식으로 시작할 수도 있습니다.

설명서의 자체 컨테이너에서 배치 변환을 사용하는 방법에 대해 자세히 알아볼 수 있습니다.

 

Tensorflow용 파이프 입력 모드

파이프 입력 모드를 사용하면 최적화된 다중 스레드 백그라운드 프로세스를 통해 Amazon Simple Storage Service(S3)에서 Amazon SageMaker로 직접 훈련 데이터셋을 스트리밍 할 수 있습니다. 이 모드는 먼저 데이터를 로컬 Amazon Elastic Block Store(EBS) 볼륨으로 다운로드해야 하는 파일 입력 모드보다 훨씬 뛰어난 읽기 처리량을 제공합니다. 즉, 훈련 작업이 더 빨리 시작되고, 더 빨리 완료되며, 디스크 공간을 덜 사용하므로 모델 훈련과 관련된 비용이 절감됩니다. 또한 16 TB EBS 볼륨 크기 제한을 초과하는 데이터셋에 대해 훈련할 수 있다는 이점도 있습니다.

올해 초에 파이프 입력 모드에 대한 몇가지 실험을 실시했는데, 78 GB 데이터셋에서 시작 시간이 87%까지 줄었고 일부 벤치 마크에서는 처리량이 두배나 빨라져 결국 훈련 비용이 35%나 절감되었습니다.

TensorFlow에 파이프 입력 모드에 대한 지원을 추가함으로써 고객이 내장된 알고리즘에서 사용할 수 있는 동일한 속도 증가를 쉽게 활용할 수 있습니다. 이것이 실제로 어떻게 작동하는지 봅시다.

먼저, 제가 훈련 작업을 위해 사용할 수 있는 sagemaker-tensorflow-extensions을 가지고 있는지 확인해야 합니다. 이를 통해 채널 및 레코드 형식을 입력으로 사용하고 TensorFlow 데이터셋을 반환하는 새로운 PipeModeDataset 클래스를 얻을 수 있습니다. TensorFlow 추정기에 대한 input_fn에서 이를 사용해 채널에서 읽을 수 있습니다. 아래 코드 샘플은 간단한 예를 보여 줍니다.

from sagemaker_tensorflow import PipeModeDataset

 

def input_fn(channel):

    # Simple example data – a labeled vector.

    features = {

        ‘data’: tf.FixedLenFeature([], tf.string),

        ‘labels’: tf.FixedLenFeature([], tf.int64),

    }

   

    # A function to parse record bytes to a labeled vector record

    def parse(record):

        parsed = tf.parse_single_example(record, features)

        return ({

            ‘data’: tf.decode_raw(parsed[‘data’], tf.float64)

        }, parsed[‘labels’])

 

    # Construct a PipeModeDataset reading from a ‘training’ channel, using

    # the TF Record encoding.

    ds = PipeModeDataset(channel=channel, record_format=’TFRecord’)

 

    # The PipeModeDataset is a TensorFlow Dataset and provides standard Dataset methods

    ds = ds.repeat(20)

    ds = ds.prefetch(10)

    ds = ds.map(parse, num_parallel_calls=10)

    ds = ds.batch(64)

   

    return ds

그런 다음 모델을 정의하고 일반 TensorFlow 추정기와 동일한 방식으로 모델을 정의할 수 있습니다. 추정기 생성 시간에 대해서는 매개 변수 중 하나로 input_mode=’Pipe’만 전달하면 됩니다.

지금 이용 가능합니다.

이 두가지 새로운 기능을 추가 비용 없이 이용할 수 있으며, 배치 변환 기능을 통해 고객이 무엇을 구축할 수 있는지 기대합니다. 이미 말씀 드릴 수 있는 것은 AWS Marketing의 내부 ML 워크 로드 일부에 도움이 된다는 것입니다.

 

원문 URL: https://aws.amazon.com/ko/blogs/aws/sagemaker-nysummit2018/

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