BLOG

Amazon SageMaker 로컬 모드를 사용하여 노트북 인스턴스 기량 연마하기
작성일: 2018-05-16

Amazon SageMaker는 사전 구축된 TensorFlow 와 MXNet 컨테이너를 사용하여 로컬 교육에 대한 지원을 시작했습니다. Amazon SageMaker는 생산 현장에서 머신러닝 모델을보다 효과적으로 구축, 교육 및 배포 할 수있는 유연한 기계 학습 플랫폼입니다. Amazon SageMaker 교육 환경은 관리가 가능합니다. 즉, 인스턴스를 회전시키고 알고리즘 컨테이너를 로드하며 Amazon S3에서 데이터를 가져 와서 코드를 실행하고 Amazon S3에 결과를 출력하고 클러스터에 대해 생각할 필요없이 클러스터를 파괴합니다. 교육을 별도의 다중 노드 GPU 클러스터로 오프로드하는 기능은 큰 이점입니다. 매번 새로운 하드웨어를 돌리는 것이 반복성과 보안에 좋음에도 불구하고 알고리즘 코드를 테스트하거나 디버깅 할 때 마찰을 불러 일으킬 수 있습니다.

 

Amazon SageMaker 딥러닝 컨테이너를 사용하면 일반적으로 TensorFlow 또는 MXNet 스크립트를 작성할 수 있습니다. 그러나 이제는 교육 및 호스팅을 위해 프로덕션 수준의 관리 환경에서 사전 구축 된 컨테이너에 배포합니다. 이전에는 이러한 Amazon SageMaker 관련 환경에서만 컨테이너를 사용할 수 있었습니다. 그들은 최근에 오픈 소스를 사용했습니다. 즉, 컨테이너를 작업 환경으로 가져 와서 Amazon SageMaker Python SDK에 내장된 사용자 정의 코드를 사용하여 단일 코드 줄을 변경하여 로컬에서 알고리즘을 테스트 할 수 있습니다. 즉, 매번 새로운 교육 또는 호스팅 클러스터를 기다리지 않고도 작업을 반복하고 테스트 할 수 있습니다. 로컬에서 데이터 집합의 작은 샘플을 반복 한 다음 전체 데이터 집합을 분산 방식으로 학습하도록 확장하는 것은 기계 학습에서 일반적입니다. 일반적으로 이는 전체 프로세스를 다시 작성하고 버그를 도입하지 않기를 희망합니다. Amazon SageMaker 로컬 모드를 사용하면 한 줄의 코드 만 변경하여 로컬 및 분산 된 관리 교육 사이를 원활하게 전환 할 수 있습니다. 다른 모든 것은 동일하게 작동합니다.

 

Amazon SageMaker Python SDK의 로컬 모드는 TensorFlow 또는 MXNet 견적 도구에서 단일 인수를 변경하여 CPU (단일 및 다중 인스턴스) 및 GPU (단일 인스턴스) SageMaker 교육 작업에 필적할 수 있습니다. 이를 위해 Docker 작성 및 NVIDIA Docker를 사용합니다. Amazon ECS에서 Amazon SageMaker TensorFlow 또는 MXNet 컨테이너를 가져오므로 로컬 환경에서 공개 Amazon ECR 저장소에 액세스 할 수 있어야 합니다. SageMaker 노트북 인스턴스를 로컬 환경으로 사용하도록 선택한 경우, 스크립트는 필수 전제 조건을 설치합니다. 그렇지 않으면 직접 설치할 수 있으며 pip install -U sagemaker를 사용하여 SageMaker Python SDK의 최신 버전으로 업그레이드했는지 확인해야 합니다.

 

 

사용 사례 예시

 

우리에게는 MNIST와 함께 TensorFlowMXNet 각각에 하나씩 로컬 모드를 사용하는 방법을 보여주는 두 개의 샘플 노트북이 있습니다. 그러나 Amazon SageMaker는 최근에 더 큰 노트북 인스턴스 유형을 사용할 수 있다고 발표했으므로 4 개의 GPU에서 50,000개의 컬러 이미지로 이미지 분류기를 교육하는 더 큰 예시로 봅시다. 우리는 CIFAR-10 데이터 세트에서 MXNet Gluon을 사용하여 ResNet 네트워크를 교육 할 것이며, ml.p3.8x 의 대형 노트북 인스턴스에서 이 작업을 수행 할 것입니다. 여기서 작성한 동일한 코드는 Amazon SageMaker 관리 교육 환경으로 쉽게 전환 할 수 있습니다. 여러 머신에서 실행하려는 경우 또는 하드웨어를 관리하지 않고 반복적으로 교육하기를 원할 경우에 해당합니다.

 

새로운 노트북 인스턴스를 만들어 보겠습니다. AWS Management Console에 로그인하고 Amazon SageMaker 서비스를 선택한 다음 Amazon SageMaker 콘솔 대시 보드에서 노트북 인스턴스 생성을 선택하여 다음 페이지를 엽니다.

 

 

 

노트북 인스턴스가 실행되면 새 Jupyter 노트북을 만들고 설정을 시작할 수 있습니다. 또는 여기에서 미리 정의된 노트북을 따라서 해도 됩니다. 로컬 모드에 집중하기 위해 몇 가지 건너 뛸 것입니다. 딥 러닝에 익숙하지 않다면,이 블로그 게시물은 시작하는데에 도움이 될 것입니다. 또는 CIFAR-10의 ResNet에 맞는 다른 SageMaker 예제 노트북을 참조하십시오. 그러나 Amazon SageMaker 관리 교육 환경에서 교육하십시오.

 

필수 구성 요소가 설치되고 로드 된 라이브러리 및 데이터 세트를 다운로드 한 후 Amazon S3 버킷에 데이터 세트를 로드합니다. 현지에서 교육을 받고 있지만 SageMaker 교육과의 일관성을 유지하기 위해 Amazon S3의 데이터에 계속 액세스합니다.

 

inputs = sagemaker_session.upload_data(path=‘data’, key_prefix=‘data/DEMO-gluon-cifar10’)

 

이제 우리는 MXNet 평가기를 정의 할 것입니다. 견적 도구는 네트워크 사양 및 train() 기능이 포함 된 cifar10.p스크립트를 가리킵니다. 또한 하이퍼 매개 변수 및 IAM 역할과 같은 작업 정보를 제공합니다. 그러나 가장 중요한 것은 train_instance_type ‘local_gpu”로 설정한다는 것입니다. 이는 SageMaker 관리 교육 환경에서 로컬 노트북 인스턴스 내에서의 교육으로 전환하는 데 필요한 유일한 변경 사항입니다.

 

m = MXNet(‘cifar10.py’,

          role=role,

          train_instance_count=1,

          train_instance_type=’local_gpu’,

          hyperparameters={‘batch_size’: 1024,

                           ‘epochs’: 50,

                           ‘learning_rate’: 0.1,

                           ‘momentum’: 0.9})

 

m.fit(inputs)

 

견적가가 처음 실행되면 Amazon ECR 저장소에서 컨테이너 이미지를 다운로드해야 하지만 즉시 교육을 시작할 수 있습니다. 별도의 교육 클러스터를 프로비저닝 할 때까지 기다릴 필요가 없습니다. 또한, 반복 실행 및 테스트시 필요할 수 있는 후속 실행에서 MXNet 또는 TensorFlow 스크립트의 변경 사항이 즉시 실행되기 시작합니다.

 

로컬 모드에서의 교육을 통해 우리는 GPU 사용량과 같은 측정 지표를 쉽게 모니터링하여 사용되고 있는 하드웨어를 활용하기 위해 코드가 올바르게 작성되었는지 확인할 수 있습니다. 이 경우, 우리는 네 개의 ml.p3.8xlarge GPU 모두에 대해 사용중인 터미널에서  nvidia-smi 를 실행하여 ResNet 모델을 매우 빠르게 교육할 수 있습니다.

 

 

 

평가기의 교육이 끝난 후에, 우리는 엔드포인트를 로컬 부분에서 생성 혹은 테스트할 수 있습니다. 다시 말씀 드리지만 우리는 instance_type 'local_gpu' 를 특정할 것입니다.

 

predictor = m.deploy(initial_instance_count=1, instance_type=‘local_gpu’)

 

이제 추론 코드가 작동하는지 확인하기 위해 몇 가지 예측을 생성 할 수 있습니다. 프로덕션 엔드 포인트에 배치하기 전에 이를 수행하는 것이 좋습니다. 그러나 일회성 모델 정확성 평가를 위한 몇 가지 예측을 생성 할 수도 있습니다.

 

 

 

from cifar10_utils import read_images

 

filenames = [‘images/airplane1.png’,

             ‘images/automobile1.png’,

             ‘images/bird1.png’,

             ‘images/cat1.png’,

             ‘images/deer1.png’,

             ‘images/dog1.png’,

             ‘images/frog1.png’,

             ‘images/horse1.png’,

             ‘images/ship1.png’,

             ‘images/truck1.png’]

 

image_data = read_images(filenames)

 

for i, img in enumerate(image_data):

    response = predictor.predict(img)

    print(‘image {}: class: {}’.format(i, int(response)))

 

결과는 다음과 같을 것입니다.

 

image 0: class: 0
image 1: class: 9
image 2: class: 2
image 3: class: 3
image 4: class: 4
image 5: class: 5
image 6: class: 6
image 7: class: 7
image 8: class: 8
image 9: class: 9

 

교육 및 추론 스크립트를 검증 했으므로 SageMaker 관리 환경에 대규모로 또는 반복적으로 교육하고 실시간 호스트된 엔드 포인트에서 예측을 생성할 수 있습니다.

 

하지만 먼저 한 번에 하나의 엔드 포인트만 로컬에서 실행될 수 있기 때문에 로컬 엔드 포인트를 정리 해보는 것도 좋습니다.

 

[m.delete_endpoint() ]

 

노트북 페이지로 이동하고, Stop을 선택하여 Amazon SageMaker 콘솔에서 노트북 인스턴스를 종료 할 수 있습니다. 이렇게 하면 다시 시작할 때까지 비용이 발생하지 않습니다. 또는 작업삭제를 선택하여 노트북 인스턴스를 삭제할 수 있습니다.

 

결론

 

이 블로그 게시물은 최근에 출시 된 다중 GPU 노트북 인스턴스 유형에서 Amazon SageMaker Python SDK 로컬 모드를 사용하여 대규모 이미지 분류 모델을 신속하게 테스트하는 방법을 보여줍니다. 로컬 모드 교육을 사용하여 오늘 테스트 및 디버깅주기를 가속화 할 수 있습니다. SageMaker Python SDK의 최신 버전을 설치하고 몇 가지 다른 도구를 설치하여 한 줄의 코드만 변경해 보세요!

 

원문 URL: https://aws.amazon.com/ko/blogs/compute/using-aws-cloudformation-to-create-and-manage-aws-batch-resources/

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