AWS 기반 딥 러닝 2/2

빌드업웍스
31 min readJan 26, 2020

--

https://AWS.amazon.com/ko/

[고지 사항 (Disclaimer) ]

본 컨텐츠는 고객의 편의를 위하여 AWS 서비스 설명을 위해 제작, 제공된 것입니다. 만약 AWS 사이트와 컨텐츠 상에서 차이나 불일치가 있을 경우 AWS 사이트 (AWS.amazon.com)가 우선합니다. 또한 AWS 사이트 상에서 한글 번역문과 영어 원문에 차이나 불일치가 있을 경우(번역의 지체로 인한 경우 등 포함), 영어 원문이 우선합니다.

본 문서는 Deep Learning on AWS 내용에 기반하여 작성 되었습니다.

이 문서는 정보 제공의 목적으로만 제공됩니다. 본 문서의 발행일 당시 AWS의 현재 제품 오퍼링 및 실행방법 등을 설명하며, 예고 없이 변경될 수 있습니다. 고객은 본 문서에 포함된 정보나 AWS 제품 또는 서비스의 사용을 독립적으로 평가할 책임이 있으며, 각 정보 및 제품은 명시적이든 묵시적이든 어떠한 종류의 보증 없이 “있는 그대로” 제공됩니다. 본 문서는 AWS, 그 자회사, 공급업체 또는 라이선스 제공자로부터 어떠한 보증, 표현, 계약 약속, 조건 또는 보장을 구성하지 않습니다. 고객에 대한 AWS의 책임 및 의무는 AWS 계약에 의해 관리되며 본 문서는 AWS와 고객 사이의 어떠한 계약에도 속하지 않으며 계약을 변경하지도 않습니다.

© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.

본 문서는 총 2부로 구성되어 있으며 이 글은 2부입니다.

AWS 기반 딥 러닝 1/2

코드, 데이터 및 모델 버전 관리

Version Code with Git

학습, 전처리 및 추론 스크립트는 전체 딥 러닝 스택에서 가장 작은 구성 요소입니다. 위의 스크립트 외에도 AWS Step Functions와 같은 서비스를 사용하여 모델 재학습 및 모델 배포를 위해 딥 러닝 파이프 라인을 스크립팅 할 수도 있습니다. 위의 모든 스크립트는 Git 기반 리포지토리 또는 안전한 Git 기반 리포지토리를 호스팅하는 완전 관리형 소스 제어 서비스인 AWS CodeCommit을 사용하여 버전을 제어 할 수 있습니다.

Version Data in Amazon S3

딥 러닝에서 모델 재학습에 사용 된 데이터의 사본은 모델의 편향과 드리프트를 설명하고 문제를 해결하는 데 중요합니다. Amazon S3를 사용하여 학습 데이터를 버전화할 수 있습니다. 모든 신규 또는 업데이트 된 학습 데이터 세트에 대해 새 Amazon S3 객체 또는 새 버전의 Amazon S3 객체를 생성합니다. Amazon S3 객체의 이름 지정 규칙을 사용하거나 객체 태그를 사용하여 학습 데이터 세트 버전을 추적 할 수 있습니다. 선택적으로 Amazon DynamoDB 테이블에서 데이터 세트 S3 객체 위치 및 데이터 메타 데이터를 푸시하고 테이블을 인덱싱하여 데이터 검색을 검색 할 수 있습니다.

Version Model in Amazon S3

모델 학습에는 많은 비용과 시간이 소요됩니다. 새로운 변형 모델의 성능과 정확성을 비교하려면 모델을 유지하는 것이 중요합니다. 훈련 된 모델을 버전 관리가 활성화 된 데이터 파일로 Amazon S3에 유지할 수있는 특수 데이터 파일로 가정 할 수 있습니다. Amazon S3를 사용하면 모든 유형의 데이터 파일에 태그를 지정하고 버전을 지정할 수 있습니다.

재훈련 및 재배치를 위한 딥 러닝 프로세스 자동화

기능적 프로토 타입을 시연 한 후에는 모델을 프로덕션에 배치하고 훈련 된 모델을 사용하여 예측을 제공하기위한 엔드 포인트를 생성해야 합니다. 프로토 타이핑 중에 Jupyter 노트북에서 빌드, 학습 및 배포하는 모든 단계가 수동으로 수행됩니다. 그러나 프로덕션 환경에 배포하려면 정밀도, 일관성 및 안정성이 필요합니다. 생산 파이프 라인의 수동 개입은 종종 다운 타임으로 이어질 수 있는 인적 오류로 이어집니다. 재 훈련 및 재배치와 관련된 모든 단계를 자동화하여 인적 오류를 해결할 수 있습니다. 다음은 AWS에서 딥 러닝 프로덕션 파이프 라인을 자동화하는 데 사용할 수 있는 솔루션 및 서비스입니다.

AWS Step Functions for Amazon SageMaker

AWS Step Functions를 사용하면 ML 워크 플로에서 여러 단계를 오케스트레이션하여 프로덕션에서 모델을 완벽하게 배포 할 수 있습니다. AWS Step Functions는 워크 플로를 이해하기 쉽고 다른 사람에게 설명하기 쉽고 변경하기 쉬운 상태 머신 다이어그램으로 변환합니다. 발생하는 각 실행 단계를 모니터링 할 수 있습니다.

현재 Amazon SageMaker는 서비스 통합을 위해 두 가지 패턴을 지원합니다.

  • Amazon SageMaker 인스턴스를 호출하고 HTTP 응답을 수신 한 직후 AWS Step Functions가 다음 상태로 진행되도록 합니다.
  • Amazon SageMaker 인스턴스를 호출하고 AWS Step Functions에서 작업이 완료 될 때까지 기다리십시오.

Apache Airflow for Amazon SageMaker

Apache Airflow는 프로그래밍 방식으로 워크 플로를 작성, 예약 및 모니터링 할 수 있는 오픈 소스 대체 플랫폼입니다. Apache Airflow를 사용하면 Amazon SageMaker 학습, 하이퍼 파라미터 튜닝, 배치 변환 및 엔드 포인트 배포를 위한 워크 플로우를 구축 할 수 있습니다. Amazon SageMaker 딥 러닝 프레임 워크 또는 Amazon SageMaker 알고리즘을 사용하여 Airflow에서 이러한 작업을 수행 할 수 있습니다.

Airflow SageMaker operators 또는 Airflow Python Operator를 사용하여 Amazon SageMaker 워크 플로우를 구축 할 수 있습니다.

오픈 소스 AWS CloudFormation 템플릿인 Turbine을 사용하여 AWS에서 Airflow 리소스 스택을 생성 할 수도 있습니다.

Kubeflow Pipelines on Kubernetes

Amazon SageMaker를 사용하지 않는 DIY 고객이고 현재 AWS의 Kubernetes에 대한 투자를 활용하고 있다면 Kubeflow Pipelines를 사용할 수 있습니다. Kubeflow Pipelines는 Docker 컨테이너를 기반으로 확장 가능한 휴대용 머신 러닝 (ML) 워크 플로를 구축 및 배포하기 위한 플랫폼입니다. 파이프 라인은 워크 플로의 모든 구성 요소와 그래프 형식으로 결합하는 방법을 포함하여 ML 워크 플로에 대한 설명입니다. 이는 Kubernetes를 사용하여 구축, 학습 및 배포하는 실무자가 사용하는 인기있는 도구입니다. Kubernetes와 기본적으로 통합되어 있습니다.

또한 Amazon SageMaker 및 Amazon EMR 및 Amazon Athena와 같은 데이터 클리닝 및 변환에 사용되는 기타 AWS 서비스와 통합되는 Kubeflow용 AWS 파이프라인 구성 요소도 있습니다. 이 접근 방식은 통합 제어기(AI/ML 서비스 릴리즈와 마이크로 서비스 아키텍처를 통합)를 원하지만 Amazon EKS, Amazon FSx for Lustre, Amazon SageMaker 등 다양한 AWS 서비스를 활용하고자 하는 고객을 위한 것으로, 작업에 가장 적합하고 차별화되지 않은 무거운 리프팅에도 도움이 될 수 있습니다.

Patterns for Deep Learning at Scale

이 섹션에서는 조직에서 딥 러닝 채택을 확장하는데 사용할 수 있는 다양한 솔루션과 패턴에 대해 설명합니다. 옵션에는 완전 관리 형, AWS 서비스를 사용한 DIY 또는 하이브리드 방식이 포함됩니다. 다른 AWS 서비스를 사용하여 이러한 옵션을 확장하여 사용자 지정 환경을 구축 할 수도 있습니다.

Options for Deep Learning on AWS

이 섹션에서는 AWS 딥 러닝을위한 솔루션 접근 방식으로서 완전 관리형 플랫폼과 DIY 플랫폼을 모두 설명합니다. AWS는 다음 그림과 같이 AWS와 고객 간의 서로 다른 수준의 공유 책임에 따라 딥 러닝을 위한 광범위한 솔루션을 다루는 여러 옵션을 제공합니다.

그림 6 : 공유 책임 모델 스펙트럼에 대한 딥 러닝 솔루션

스펙트럼의 왼쪽은 이벤트 기반의 딥 러닝을 위한 완전 관리형 서비스인 Amazon SageMaker이며 한 번의 클릭으로 빌드, 학습, 배포 환경을 제공합니다. 스펙트럼의 오른쪽에는 자체 관리, 수동 및 구축, 학습 및 배포를 위한 여러 단계가 포함된 완전 맞춤형 딥 러닝 솔루션이 있습니다. 이 옵션들 사이에는 Amazon EKS와 같은 관리 서비스를 사용하여 인프라 관리를 단순화하고 딥 러닝 워크 플로를 위해 자체 관리 Kubeflow를 배포 할 수 있는 부분적으로 관리되는 솔루션이 있습니다.

자체 관리형 솔루션과 맞춤형 DIY 솔루션의 차이점에 대한 자세한 정보를 제공하기 위해 딥 러닝 환경의 일회성 설정과 관련된 운영 및 단계를 살펴 보겠습니다.

DIY 설정의 경우 딥 러닝 엔지니어와 과학자가 딥 러닝 환경을 사용할 수 있도록 다음과 같은 운영 문제를 관리해야합니다.

  • 드라이버 설치
  • 조정 업데이트
  • 네트워크 고장
  • 예약되지 않은 재부팅
  • 정전
  • 장비 고장
  • 응답 문제
  • 디스크 공간 부족
  • 케이블 문제
  • VPN을 통해 서버에 연결할 수 없음
  • 서버의 보안되지 않은 물리적 경계

Amazon SageMaker와 같은 AWS 관리형 서비스의 경우 모든 AWS 관리형 서비스는 내결함성이 있으며 설계 상 가용성이 높기 때문에 운영 문제가 발생할 가능성이 최소화 됩니다.

예를 들어 Amazon EC2에서 딥 러닝 환경을 처음부터 구축하는 사용자 정의 DIY 설정에서는 다음 작업을 수행하여 TensorFlow 및 Horovod를 사용하여 분산 학습을 실행하여 가치를 창출해야 합니다. 이러한 작업에는 일회성 소프트웨어 설치 및 진행중인 작업 예약 작업이 포함됩니다.

  1. SSH, 헤드 노드에 로그인
  2. MPI 설치
  3. Anaconda, Python 3 설치
  4. 가상 환경 만들기
  5. MKL을 사용하여 Intel Optimized TensorFlow 설치
  6. 분산 학습을 위한 Horovod 설치
  7. SLURM 작업 스크립트 작성 (SLURM은 HPC 작업을위한 오픈 소스 스케줄링 소프트웨어입니다)
  8. SLURM 작업 제출
  9. 통찰력 확보

Amazon SageMaker와 같은 AWS 관리 서비스의 경우 AWS Management Console에서 단일 클릭, 단일 API 호출, 단일 CLI 명령 또는 이벤트 기반으로 위의 모든 단계가 자동화되고 트리거됩니다.

각 솔루션에 대해 자세히 살펴보고 각 솔루션의 구성 요소와 가치를 검토 하십시오.

완전 관리형 솔루션 — Amazon SageMaker

조직 전체에서 딥 러닝을 확장 할 수있는 솔루션을 찾고 있다면 Amazon SageMaker는 딥 러닝 프로세스와 관련된 다양한 단계를 지원하는 엔드 투 엔드 솔루션을 제공합니다. Amazon SageMaker는 완전 관리형 서비스 형태로 기본 지원을 제공 할 뿐만 아니라 딥 러닝 스택을 사용자 정의하여 최신 드라이버 및 프레임 워크의 최신 혁신을 활용할 수 있는 유연성을 제공합니다. Amazon SageMaker가 제공하는 단순성과 유연성은 프레임 워크 수준에서 작업하는 고급 딥 러닝 엔지니어 및 딥 러닝 과학자의 요구 사항과 딥 러닝에 대한 최소한의 배경으로 딥 러닝 프로젝트에 기여하는 데이터 과학자 및 개발자의 요구를 충족시킵니다.

다음 차트는 엔드 투 엔드 딥 러닝 프로세스를 제공하기 위해 다양한 Amazon SageMaker 구성 요소가 딥 러닝 환경에 어떻게 적용되는지 보여줍니다.

그림 7 : 딥 러닝을위한 Amazon SageMaker 솔루션

Amazon SageMaker는 딥 러닝 빌드, 학습 및 배포 환경에 필요한 인프라 생성 및 종료 작업을 완전히 추상화합니다. 인프라의 일부로 NCCL, CUDA 및 CUDNN과 같은 일반 드라이버 설치도 처리합니다. 공통 데이터 처리 라이브러리 설치; 오늘날 딥 러닝에 사용되는 공통 프레임 워크 설치. 노트북, 학습 및 추론 환경 생성은 API 호출, CLI 명령, Amazon SageMaker SDK 또는 AWS Management Console의 옵션으로 제공됩니다. Amazon SageMaker를 사용하면 일관된 모델의 새로운 변형을 재학습 및 재배치하는 등 ML 파이프 라인을 위한 자동화 된 워크 플로우로 일련의 작업을 자동화 할 수 있습니다.

Amazon SageMaker는 데이터 라벨링, 하이퍼 파라미터 튜닝, 실시간 및 배치 추론과 같은 일반적인 딥 러닝 작업을 간소화합니다. 이러한 작업을 단순화하면 조직 내에서 통제력을 잃지 않고 딥 러닝 채택을 가속화하고 확장 할 수 있습니다. 완벽하게 관리되는 표준 도구 세트를 통해 딥 러닝 프로젝트를위한 협업 및 시장 출시 기간을 단축 할 수 있습니다.

Amazon SageMaker는 조직의 딥 러닝 엔지니어와 과학자 및 DevOps 전문가 모두에게 단일 플랫폼을 제공하여 알고리즘을 설계하고 데이터에 대한 모델을 학습하는 모델 작성자와 모델 배포 및 모니터링을 담당하는 DevOps 팀간에 명확한 핸드 셰이크를 제공합니다.

Amazon SageMaker는 널리 사용되는 대부분의 프레임 워크에 대해 사전 구축 된 컨테이너 이미지를 제공합니다. 기존 Amazon SageMaker 컨테이너 이미지를 확장하거나 직접 만들 수 있습니다. 프레임 워크 레벨에서 일하는 고급 딥 러닝 엔지니어와 과학자들은 TensorFlow (TF)와 같은 커스텀 DL 프레임 워크를 사용하여 특정 유스 케이스에 대한 딥 러닝 학습을 가속화하기 위해 커스텀 오퍼레이터를 시도하거나 두 개의 TF 프로세스를 실행할 수 있습니다. 성능 향상을 위한 단일 인스턴스. Amazon SageMaker에서는 스크립트 모드를 사용하여 환경을 구성 및 사용자 정의하고 자체 컨테이너 모드를 가져올 수 있습니다. 스크립트 모드를 사용하면 TF 스크립트와 같은 사용자 지정 스크립트를 가져와 사전 구축 된 TF AWS DL 컨테이너에서 실행할 수 있습니다. 자체 컨테이너를 가져 오면 사용자 지정 TF 빌드로 컨테이너를 처음부터 구축하고 Amazon SageMaker에서 실행할 수 있으므로 유연성과 제어가 극대화됩니다.

DIY 부분적으로 관리되는 솔루션 : Kubeflow와 함께 Kubernetes를 AWS에서 사용

이 패턴은 Kubernetes를 인프라 계층으로 표준화 하기로 결정하고 기존 Kubernetes에 대한 투자를 활용하여 딥 러닝 학습 및 추론 작업을 수행하려는 고객에게 적용됩니다. 이 설정은 Kubernetes를 관리하기 위한 많은 미분화 및 리프팅 및 운영 복잡성을 도입합니다. Kubernetes 컨트롤 플레인 관리가 어려울 수 있습니다. 그러나 Kubernetes에 대한 관리 서비스인 Amazon EKS를 사용하여 Kubernetes 마스터 관리를 AWS로 오프로드하여 Kubernetes 컨트롤 플레인 관리를 단순화 할 수 있습니다.

Amazon EKS Kubernetes 클러스터는 영구 클러스터입니다. 그러나 고객은 정책을 관리하여 필요에 따라 확장 및 확장 할 수 있으며 학습 및 추론 작업을 성공적으로 완료하기에 충분한 리소스를 제공 할 수 있습니다. 학습 작업은 기본 Kubernetes 클러스터에 의존합니다.

ML은 인프라와 자원을 소비합니다. 더 많은 컴퓨팅 용량이 필요한 경우 용량 요구 사항을 충족하기 위해 Kubernetes 클러스터에 작업자 노드를 더 추가해야 합니다.

노드 레벨 자동 스케일러 (Kubernetes 애드온)를 활용하여 GPU 노드를 확장 (입 / 출력) 할 수 있습니다.

추론 엔드 포인트 스케일링의 경우 Kubernetes 레벨에서 수평 포드 스케일링을 사용할 수 있습니다. 포드에서 사이드카 패턴으로 시각화를 학습하기 위해 TensorBoard와 같은 추가 소프트웨어를 배포 할 수도 있습니다. Kubernetes 포드는 동일한 호스트에 함께 배포되는 컨테이너 그룹입니다.

Kubernetes 클러스터는 컨테이너 환경에서 딥 러닝 학습 및 추론을 실행하기 위한 인프라 계층을 제공합니다. 그러나 딥 러닝 프로젝트에 이 환경을 쉽게 사용할 수 있도록 더 많은 구성 요소를 배포하고 관리해야 합니다.

Kubernetes와 긴밀하게 통합 된 통합 API 플랫폼을 제공하는 Kubeflow를 사용할 수 있으며 딥 러닝 엔지니어와 과학자가 Kubernetes를 구축, 학습 및 배포 할 수 있습니다. Kubeflow는 AWS 관리형 서비스가 아닙니다. Kubeflow는 Amazon EKS 또는 AWS의 Kubernetes에서 자체 배포 및 자체 관리해야하는 Kubernetes 애드온 패키지입니다.

처음에 Kubernetes와 Kubeflow는 TensorFlow만 지원했습니다. 그러나 MXNet, PyTorch 및 Chainer와 같은 다른 프레임 워크로 지원을 확장하고 있습니다. 또한 커뮤니티에서 Kubeflow를 자주 업데이트하므로 최신 버전의 Kubeflow를 유지하기 위해 스크립트를 자주 변경해야 할 수도 있습니다.

스토리지 계층의 경우 Amazon S3, Amazon EFS 또는 Luster 용 Amazon FSx (Amazon S3의 데이터에서 수화 됨)를 선택할 수 있습니다. 딥 러닝 및 최고 수준의 성능을 위해 AWS는 Amazon S3의 데이터를 수화하여 Luster 용 Amazon FSx를 권장합니다. 그러나 분산 학습에 사용되는 노드 수에 따라 Amazon S3 및 Amazon EFS를 사용하도록 선택할 수도 있습니다. Amazon S3 및 Amazon EFS의 경우 성능이 Lustre 용 Amazon FSx만큼 높지 않습니다.

그림 8 : Amazon EKS 및 자체 관리 Kubeflow DL 계층 및 DL 프로세스 매핑
그림 9 : 자체 관리 Kubeflow 개념 다이어그램이 있는 Amazon EKS
Figure 10: Amazon EKS with Amazon FSx for Lustre hydrated from Amazon S3

데이터 스택 및 모델 최적화와 같은 작업에이 스택과 함께 Amazon SageMaker 구성 요소를 사용할 수 있습니다. 엔드 투 엔드 딥 러닝 워크 플로우 또는 부분적으로 Amazon SageMaker를 사용할 수 있습니다. Kubernetes 및 Kubeflow 스택을 사용하면 데이터 레이블 및 주석에 Amazon SageMaker Ground Truth를 사용하고 모델 최적화에 Amazon SageMaker Neo를 계속 사용할 수 있습니다.

DIY 솔루션에 대한 추가 고려 사항

Amazon EKS는 딥 러닝에 맞게 특별히 조정 및 최적화되지 않은 관리형 서비스입니다. Kubeflow는 AWS에서 제공하는 관리형 서비스가 아닙니다. 모범 사례를 구현하여 딥 러닝을 위해 Amazon EKS 및 Kubeflow 스택을 미세 조정하고 최적화해야 합니다. 자세한 내용은 AWS 오픈 소스 블로그에서 Amazon EKS의 분산 딥 러닝 성능 최적화를 위한 모범 사례를 참조하십시오.

선택적으로 Kubernetes 클러스터에서 기계 학습 벤치마킹을 위한 자동화 된 도구 인 Amazon EKS Deep Learning Benchmark Utility를 사용할 수도 있습니다.

또한, 선택적으로 EKS의 TensorFlow 및 MXNet에서 모델을 학습하고 제공하기 위한 Docker 이미지 세트인 AWS Deep Learning Containers (AWS DL Containers)를 사용할 수도 있습니다. AWS DL 컨테이너는 TensorFlow 및 MXNet, NVIDIA CUDA (GPU 인스턴스 용) 및 Intel MKL (CPU 인스턴스 용) 라이브러리를 통해 최적화 된 환경을 제공합니다. AWS DL 컨테이너는 Amazon Elastic Container Registry (Amazon ECR)에서 사용할 수 있습니다.

딥 러닝을 위해 Kubeflow와 AWS 플랫폼간에 보다 고유 한 통합을 허용하려는 수많은 이니셔티브가 있습니다. Kubeflow와 AWS 간의 기본 통합에 대한 전체 목록은 AWS 기능의 Kubeflow를 참조하십시오.

DIY 자체 관리 솔루션 : Amazon EC2 사용

빌드, 학습 및 배포에 컨테이너 전략을 채택하지 않거나 컨테이너 환경에서 작동하는 데 필요한 기술을 보유하지 않은 조직 및 딥 러닝 엔지니어 및 과학자가 있습니다. 또는 딥 러닝 엔지니어 및 과학자는 연구 커뮤니티의 최신 드라이버 및 라이브러리를 사용하고 컨테이너화 된 환경에 설치하기 위한 지침이 없을 수 있습니다. 이 새 소프트웨어의 설치 및 통합이 사용 가능하지 않거나 쉽지 않을 수 있습니다.

이 유형의 시나리오에서는 Amazon EC2 위에 맞춤형 DIY 클러스터를 설정하여 실험을 개발하고 확장 할 수 있습니다.

처음부터 모든 것을 설정할 수 있는 옵션이 있지만 아래에 설명 된 일부 도구와 서비스를 사용하여 설치를 쉽게 하고 AWS에 대한 학습을 가속화 할 수 있습니다.

고객은 GPU 드라이버가 설치되고 널리 사용되는 대부분의 프레임 워크 및 라이브러리와 함께 제공되는 Deep Learning AMI를 사용할 수 있습니다. 고객은 이 환경을 완벽하게 제어 할 수 있으며 필요에 따라 쉽게 사용자 정의 할 수 있습니다. CUDA 드라이버 버전 간에도 쉽게 전환 할 수 있습니다.

스토리지의 경우 고객은 Amazon S3, Amazon EFS 또는 Amazon FSx for Luster를 학습 환경의 데이터 스토리지 계층으로 사용할 수 있습니다. Lustre, Amazon S3 및 Amazon EFS를 위한 Amazon FSx 중에서 선택하면 가격과 성능이 균형을 이루게 됩니다.

이 패턴은 틈새 요구 사항이 있을 수 있는 일회성 프로젝트에 유용합니다. 그러나 기업을 위한 딥 러닝 플랫폼의 대안으로 고려하지 마십시오. 다음 그림에서 차이를 명확하게 볼 수 있습니다.

그림 11 : DL AMI DL 계층 및 ML 프로세스 매핑이 포함 된 Amazon EC2

Amazon EC2를 사용하여 사용자 정의 환경의 여러 노드에서 대규모 데이터 세트에 대한 실험을 확장하려는 경우 AWS Parallel Cluster와 같은 도구를 사용하여 클러스터를 설정할 수 있습니다. AWS Parallel Cluster는 과학자, 연구원 및 IT 관리자가 AWS 클라우드에서 고성능 컴퓨팅 (HPC) 클러스터를 쉽게 배포하고 관리 할 수있는 오픈 소스 클러스터 관리 도구입니다.

AWS Parallel Cluster를 사용하면 많은 AWS Cloud 네이티브 제품이 HPC 워크로드를 실행하는 환경에 익숙한 클러스터 환경을 시작하는데 사용됩니다.

SLURM과 같은 작업 스케줄러를 사용하여 클러스터에서 학습 작업을 예약 할 수 있습니다. 다음 그림은 Amazon EFS를 스토리지 계층으로 사용할 때이 설정이 어떻게 나타나는지 보여줍니다. 클러스터 성능을 더욱 향상 시키려면 Amazon S3에서 hydrated 된 Amazon FSx for Lustre용 Elastic Network Adapter (ENA) 및 Amazon FSx와 함께 Amazon P3dn 인스턴스를 사용할 수 있습니다.

그림 12 : Amazon EC2 및 Amazon EFS를 사용하는 SLURM 아키텍처

고급 사용 사례 : 다른 AWS 서비스와 함께 Amazon SageMaker 사용

다른 AWS 서비스를 활용하여 Amazon SageMaker가 제공하는 딥 러닝 솔루션의 기능을 확장해야 하는 고급 사용 사례가 있을 수 있습니다. 이 섹션에서는 Amazon SageMaker 및 기타 AWS 서비스를 사용하는 몇 가지 고급 사용 사례를 검토합니다.

AWS Step Functions를 사용하여 엔드 투 엔드 머신 러닝 파이프 라인 조정

AWS Step Functions를 사용하면 탄력적인 서버리스 워크 플로우를 구축 할 수 있습니다. AWS Step Functions에서 워크 플로우는 유한 상태 머신으로 구현됩니다. 상태는 작업, 선택, 논리 분기, 병렬 작업 집합, 오류 처리기 등이 될 수 있습니다. 워크 플로우는 DAG (Directed Acyclic Graph)로 구현되며 GoTo 로직을 사용합니다. 또한 AWS Step Functions를 사용하면 예외를 처리하고 오류 처리를 수행하여 흐름을 보다 강력하게 만들 수 있습니다.

AWS Step Functions에서 작업 상태는 대부분의 무거운 작업을 수행합니다. 작업 상태에는 활동 작업과 Lambda 작업의 두 가지 유형이 있습니다. 활동 작업에서 작업자는 AWS Step Functions에서 작업을 요청한 다음 작업을 수행하고 결과를 반환합니다. Lambda 작업은 AWS Step Functions에서 AWS Lambda 함수에 대한 동기 호출입니다. Lambda 작업의 최대 실행 시간이 Lambda 함수의 최대 실행 시간으로 정의 된대로 최대 15 분의 Lambda 작업이 있습니다. AWS Step Functions를 사용하면 승인 및 거부와 같은 휴먼 액션을 상태 머신에 삽입 할 수 있습니다. 작업을 워크 플로우에서 사용하여 프로덕션 환경으로의 모델 푸시를 승인하거나 거부 할 수 있습니다.

AWS Step Functions의 모든 기능을 사용하여 복잡한 엔드 투 엔드 딥 러닝 워크 플로우를 구축 할 수 있습니다. Amazon S3에 새 데이터가 도착하면 훈련 작업을 시작하고 새로 훈련 된 모델을 배포 할 때 워크 플로우를 트리거 할 수 있습니다. 알림 및 오류 처리를 추가하여 워크 플로우를 보다 강력하고 투명하게 만들 수 있습니다. 다음 워크 플로우 다이어그램은 재학습 및 재배치를 위해 AWS Step Functions를 사용하여 구현 된 엔드 투 엔드 딥 러닝 워크 플로의 샘플 표현입니다.

그림 13 : 재학습 및 재배치 워크 플로우

여러 AWS 리전에서 백엔드로 Amazon SageMaker와 함께 AWS Batch를 사용하여 Hyperscale Deep Learning 작업 조정

일부 고객은 비용, 성능 또는 규제 문제로 인해 데이터가 생성 된 지역의 주 경계 내에 데이터를 로컬로 유지해야하는 매우 큰 데이터 세트에 대한 학습이 필요한 사용 사례를 보유하고 있습니다. 이 데이터는 로컬로 생성 된 자율 주행 차량 또는 로컬로 생성된 캠페인 데이터, 가장 가까운 AWS 리전으로 로컬로 전송되고 동일한 리전 내에서 레이블이 지정된 4K 비디오 데이터 일 수 있습니다. Amazon SageMaker를 사용하여 동일한 지역에서 모델을 로컬로 학습 할 수 있습니다. 선택적으로 여러 Amazon SageMaker 학습 작업을 시작하여 각 리전에서 병렬로 학습 할 수 있습니다. AWS Batch를 사용하면 중앙 리전의 여러 AWS 리전에서 Amazon SageMaker에서 실행중인 여러 작업을 조정하고 모니터링 할 수 있습니다.

이 이벤트 중심 아키텍처는 데이터가 온 프레미스 환경에서 가장 가까운 AWS 리전에 업로드 될 때 학습 작업을 시작합니다.

Amazon S3로 들어오는 데이터를 한 곳에서 관계 테이블로 생성 할 수 있습니다. 중앙 테이블은 다른 지리적 위치에서 실행되는 다른 캠페인에서 가져온 모든 데이터 파일의 색인을 유지합니다. 이 중앙 테이블에서 쿼리를 실행하여 AWS Batch 어레이 작업을 생성 할 수 있습니다. AWS Batch 스토리지 작업은 일반 작업과 마찬가지로 제출됩니다. 그러나 배열에서 실행해야하는 하위 작업 수를 정의하려면 배열 크기 (2에서 10,000 사이)를 지정합니다. 배열 크기가 1,000 인 작업을 제출하면 단일 작업이 실행되고 1,000 개의 하위 작업이 생성됩니다. 배열 작업은 모든 하위 작업을 관리하기 위한 상위 작업에 대한 참조 또는 포인터입니다. 이 기능을 사용하면 단일 쿼리로 큰 워크로드를 제출할 수 있습니다. 이 설정을 위해 두 개의 Docker 이미지를 구축합니다. 하나는 Amazon SageMaker 훈련 용이고 다른 하나는 Amazon SageMaker API를 사용하여 여러 리전에서 훈련을 조정하기위한 것입니다. AWS Batch가 실행하는 오케스트레이터 이미지에는 다른 매개 변수를 사용하여 다른 AWS 리전에서 여러 하위 작업을 생성하는 논리가 있지만 네 개의 리전 모두에서 동일한 작업 구성을 사용합니다.

그림 14 : 여러 리전에서 Amazon SageMaker 작업을 조정하기 위한 참조 아키텍처

Amazon S3 및 Amazon DynamoDB를 사용하여 배치 및 실시간 추론 및 학습을 위한 기능 저장소 구축

데이터 중심 회사가 되고 싶거나 이미 데이터 레이크 솔루션을 구축하고 있거나 분석 및 AI / ML을 위해 데이터를 민주화하기 위한 데이터 레이크 솔루션을 보유하고있는 많은 조직이 이미 있습니다.

조직 전체의 데이터가 단일 리포지토리에서 관리 및 공유되므로 데이터 레이크 생성은 머신 러닝 프로세스의 중요한 단계입니다. 그러나 제기되는 문제는 데이터 엔지니어가 아닌 딥 러닝 엔지니어와 과학자가 새로운 문제를 해결하기 위해 새로운 기능을 쉽게 얻을 수 있다는 것입니다. 딥 러닝 엔지니어와 과학자들은 데이터 레이크에 있는 데이터 산에서 의미 있는 기능을 어떻게 추출합니까? 딥 러닝에 사용하기 위해 데이터 레이크에서 기능의 데이터 세트를 빌드하려면 시간과 다른 기술 세트가 필요합니다.

특징은 관찰중인 현상의 측정 가능한 속성입니다. 원시 단어, 픽셀, 센서 값, 데이터 저장소의 행, CSV 파일의 필드, 집계 (최소, 최대, 합계, 평균) 또는 파생 표현 (임베딩 또는 클러스터) 일 수 있습니다.

피처 파이프 라인이 다음 다이어그램에 표시되어 있습니다. 이러한 복잡한 파이프 라인을 사용하여 기능 세트를 작성하는 데 필요한 작업량을 상상할 수 있습니다. 고객 대화에서 파생된 일화적인 증거를 바탕으로 기능 엔지니어링은 딥 러닝 프로젝트에 소요되는 시간의 25 % 이상을 소비 할 수 있습니다.

그림 15 : 기능 파이프 라인 예

대부분의 기술 솔루션과 마찬가지로 이 문제를 해결하는 두 가지 방법이 있습니다. 기능 엔지니어링을 자동화하거나 기존 기능 및 모델을 재사용하는 기술을 개발하십시오. 자동화된 기능 엔지니어링에 대한 연구가 진행되고 있지만 기능 재사용에 대한 관심과 패턴은 소수의 조직에서 드러나기 시작했습니다. 기능 스토어의 개념은 관심과 견인력을 얻고 있습니다. 아직 초기 단계이며 이 새로운 아이디어를 대상으로 하는 솔루션을 보유한 오픈 소스 이니셔티브와 타사 ISV 공급 업체는 거의 없습니다.

간단히 말해 기능 저장소는 여러 프로젝트에서 재사용하여 딥 러닝 모델을 학습, 평가 및 유추 할 수 있는 딥 러닝 기능의 선별 된 저장소입니다.

딥 러닝 기능 저장소와 다른 저장소 (예 : 데이터웨어 하우스)의 근본적인 차이점은 기능이 딥 러닝 기능 저장소의 기본 엔터티라는 것입니다.

AWS 서비스를 사용하여 간단한 기능 저장소를 개발하고 시간이 지남에 따라 계속 반복하고 구체화 할 수 있습니다. 기능 저장소를 지원하려면 다음 기능이 필요합니다.

  • 재사용 : 데이터 엔지니어가 개발 한 기존 기능 저장소 파이프 라인을 사용하여 기능 저장소에서 기능을 다시 계산하고 캐시합니다.
  • 저장 : 기능 설명에 설명, 문서 및 기능의 통계 측정 값과 같은 기능의 메타 데이터를 저장합니다.
  • 검색 : API를 통해 ML 실무자에게 메타 데이터를 검색 할 수 있게 합니다.
  • 통제 : 통제 및 액세스 제어를 위해 기능 저장소 위에 데이터 관리 계층을 추가하십시오.
  • 소비 : ML 실무자가 훈련 또는 실시간 추론을 위해 기능을 내보내는 API를 사용하여 기능을 쿼리하고 소비 할 수 있습니다.

기능 저장소는 ML 프로젝트 비용을 크게 줄일 수 있습니다. 후속 프로젝트에 의해 선별 된 기능 세트를 재사용하면 비용이 절감됩니다. ML 실무자는 데이터 레이크의 데이터 더미에서 작업하지 않고 선별 된 기능 목록을 작업하기 때문에 비용 외에도 기능 저장소를 재사용하면 더 빠른 배송 시간을 확보 할 수 있습니다. 기능 저장소는 데이터 엔지니어 역할과 ML 실무자 간의 추상화를 제공합니다. 기능 저장소를 사용하면 학습 및 추론의 일관성을 유지할 수 있습니다. 다음 그림은 ML 프로젝트 비용과 기능 재사용 간의 관계 그래프를 보여줍니다. 그림과 같이 기능 저장소에서 점점 더 많은 기능이 재사용 될수록 프로젝트 비용이 줄어 듭니다.

그림 16 : ML 프로젝트 비용과 기능 재사용

기능 저장소의 실제 소스로 Amazon S3를 사용할 수 있습니다. Amazon S3에서 제공하는 컨트롤을 사용하여 기능 스토어를 버전 관리하고 관리 할 수 있습니다. Amazon S3를 Amazon SageMaker 학습 및 Amazon SageMaker Batch Transform 작업을위한 스토리지 계층으로 사용할 수 있습니다. 지연 시간이 짧은 온라인 추론을 위해 기능 데이터 세트를 Amazon DynamoDB에 복사하여 추론에 사용할 수 있습니다. 기능을 검색 가능하고 검색 가능하게 하려면 기능 메타 데이터를 Amazon DynamoDB로 푸시하고 Amazon Elastic Search를 사용하여 메타 데이터를 검색 가능하게 만들 수 있습니다.

다음 그림은 기능 저장소의 참조 아키텍처를 보여줍니다.

그림 17 : AWS의 기능 저장소 참조 아키텍처

다음 그림은 엔터프라이즈 수준에서 데이터 레이크, 데이터웨어 하우스 및 기능 저장소가 서로 상대적으로 배치되는 방법을 보여줍니다.

그림 18 : 데이터 레이크, 데이터웨어 하우스 및 기능 저장소의 개념적 복합 뷰

AWS 지침

이 가이드에서는 딥 러닝 스택과 딥 러닝 프로세스에 대해 설명했습니다. 딥 러닝 엔지니어와 과학자의 깊고 광범위한 요구를 해결하는데 사용할 수 있는 AWS 서비스에 대해 논의했습니다. 또한 딥 러닝 엔지니어와 과학자가 조직에서 딥 러닝을 채택하고 확장하기 위해 활용할 수 있는 디자인 패턴에 대해서도 설명했습니다. 우리는 즉시 사용할 수 있고 머신 러닝을 위해 완벽하게 관리되는 Amazon SageMaker에서 사용할 수 있는 기능에 대해 논의했습니다. 또한 Amazon EC2 및 Amazon EKS와 같은 다른 AWS 서비스를 사용하여 자체 딥 러닝 환경을 구축하려는 경우에 대해서도 논의했습니다. AWS를 사용하면 가장 적합한 접근 방식을 유연하게 선택할 수 있습니다.

다음은 고객이 AWS AI / ML 스택에서 제공하는 다양한 옵션을 활용하는 일반적인 시나리오입니다.

신생 기업인 경우 고성능 GPU 컴퓨팅 구매 및 인프라 관리에 적은 비용을 지출하고 싶습니다. 대부분의 경우 소규모 개발자 및 데이터 과학자 팀이 있으며 소규모 팀과 함께 새로운 딥 러닝 기능을 출시하는 데 중점을 둘 것입니다. Amazon SageMaker는 이상적인 선택입니다.

딥 러닝 기능을 사용하여 새로운 제품 기능을 개발하는 조직에서 연구 과학자로 일하는 경우 더 많은 자율성, 격리성 및 제어력이 필요할 수 있습니다. 조직에 딥 러닝을 위한 표준 플랫폼을 사용하기 위한 지침이나 정책이 없을 수 있습니다. 딥 러닝 데스크톱으로 AWS DL AMI와 함께 Amazon EC2를 계속 사용할 수 있지만 실험을 스케일링하기 위해 자동 하이퍼 파라미터 튜닝으로 학습 할 때 Amazon SageMaker를 고려할 수도 있습니다.

딥 러닝 모델의 성능이 고객 선호도의 변화에 따라 우수한 성능을 유지하도록 노력하는 제품 팀인 경우 엔드 투 엔드 자동 딥 러닝 파이프 라인을 구현하여 AWS Step Functions 및 Amazon SageMaker를 사용하여 모델을 재학습하고 배포 할 수 있습니다.

조직에서 딥 러닝 채택을 가속화해야하는 조직의 기술 리더인 경우 Amazon SageMaker를 조직에서 딥 러닝 모델을 구축, 학습 및 배포하기위한 완전 관리 형 서비스로 사용할 수 있습니다. Amazon SageMaker를 사용하면 소규모 딥 러닝 팀으로 더 많은 것을 달성 할 수 있습니다. 완벽하게 관리되는 서비스는 운영을 간소화하고 컴퓨팅 인프라 낭비를 없애고 딥 러닝 엔지니어와 과학자의 생산성을 향상 시키며 비용 효율적인 실험을 가능하게 하며 시장 출시 기간을 단축시킵니다.

Kubernetes에서 인프라를 표준화하기로 결정한 조직에 속한 경우 Amazon EKS를 인프라 계층으로 사용할 수 있습니다. Kubeflow와 같은 오픈 소스 구성 요소를 추가하여 Amazon EKS에서 딥 러닝 모델의 구축, 학습 및 배포를 단순화 할 수 있습니다. Amazon EKS는 영구 클러스터입니다. 클러스터는 수평 확장 및 축소가 가능합니다. 딥 러닝 작업에 효율적이고 성능을 발휘할 수 있도록 조정해야하는 범용 컴퓨팅 플랫폼입니다. 이를 관리하고 운영하려면 고급 전문 지식과 기술이 필요합니다. 선택적으로 Kubernetes 및 Kubeflow 스택에서 데이터 레이블 및 주석에 Amazon SageMaker Ground Truth를 사용하고 모델 최적화에 Amazon SageMaker Neo를 사용할 수 있습니다.

결론

이 안내서는 AWS에서 딥 러닝을 배포 할 때 사용되는 모든 기술 구성 요소, 솔루션 및 패턴에 대한 포괄적인 개요를 제공합니다. 또한 관심있는 고급 사용 사례도 강조했습니다. 우리는 딥 러닝에 대한 연구가 빠르게 진행되고 있으며 딥 러닝 영역에서 사용되는 도구가 끊임없이 변화하고 발전하고 있음을 이해합니다.

완전 관리형에서 DIY까지 AWS 환경에서 제공하는 현재의 옵션 상태는 대부분의 딥 러닝 프로젝트의 결정적인 요구 사항을 모두 충족합니다. 그러나 유스 케이스 또는 프로젝트의 특수 요구 사항을 해결하기 위해 더 깊은 참여 및 대화가 필요한 요구 사항이 발생할 수 있습니다. 이러한 특별 요구 사항 또는 이 안내서에 게시 된 콘텐츠에 대한 설명을 보려면 해당 AWS팀에 문의하십시오.

AWS는 IT 인프라 비용을 절감하고 기업의 핵심가치에 더욱 집중할 수 있도록 합니다.

AWS에 대한 자세한 문의사항은 여기를 눌러 주세요.

빌드업웍스는 AWS 컨설팅 파트너로 고객 비즈니스를 최우선으로 하며 고객의 클라우드의 성공적인 시작과 운영을 지원합니다.

--

--

빌드업웍스
빌드업웍스

Written by 빌드업웍스

클라우드 교육, 구축, 운영, 관리, 컨설팅 및 교육 리소스 디지털 퍼블리싱 : AWS 파트너, 유데미 파트너| buw.co.kr | admin@buw.co.kr | 053–954–3711

No responses yet