[고지 사항 (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부로 구성되어 있으며 이 글은 1부입니다.
AWS 기반 딥 러닝 2/2
이 안내서에 대하여
오늘날 딥 러닝은 광범위한 비즈니스 분야에서 대부분의 머신 러닝 구현의 최전선에 있습니다. 신경망의 매우 유연한 특성에 의해, 가능한 것의 경계는 신경망이 이미지에서 물체를 분류하거나 비디오 게임을 몇 시간 안에 마스터링하는 것과 같은 다양한 작업에서 인간을 능가하는 지점까지 왔습니다. 이 안내서는 Amazon Web Services (AWS)에서 구현 된 엔드 투 엔드 딥 러닝 프로세스를 간략하게 설명합니다. 딥 러닝 프로젝트 실행 시 발생하는 문제에 대해 논의하고 AWS가 제공하는 최신 기술과 인프라를 강조하고 그에 따른 아키텍처 지침과 모범 사례를 제공합니다.
이 백서는 딥 러닝 연구 과학자, 딥 러닝 엔지니어, 데이터 과학자, 데이터 엔지니어, 기술 제품 관리자 및 엔지니어링 리더를 대상으로합니다.
개요
딥 러닝의 기본 아이디어는 수십 년 동안 존재 해 왔습니다. 그러나 최근 정보의 디지털화가 급증함에 따라 조직은 머신 러닝 파이프 라인에서 쉽게 사용할 수 있는 많은 양의 데이터를 축적했습니다.
더욱이, 우리 세대는 소셜 미디어에 연결된 휴대 전화 및 컴퓨터에 더 많은 시간을 소비하고 있으며 그로 인해 더 많은 데이터가 발생했습니다. 의학에서도 x- 레이 이미지는 실제 필름 대신 디지털 레코드로 저장됩니다.
한편으로 데이터의 양은 폭발적으로 증가했지만 로지스틱 회귀, 의사 결정 트리, 지원 벡터 머신 등과 같은 기존 머신 러닝 알고리즘의 성능은 더 많은 데이터가 제공되는 경우에도 정체되었습니다.
여러 차례의 사건에서, 작은 신경망은 적용의 정확성이 향상되었습니다. 중간 신경망은 적용 정확도가 향상되었습니다. 심층 신경망은 더 많은 데이터가 공급 될 때 정확도가 계속 향상됩니다. 심층 신경망에 더 많은 레이어와 더 많은 데이터를 도입하여 얻을 수있는 정확도의 한계에 도달하지 못했습니다.
신경망에 더 많은 레이어를 추가하고 더 많은 데이터를 제공하면 딥 러닝 응용 프로그램의 정확성을 향상시키는 데 도움이 되었습니다. 그러나 심층 신경망을 훈련하는 것은 장애물이 되었으므로 훈련에는 강력하고 종종 비싼 컴퓨팅 인프라에 대한 액세스가 필요하기 때문입니다. 클라우드 컴퓨팅은 온 디맨드 GPU를 비용 효율적이고 탄력적 인 방식으로 제공하여 원하는 수준의 모델 정확도를 달성하는 데 필요한 대규모 실험을 가능하게 하여 이 문제를 해결했습니다.
확률적 그래프 모델, 계획 알고리즘, 검색 알고리즘 및 지식 그래프와 같이 기계 학습의 광범위한 우산 아래에 다른 도구가 있지만 꾸준히 개선되고 있지만 딥 러닝은 기하 급수적으로 개선되어 계속 새로운 지평을 열었습니다.
이 안내서에서는 Amazon Web Services (AWS)가 딥 러닝 프로젝트를 지원하기 위해 제공하는 고유한 가치 제안에 대해 설명합니다. AWS 최적화 컴퓨팅, 스토리지 및 네트워크 인프라를 사용하여 딥 러닝 도메인의 AWS 혁신을 활용하여 딥 러닝 작업의 학습 시간을 향상시킬 수 있습니다. 딥 러닝 작업은 AWS 서비스를 사용하고 AWS의 딥 러닝 인프라 및 플랫폼 관리와 관련된 미분화 작업을 오프로드함으로써 생산성과 민첩성이 향상됩니다. AWS는 딥 러닝 프로젝트의 탐구적 특성에 필요한 가장 깊고 광범위한 기능과 유연성을 제공합니다.
이 안내서 전체에서 딥 러닝 엔지니어와 딥 러닝 과학자를 사용하여 딥 러닝을 위한 AWS 서비스 사용자를 참조합니다. 딥 러닝 엔지니어와 딥 러닝 과학자는 다양한 팀이 다른 제목의 딥 러닝 프로젝트를 수행하고 있음을 의미합니다.
딥 러닝 환경
다음 그림은이 가이드에서 다루는 딥 러닝 환경의 시각적 경계입니다. 다이어그램의 다양한 부분에 대한 자세한 설명은 다음 표를 참조하십시오.
참고 : 완전 관리형 (4) 및 DIY (Do-it-Yourself) (3) 옵션 사이에는 Kubeflow와 같은 완전 관리형 컨테이너 서비스와 자체 관리형 딥 러닝 워크 플로우 서비스를 사용하는 부분 관리 방식이 있습니다. 이 부분적으로 관리되는 접근 방식은 Kubernetes를 기반으로 인프라를 표준화하기로 결정한 조직과 관련이 있습니다. 자세한 내용은 DIY 부분 관리 솔루션 : Kubernetes를 Kubeflow와 함께 AWS에서 사용을 참조하십시오.
이 안내서 사용
이 안내서는 아래에 설명 된대로 7 개의 섹션으로 구성되어 있습니다.
- 구축, 학습 및 배포를 위한 딥 러닝 프로세스
- 딥 러닝 프로젝트의 과제
- 딥 러닝을 위한 고도로 최적화 된 AWS 기술 빌딩 블록
- 코드, 데이터 및 모델 버전 관리
- 재 훈련 및 재배치를 위한 딥 러닝 프로세스 자동화
- 대규모 딥 러닝을 위한 패턴
- AWS 지침
딥 러닝 프로세스 및 딥 러닝 스택에 익숙하지 않은 경우 이 가이드를 전체적으로 순서대로 읽으십시오.
AWS Deep Learning 빌딩 블록, 딥 러닝 과제 및 딥 러닝 프로세스에 익숙한 경우 섹션 4, 5, 6 및 7로 건너 뛸 수 있습니다.
구축, 학습 및 배포를 위한 딥 러닝 프로세스
다음 이미지는 딥 러닝 과정의 6 단계를 보여줍니다. 다음 섹션에서는 딥 러닝 프로세스의 각 단계에 대한 자세한 정보를 제공하고 인프라 성능, 병목 현상, 확장성, 안정성 및 사용 편의성 측면에서 문제를 설명합니다.
1 단계. 데이터 수집
딥 러닝은 데이터 수집 및 준비 단계와 관련하여 기존 머신 러닝과 다릅니다. 피쳐 엔지니어링은 전통적인 머신 러닝 구현에서 병목 현상이 되는 경향이 있지만 딥 러닝 (특히 이미지 인식 및 자연어 처리 (NLP) 사용 사례)에서 신경망에 의해 자동으로 피쳐가 생성 될 수 있습니다. 기능은 딥 네트워크의 각 노드 레이어가 샘플을 가져 오는 입력을 재구성하여 반복적으로 시도하여 기능을 학습함으로써 추출되며, 네트워크 추측과 입력 데이터 자체의 확률 분포 간의 델타를 최소화 할 수 있습니다.
그러나 처음부터 학습 할 때 성능이 우수한 모델을 개발하려면 많은 양의 학습 데이터가 여전히 필요하며 이로 인해 상당한 양의 레이블이 지정된 데이터가 필요합니다. 딥 러닝 구현을 위한 새로운 응용 프로그램이나 새로운 사용 사례를 다룰 때 특히 사용 가능한 레이블이 지정된 데이터가 충분하지 않을 수 있습니다.
이 백서의 딥 러닝을 위한 고도로 최적화 된 AWS 기술 빌딩 블록 섹션에서 딥 러닝에 대해 이러한 고유한 과제를 완화하는 방법에 대해 논의합니다. 첫 번째 단계로 아래 다이어그램을 사용하여 데이터 수집 프로세스를 평가하십시오.
데이터 전처리
데이터 전처리는 데이터 정리, 데이터 통합, 데이터 변환 및 데이터 축소로 구성되며 학습 프로세스를 시작하기 전에 부정확하고, 누락되거나, 혼란스럽고, 일관성이 없는 데이터를 완화 할 수 있습니다. AWS는 기능 엔지니어링 수행 외에도 데이터 사전 처리 단계를 수행하는 데 사용할 수 있는 다양한 도구와 서비스를 제공합니다 : AWS Glue, Amazon EMR, AWS Lambda, Amazon SageMaker, AWS Batch 및 AWS Marketplace. 이러한 도구의 사용법은 AWS의 Big Data Analytics 옵션 백서에 자세히 설명되어 있습니다.
가장 중요한 것은 많은 오픈 소스 딥 러닝 프레임 워크의 광범위한 가용성으로 인해 개별 프레임 워크를 수용 할 수 있는 다양한 파일 형식이 등장한 것입니다. 데이터 수집 프로세스에서 파일 형식을 선택하는 것은 데이터 전처리 단계에서 중요한 단계이며 딥 러닝 구현을 수행하기 위해 선택한 프레임 워크에 따라 크게 달라집니다. 일부 표준 형식에는 RecordIO, TFRecords, 계층 데이터 형식 (HDF5), pth, N5 및 LMDB (Light Memory Mapping Database)가 포함됩니다.
2 단계. 알고리즘 선택 및 최적화
딥 러닝 구현 내에서 다양한 네트워크 아키텍처와 딥 러닝 알고리즘을 구분합니다. 사용 가능한 모든 네트워크 아키텍처 및 학습 알고리즘에 대한 논의는 이 문서의 범위를 벗어납니다. 간결하게 하기 위해 가장 일반적으로 사용되는 3 가지 네트워크 아키텍처와 오늘날 사용되는 인기있는 학습 알고리즘에 대해 간략하게 설명합니다.
딥 러닝 네트워크 아키텍처
- Multilayer Perceptrons (MLPs) (Feedforward neural networks [FFNNs])
- Convolutional Neural Networks (CNNs)
- Recurrent Neural Networks (RNNs)
높은 수준에서 우리는 해결하려는 특정 사용 사례를 기반으로 네트워크 아키텍처를 선택했습니다. 다음 표는 사용 사례를 개별 네트워크 아키텍처에 매핑하는 의사 결정 매트릭스입니다.
딥 러닝 알고리즘
대부분의 딥 러닝 모델은 기울기 감소 및 역 전파를 사용하여 훈련 과정에서 오류의 총 변화에 대한 각 매개 변수의 기여도를 부분적으로 도출하여 신경망의 매개 변수를 최적화합니다. 딥 러닝 알고리즘의 훈련 성능에 관한 최적화 기법을 탐구하는 것은 지속적인 연구와 여전히 진화하는 주제입니다. 모멘텀, AdaGrad (적응적 그라디언트 알고리즘), Adam (적응적 순간 추정) 및 Gadam (유전자 진화적 Adam)과 같은 기존 그라디언트 디센트 기반 최적화 알고리즘의 많은 새로운 변형이 딥 러닝 네트워크의 학습 성능을 향상시키기 위해 등장했습니다. .
3 단계. 학습 환경 설정 및 관리
훈련 작업을위한 딥 러닝 환경을 설계하고 관리하는 것은 쉽지 않습니다. 딥 러닝 학습 작업은 기존 머신 러닝 구현과 다릅니다. 대부분의 신경망의 복잡성, 데이터 집합의 높은 차원, 마지막으로 많은 훈련 데이터로 큰 모델을 훈련하는 데 필요한 인프라의 규모에 따라 문제가 발생합니다. 이러한 과제를 해결하려면 컴퓨팅 및 스토리지 인프라에서 탄력성과 성능이 필요합니다.
AWS에서는 TensorFlow, PyTorch, Apache MXNet, Chainer, Microsoft Cognitive Toolkit, Gluon, Horovod 및 AWS로 사전 구성 된 AWS Deep Learning Amazon Machine Image (AWS DL AMI)를 사용하여 처음부터 신경망을 구축하도록 선택할 수 있습니다. Keras를 사용하면 이러한 프레임 워크와 도구를 대규모로 신속하게 배포하고 실행할 수 있습니다. 또한 TensorFlow 및 Apache MXNet을 지원하는 딥 러닝 프레임 워크가 사전 설치된 사전 구성된 AWS Deep Learning Containers (AWS DL Containers) 를 사용하여 Amazon Elastic Kubernetes Service (Amazon EKS), 자체 관리 Kubernetes, Amazon Elastic Container Service(Amazon ECS) 에서 실행할 수 있습니다. 또는 Amazon Elastic Compute Cloud (Amazon EC2)에서 직접 사용할 수 있습니다. 마지막으로 AWS SDK for Python을 활용할 수 있습니다. 이 SDK는 여러 가지 머신 러닝 및 딥 러닝 프레임 워크를 사용하여 Amazon SageMaker에서 모델을 학습 및 배포하기위한 오픈 소스 API 및 컨테이너를 제공합니다. 이 백서의 후반부에서 이러한 서비스를 사용하는 가장 일반적인 솔루션과 패턴에 대해 논의합니다.
4 단계. 모델 훈련, 재 훈련 및 튜닝
신경망 학습은 기존의 머신 러닝 구현과 다릅니다. 모델이 많은 “좋은”솔루션을 가진 비 볼록 오류 공간에서 함수 근사를 통해 입력에서 출력으로 매핑 기능을 학습해야 하기 때문입니다.
폐쇄형 폼 솔루션(단순 선형 회귀 모델의 경우처럼)을 통해 최적의 가중치 집합을 직접 계산할 수 없고 글로벌 통합 보증을 받을 수 없기 때문에, 신경 네트워크 학습은 어려운 일이며 보통 다른 머신러닝 알고리즘보다 훨씬 더 많은 데이터와 계산 리소스를 필요로 합니다.
AWS는 신경 네트워크의 학습 프로세스를 단순화하는 다양한 도구와 서비스를 제공합니다. 본 백서에서는 Amazon EC2에서 자체 관리형 심층 학습 환경 실행, Amazon EKS 또는 Amazon ECS에서 심층 학습 환경 실행, 심층 학습을 위한 완전 관리형 서비스 Amazon SageMaker 사용 등 다양한 옵션에 대해 설명합니다. 이러한 환경은 모두 고도로 맞춤화된 GPU 기반 하드웨어를 사용하여 학습 시간과 학습 비용을 절감합니다.
2 단계에서 설명한 모델 설계 외에 알고리즘 선택 및 최적화 외에도 학습 과정을 시작하기 전에 하이퍼 파라미터를 설정할 수 있습니다. 최적의 하이퍼 파라미터를 찾는 것은 반복적인 과정이며, 딥 러닝 구현에서 검색 공간의 높은 차원과 복잡성 때문에 이 노력은 노동력과 비용이 많이 들 수 있습니다. 그리드 검색, 랜덤 검색 및 베이지안 최적화와 같은 기술을 통해 최적의 하이퍼 파라미터 설정을 찾기 위한 다양한 전략이 개발되었습니다.
하이퍼 파라미터 튜닝은 Amazon SageMaker에서 턴키 기능으로 제공됩니다.
5 단계. 프로덕션에서 모델 배포
머신 러닝 모델을 프로덕션에 배포하면 엔드 투 엔드 머신 러닝 파이프 라인에서 가장 어려운 부분이 종종 발생합니다. 머신 러닝 워크로드 배포는 기존 소프트웨어 배포와 다르기 때문입니다.
먼저 모델이 제공하는 추론 유형을 고려해야 합니다. 배치 추론 (오프라인)과 실시간 추론 (온라인). 이름에서 알 수 있듯이 배치 추론은 일련의 관측치에 대해 비동기식으로 예측을 생성합니다. 배치 작업은 반복 일정 (예 : 시간별, 일별, 주별)으로 생성됩니다. 이러한 예측은 데이터 저장소 또는 플랫 파일에 저장되어 최종 사용자가 사용할 수 있게 됩니다. 실시간 추론은 요청 시 실시간으로 예측을 생성하는 프로세스로, 대부분 런타임 시 데이터를 한 번 관찰 할 때 가장 자주 발생합니다.
둘째, 모델 재학습 방법을 고려해야 합니다. 모형을 정확하게 예측하려면 모형에 제공되는 데이터에 예측을 수행하기 위해 모형이 훈련 된 데이터와 유사한 분포가 있어야 합니다. 그러나 대부분의 머신 러닝 배포에서 데이터 배포는 시간이 지남에 따라 표류 할 것으로 예상되기 때문에 모델 배포는 일회성 연습이 아니라 지속적인 프로세스입니다. 데이터 배포가 원래의 학습 데이터 배포에서 크게 벗어난 것을 발견하면 들어오는 데이터를 지속적으로 모니터링하고 최신 데이터에서 모델을 다시 학습하는 것이 좋습니다. 사용 사례에 따라 모델을 재학습하는 온 디맨드 방식 대신 자동이 더 적합 할 수 있습니다. 예를 들어, 데이터 분포의 변화를 감지하기 위해 데이터를 모니터링하는 경우 오버 헤드가 높으면 모델을 주기적으로 훈련시키는 것과 같은 간단한 전략이 더 적합 할 수 있습니다.
셋째, 모델 버전 제어를 구현하고 수요를 충족시키는 확장 인프라를 갖추는 것은 딥 러닝에만 국한된 것이 아니라 추가로 고려해야 할 사항입니다. 버전 제어는 모델에서 생성 된 출력을 해당 모델의 특정 버전에 연결할 수 있게 해줄 뿐만 아니라 모델과 학습 파일 간의 추적 성을 허용하기 때문에 필수적입니다. 추론 엔드 포인트에 GPU 코어의 일부를 추가 할 수 있을 뿐만 아니라 추론 엔드 포인트의 컴퓨팅 용량을 동적으로 조정하면 용량을 초과 프로비저닝 하지 않고도 애플리케이션의 요구를 충족시킬 수 있습니다.
넷째, 시간이 지남에 따라 모델의 성능을 감사하는 도구를 구현하는 것이 모델을 프로덕션에 구현하는 마지막 단계입니다. 감사 솔루션은 시간이 지남에 따라 객관적인 평가 지표를 정확하게 관찰하고, 오류를 감지하고, 시간이 지남에 따라 모델의 정확도가 저하 될 경우 피드백 루프를 제자리에 배치 할 수 있어야 합니다. 이 가이드의 감사 솔루션은 다루지 않습니다.
마지막으로, AWS에서 제공하는 다양한 모델 배포 및 모델 및 데이터 버전 관리 접근 방식에 대해서는 다음 두 섹션인 대규모 학습을 위한 코드, 데이터 및 모델 버전 관리 및 패턴에 대해 자세히 설명합니다.
6 단계. 프로덕션 환경 확장 및 관리
효과적인 머신 러닝 시스템을 구축하고 배포하는 것은 반복적인 프로세스이며 시스템을 변경할 수 있는 속도는 아키텍처의 확장 방법에 직접적인 영향을 주는 동시에 팀의 생산성에 영향을 줍니다. 딥 러닝 구현에서 규모와 관리 효율성을 달성하기 위해 고려해야 할 가장 중요한 세 가지 사항은 모듈성, 계층형 제품 및 다양한 프레임 워크 중에서 선택하는 것입니다. 이 분리 및 프레임 워크 불가지론적 접근 방식은 딥 러닝 엔지니어와 과학자에게 원하는 도구를 제공 할 뿐만 아니라 조직의 특정 사용 사례 및 기술 세트를 제공합니다.
AWS는 모든 일반 머신 러닝 (ML) 워크 플로우를 포괄하는 광범위한 서비스 포트폴리오를 제공하는 한편, 덜 일반적인 맞춤형 사례를 지원할 수있는 유연성을 제공합니다. AWS 기계 학습 스택의 폭과 깊이에 대해 논의하기 전에 오늘날 기계 학습 실무자가 직면하는 가장 일반적인 과제를 살펴 보겠습니다.
딥 러닝 프로젝트의 과제
소프트웨어 관리
딥 러닝 프로젝트는 머신 러닝 프레임 워크에 의존합니다. 많은 딥 러닝 프레임 워크는 오픈 소스이며 프레임 워크 코드에 적극적으로 기여하는 커뮤니티에서 지원합니다. 변경 사항은 빈번하고 때로는 중단됩니다. 경우에 따라 사용자 지정 연산자를 작성하여 성능에 대한 즉각적인 요구를 충족하도록 프레임 워크를 수동으로 운영 해야 합니다.
기계 학습 프레임 워크를 구축, 테스트 및 유지 관리하려면 작업이 필요합니다. 변경 사항이 중단되면 스크립트도 변경해야 합니다. 그러나 오픈 소스 AI 커뮤니티의 최신 정보를 활용하고 내부 프로젝트의 요구 사항을 지원하는 것이 중요합니다.
성능 최적화
딥 러닝의 전체 스택에는 여러 계층이 있습니다. 스택에서 최대 성능을 얻으려면 드라이버, 라이브러리 및 종속성을 포함하는 모든 단일 소프트웨어 계층을 미세 조정해야 합니다. 소프트웨어에서 레이어를 잘못 조정하면 모델의 학습 시간이 늘어나고 학습 비용이 증가 할 수 있습니다.
딥 러닝 스택을 조정하려면 여러 번의 반복 테스트와 전문 기술이 필요합니다. 훈련 및 추론 스택 모두에 대해 대부분 튜닝이 필요합니다. 스택마다 다른 병목 현상 (네트워크, CPU 또는 스토리지 I / O)이 있을 수 있으며 조정 시 해결해야 합니다.
공동 개발
대부분의 경우 딥 러닝 프로젝트를 위해 협력 할 딥 러닝 엔지니어 및 딥 러닝 과학자 팀입니다. 팀은 특정 표준을 준수하여 서로 협력하고 서로의 작업에 대한 피드백을 제공해야 합니다. 프로젝트가 개념 증명에서 생산으로 이동함에 따라 일관성을 위해 시간이 지남에 따라 모델의 성능을 추적하는 것이 중요합니다. 실무자들이 훈련하는 동안 사용되는 다른 스택의 데이터 세트와 하드웨어 버전 및 소프트웨어 구성간에 일관성이 필요합니다. 학습과 추론 스택간에 일관성이 필요합니다. 스택과 스택의 결과는 재현 가능해야 합니다.
인프라 관리
모델의 가치를 입증하기 위해서는 적절한 하이퍼 파라미터와 큰 데이터 세트로 훈련해야합니다. 최적의 하이퍼 파라미터를 검색하려면 대규모 데이터 세트에서 여러 작업을 동시에 실행해야 합니다. 이 실습을 위해서는 중앙 집중식 IT 팀이 관리하는 IT 자산에 의존하는 작업 스케줄러, 오케 스트레이터 및 모니터링 도구를 사용해야 합니다. 모델의 첫 번째 버전이 완전히 개발 된 후에도 DevOps 팀은 최신 데이터에서 모델을 재학습하고 모델을 배포하는데 사용되는 엔드 포인트를 모니터링하고 지원하는 데 필요한 인프라를 지원해야 합니다.
확장성
딥 러닝 학습 및 추론 워크로드는 모두 독특한 특성을 가지고 있습니다. 프로젝트 기간 동안 특정 실험을 수십만 개의 인스턴스로 확장해야하는 특정 기간이 있을 수 있습니다. 이는 연중 특별 행사에서 추론의 계절적 급증이 예상되는 경우에 해당됩니다.
훈련 및 추론을 위한 실험 및 계절 버스트를 지원하는 데 필요한 고성능 컴퓨팅을 계획하고 예측하는 것은 계획하기 어렵습니다.
딥 러닝에 최적화 된 AWS 서비스는 딥 러닝 엔지니어와 딥 러닝 과학자가 직면 한 위의 문제를 해결합니다. 개별 빌딩 블록을 자세히 살펴 보겠습니다.
딥 러닝을 위한 고도로 최적화 된 AWS 기술 빌딩 블록
다음 그림은 AWS의 개별 딥 러닝 계층 구성을 간략하게 보여줍니다.
스토리지
Amazon Simple Storage Service (Amazon S3)
다양한 딥 러닝 프로젝트를 위해 전사적으로 데이터를 수집하고 탐색 및 소비할 수 있도록 하는 것이 중요한 전략적 이니셔티브입니다. 여기에는 데이터 수집, 추출, 변환,로드 (ETL) 수행, 데이터 시각화 및 데이터 정렬과 같은 작업이 포함되어 딥 러닝 모델을 훈련하기 위한 고품질 학습 데이터 세트를 개발합니다.
Amazon Simple Storage Service (Amazon S3)는 중앙 스토리지 계층으로 사용되어 딥 러닝을 위한 데이터를 저장하고 민주화 할 수 있습니다. 딥 러닝 학습 작업을 위한 스토리지 계층으로 Amazon S3를 사용하면 애플리케이션이 초당 수천 건의 트랜잭션을 쉽게 달성 할 수 있습니다. Amazon S3는 자동으로 높은 요청 속도로 확장됩니다.
Amazon S3에서 객체를 수집하고 읽는 동안 Amazon EC2와 Amazon S3 간의 처리량을 고려해야합니다. 여러 Amazon EC2 인스턴스를 분산 방식으로 사용하여 더 높은 성능을 얻을 수 있습니다.
Amazon SageMaker는 Amazon S3를 학습 작업 및 배치 유추에 사용되는 데이터와 훈련 된 모델을 저장하는 데 사용되는 스토리지 계층으로 사용합니다. Amazon SageMaker는 배치 및 파이프 모드를 모두 지원하여 Amazon SageMaker 학습 인스턴스의 로컬 Amazon Elastic Block Store (Amazon EBS) 볼륨에서 Amazon S3의 데이터를 읽습니다.
Amazon EC2에서 자체 컴퓨팅 클러스터를 관리하려는 DIY 고객은 Amazon S3를 스토리지 계층으로 사용하거나 느리게 로딩하는 Amazon S3에서 Amazon FSx for Lustre를 사용하여 심층 학습 작업을 위한 데이터 캐싱 계층을 구축할 수 있습니다. 가격과 성능간에 균형을 유지해야 합니다.
Amazon FSx for Lustre
Amazon FSx for Lustre는 오픈 소스 Lustre를 기반으로 합니다. Luster는 분산 학습을 위한 딥 러닝 데이터 캐싱 계층으로 사용할 수 있는 확장성이 뛰어나고 분산성이 높으며 병렬성이 높은 오픈 소스 파일 시스템입니다.
고성능 기능과 개방형 라이센스로 Luster는 딥 러닝 워크로드에 널리 사용됩니다. Lustre 파일 시스템은 확장 가능하며 수만 건의 클라이언트 노트, PB 데이터 및 초당 TB 총 집계 I / O 처리량을 가진 여러 컴퓨팅 클러스터와 함께 사용할 수 있습니다.
심층 신경망을 학습하는 경우 Luster는 짧은 대기 시간으로 소스 데이터를 빠르게 얻을 수있는 기능을 제공합니다. 그러나 Luster 클러스터를 설정하는 것은 어려울 수 있습니다.
Amazon FSx for Lustre는 Luster File System 설정 및 관리의 복잡성을 단순화하고 몇 분 안에 파일 시스템을 생성하고 원하는 수의 클라이언트에 마운트 한 후 바로 액세스 할 수 있는 경험을 제공합니다. Amazon FSx for Lustre는 완전히 관리되는 서비스이므로 유지 관리 할 사항과 관리 대상이 없습니다. 임시 사용을 위해 독립형 파일 시스템을 구축하거나 S3 버킷에 매끄럽게 결합한 다음 Lustre 파일 시스템 인 것처럼 버킷의 내용에 액세스 할 수 있습니다. Amazon FSx for Lustre는 높은 수준의 처리량, IOPS 및 일관된 짧은 지연 시간이 필요한 워크로드를 위해 설계되었습니다.
Amazon FSx for Lustre의 고유 기능 중 하나는 Amazon S3와의 긴밀한 통합으로 실제 파일 시스템에 데이터를 지연 로드 할 수 있다는 것입니다. 고객이 S3 버킷에서 로드 할 객체를 모르는 경우 Amazon FSx for Luster는 객체 자체의 이름, 날짜, 크기 등으로 구성된 메타 데이터만 로드하지만 실제 파일 데이터는 로드 하지 않습니다. 필요할 때까지 기본적으로 Amazon S3 객체는 애플리케이션에서 처음 액세스 할 때만 파일 시스템으로 로드 됩니다. 애플리케이션이 아직 파일 시스템에 로드 되지 않은 객체에 액세스하는 경우 Amazon FSx for Luster는 Amazon S3에서 해당 객체를 자동으로 로드 합니다.
Amazon Elastic File System (Amazon EFS)
스토리지 솔루션을 선택할 때는 데이터 로컬과 중앙 관리 스토리지 솔루션간에 균형이 있습니다. Amazon EFS는 처리량이 가장 필요한 고도로 병렬화 된 스케일 아웃 워크로드부터 단일 스레드 대기 시간에 민감한 워크로드에 이르기까지 광범위한 사용 사례를 지원하는 데 적합합니다. 그러나 중앙 위치에서 배치 처리를 실행하는 경우 Amazon EFS가 가장 적합한 스토리지 솔루션일 수 있습니다. Amazon EFS를 사용하면 스토리지를 프로비저닝 하거나 네트워크 파일 시스템을 직접 관리 할 필요없이 노트북 환경에서 대규모 머신 러닝 데이터 세트 또는 공유 코드에 쉽게 액세스 할 수 있습니다.
더 많은 데이터가 수집되면 Amazon EFS가 자동으로 확장됩니다. 데이터는 여러 가용 영역에 중복 저장되며 데이터가 증가함에 따라 초당 최대 10GB 이상의 처리량으로 성능이 확장됩니다. Amazon EFS는 여러 가용 영역에서 수천 개의 Amazon EC2 인스턴스에 동시에 마운트 할 수 있습니다.
아래 다이어그램에서 볼 수 있듯이 여러 가용 영역에서 최대 수천 개의 Amazon EC2 인스턴스가 파일 시스템에 동시에 연결할 수 있습니다. 또한 여러 Amazon SageMaker Jupyter 노트북에 마운트 할 수 있습니다. 이 기능을 통해 Amazon EFS를 데이터 및 코드 공유에 사용할 수 있으므로 딥 러닝 엔지니어와 딥 러닝 과학자 간의 협업이 가능합니다. 분산 학습 작업에서 데이터 세트를 학습하기위한 캐싱 계층으로 Amazon EFS를 사용할 수도 있습니다.
다음 그림은 모든 임시 컴퓨팅 노드에 Amazon EFS 엔드 포인트를 추가하여 중앙에서 액세스 가능한 스토리지 솔루션을 마운트하는 방법을 보여줍니다. 가장 중요한 점은 이 엔드 포인트는 파일을 추가하고 제거 할 때 응용 프로그램을 중단하거나 자동으로 확장 및 축소하지 않고도 주문형 페타 바이트로 증가 할 수 있다는 것입니다.
Compute
Amazon EC2 P3 인스턴스
신경망의 계산 집약적인 부분은 많은 행렬과 벡터 연산으로 구성됩니다. 순차적으로 작업을 수행하는 대신 모든 작업을 동시에 수행하여 이 프로세스를 더 빠르게 만들 수 있습니다. 그렇기 때문에 신경망을 훈련시키기 위해 CPU 대신 여러 개의 간단한 계산을 병렬로 처리하는 데 더 나은 GPU가 사용됩니다.
신경망에 더 많은 레이어를 추가하고 (특정 한도까지) 더 많은 데이터에 대한 학습을 통해 딥 러닝 모델의 성능을 향상시키는 것으로 입증되었습니다. GPU에는 수천 개의 간단한 코어가 있으며 수천 개의 동시 스레드를 실행할 수 있습니다. GPU는 복잡한 신경망 훈련에 필요한 훈련 시간을 개선했습니다. 복잡한 모델을 구축하기 위해 신경망 아키텍처를 사용하는 프로젝트의 주요 요구 사항은 고성능 및 비용 효율적인 GPU 인프라의 액세스 및 가용성입니다. GPU 기반 Amazon EC2 P3 인스턴스는 오늘날 클라우드의 다른 GPU 대안과 비교하여 최고의 가격 대비 성능을 제공합니다.
차세대 EC2 컴퓨팅 최적화 GPU 인스턴스 인 Amazon EC2 P3 인스턴스는 최대 8 개의 최신 NVIDIA Tesla V100 GPU로 구동되며 딥 러닝 애플리케이션에 이상적입니다.
Amazon EC2 P3 인스턴스는 맞춤형 Intel Xeon E5 프로세서, 488GB RAM 및 ENA (Elastic Network Adapter) 기술을 활용하는 최대 25Gbps의 총 네트워크 대역폭을 사용하여 64 개의 vCPU를 활용하여 딥 러닝을위한 강력한 플랫폼을 제공합니다. 이후 섹션에서 ENA에 대해 자세히 설명합니다.
GPU는 CPU보다 빠르며 훈련 중에 네트워크와 CPU를 포화시킬 수 있습니다. 학습 인스턴스의 네트워크 파이프 크기와 vCPU 수는 병목 현상이 될 수 있으며 GPU 활용률을 높이는 데 방해가 될 수 있습니다.
P3 인스턴스 제품군에 가장 최근에 추가 된 Amazon EC2 P3dn.24xlarge GPU 인스턴스는 P3.16xlarge 인스턴스의 네트워크 대역폭을 최대 4 배까지 높이며 위에서 언급 한 제한 사항을 해결하도록 특별히 설계되었습니다.
Amazon EC2 P3 인스턴스에 대한 위의 향상된 기능은 단일 인스턴스의 성능을 최적화 할뿐만 아니라 딥 러닝 모델 학습 시간을 단축시킵니다. 이는 학습 인스턴스간에 최대 100Gbps의 네트워크 처리량을 활용하는 여러 인스턴스에서 개별 작업을 확장하여 수행됩니다.
AWS는 100Gbps의 네트워킹 처리량을 제공하는 최초의 클라우드 제공 업체로서, 데이터 전송 병목 현상을 제거하고 GPU 활용을 최적화하여 최대 인스턴스 성능을 제공합니다. GPU 당 16GB에서 32GB로 두 배의 GPU 메모리를 사용하면 이미지 분류 및 객체 감지 시스템을위한 4k 이미지와 같은 더 큰 데이터 배치를 처리할 뿐만 아니라 더 많은 고급 머신 러닝 모델을 학습 할 수 있는 유연성을 제공합니다.
P3 인스턴스 구성과 요금 정보를 비교하려면 Amazon EC2 P3 인스턴스 제품 세부 정보를 참조하십시오.
AWS Inferentia
훈련 된 기계 학습 모델 (추론이라고하는 프로세스)을 사용하여 예측하면 응용 프로그램의 컴퓨팅 비용의 최대 90 %를 구동 할 수 있습니다. ML의 가치가 전달되는 곳이 유추입니다. 여기에서 음성 인식, 텍스트 번역, 비디오의 객체 인식 발생, 제조 결함 발견 및 자동차 운전이 이루어집니다.
Amazon Elastic Inference는 코드 변경없이 Amazon EC2 또는 Amazon SageMaker 인스턴스 유형에 적절한 양의 GPU 기반 추론 가속화를 연결할 수 있도록 하여 이러한 문제를 해결합니다. Amazon Elastic Inference를 사용하면 이제 애플리케이션의 전체 CPU 및 메모리 요구에 가장 적합한 인스턴스 유형을 선택한 다음 리소스를 효율적으로 사용하고 실행 비용을 절감하는 데 필요한 추론 가속화 양을 별도로 구성 할 수 있습니다.
그러나 일부 추론 워크로드에는 전체 GPU가 필요하거나 지연 시간이 짧습니다. 저렴한 비용으로 이 과제를 해결하려면 전문화 된 전용 추론 칩이 필요합니다.
AWS Inferentia는 저렴한 비용으로 고성능을 제공하도록 설계된 머신 러닝 추론 칩입니다. AWS Inferentia 하드웨어 및 소프트웨어는 광범위한 추론 사용 사례 및 최첨단 신경망을 충족시킵니다.
AWS Inferentia는 ONNX 형식을 사용하는 모델뿐만 아니라 TensorFlow, Apache MXNet 및 PyTorch 딥 러닝 프레임 워크를 지원합니다.
각 AWS Inferentia 칩은 복잡한 모델이 빠른 예측을 할 수 있도록 수백 개의 TOPS (초당 테라 작업)의 추론 처리량을 제공합니다. 더 많은 성능을 위해 여러 AWS Inferentia 칩을 함께 사용하여 수천 개의 TOPS 처리량을 구동 할 수 있습니다. AWS Inferentia는 Amazon SageMaker, Amazon EC2 및 Amazon Elastic Inference와 함께 사용할 수 있습니다. AWS Inferentia 가용성에 대한 알림을 받으려면 여기에서 가입하십시오.
Amazon EC2 G4
우리는 모든 고객 상호 작용이 백엔드의 AI로 구동되는 시대로 나아가고 있습니다. 고객 요구를 충족시키고 초과 달성하려면 AI 기반 제품 및 서비스를 비용 효율적으로 확장 할 수있는 컴퓨팅 플랫폼이 필요합니다.
NVIDIA® Tesla® T4 GPU는 세계에서 가장 앞선 추론 가속기입니다. NVIDIA Turing ™ 텐서 코어로 구동되는 T4는 혁신적인 다중 정밀도 추론 성능을 제공하여 최신 AI의 다양한 애플리케이션을 가속화합니다. T4는 스케일 아웃 서버에 최적화되어 있으며 최첨단 추론을 실시간으로 제공하도록 특수 제작되었습니다.
응답성은 대화식 AI, 추천 시스템 및 시각적 검색과 같은 서비스에 대한 사용자 참여의 핵심입니다. 모델의 정확성과 복잡성이 증가함에 따라 올바른 답변을 제공하려면 현재 훨씬 더 큰 컴퓨팅 기능이 필요합니다. Tesla T4는 지연 시간이 짧은 처리량을 최대 40 배 향상시켜 실시간으로 더 많은 요청을 처리 할 수 있습니다.
새로운 Amazon EC2 G4 인스턴스는 T4 기반 GPU를 패키지하여 AWS 고객에게 다양한 AI 서비스를 비용 효율적으로 배포 할 수있는 다목적 플랫폼을 제공합니다. 고객은 AWS Marketplace를 통해 G4 인스턴스를 NVIDIA CUDA-X AI 라이브러리를 포함한 NVIDIA GPU 가속 소프트웨어와 페어링하여 딥 러닝 추론을 가속화 할 수 있습니다.
새로운 T4 기반 G4 인스턴스를 통해 머신 러닝 추론을 쉽고 비용 효율적으로 만들 수 있습니다.
소프트웨어
AWS Deep Learning AMIs
숙련 된 기계 학습 실무자에게도 딥 러닝을 시작하는 데 시간이 걸리고 번거로울 수 있습니다.
AWS Deep Learning AMI에는 인기 있는 Python 패키지 및 Anaconda 플랫폼 설치 외에도 사전 구성된 CUDA 및 CUDN 드라이버를 통한 최신 NVIDIA GPU 가속화 기능이 포함되어 있습니다.
AWS Deep Learning AMIs는 기계 학습 전문가와 연구원에게 클라우드에서 딥 러닝을 가속화 할 수 있는 인프라와 도구를 모든 규모로 제공합니다. 인기있는 딥 러닝 프레임 워크 및 TensorFlow, PyTorch, Apache MXNet, Chainer, Gluon, Horovod 및 Keras와 같은 인터페이스가 사전 설치된 Amazon EC2 인스턴스를 신속하게 시작하여 정교한 맞춤형 AI 모델을 훈련하고 새로운 알고리즘을 실험 할 수 있습니다.
Deep Learning AMI는 Conda AMI와 Base AMI의 두 가지 버전으로 제공됩니다.
별도의 가상 환경에 사전 설치된 딥 러닝 프레임 워크의 pip 패키지를 원하는 개발자를 위해 Conda 기반 AMI는 Ubuntu, Amazon Linux 및 Windows 2016 버전에서 사용할 수 있습니다. AMI의 환경은 상호 격리 된 독립형 샌드 박스로 작동합니다. 또한 AMI는 Jupyter 노트북에 연결되는 시각적 인터페이스를 제공하므로 Jupyter 노트북에서 바로 한 번의 클릭으로 환경을 전환하거나 원하는 환경에서 노트북을 시작하고 환경을 재구성 할 수 있습니다.
개인 딥러닝 엔진 리포지토리 또는 딥러닝 엔진의 맞춤형 빌드를 설정하기 위한 클린 슬레이트 개발자를 위해 기본 AMI는 Ubuntu 및 Amazon Linux 버전에서 사용할 수 있습니다. 기본 AMI에는 심층 학습을 위한 기본 구성 요소가 미리 설치되어 있습니다. 기본 AMI에는 NVIDIA CUDA 라이브러리, GPU 드라이버 및 시스템 라이브러리가 포함되어 Amazon EC2 인스턴스에서 머신 학습 속도를 높이고 규모를 조정할 수 있습니다. 기본 AMI에는 기본적으로 CUDA 9 환경이 설치되어 있습니다. 그러나 간단한 1줄 명령을 사용하여 CUDA 8 환경으로 전환할 수도 있습니다.
AWS Deep Learning Containers
AWS는 딥 러닝 학습 및 추론을 가속화하기 위해 광범위한 컴퓨팅 옵션을 제공합니다. 고객은 Amazon SageMaker를 사용하여 완전 관리형 서비스를 사용하거나 Deep Learning AMIs를 사용하여 DIY (Do-it-Yourself) 접근 방식을 사용할 수 있습니다.
DIY는 프레임 워크 수준에서 작업하는 연구원 및 응용 기계 학습 실무자에게 인기있는 옵션입니다.
지난 몇 년 동안 Docker 컨테이너를 사용하는 것이 대중화 되었습니다. 이 접근 방식으로 인해 여러 환경에서 일관되게 실행되는 사용자 지정 ML 환경을 배포 할 수 있습니다. Docker 컨테이너 빌드 및 테스트는 어렵고 오류가 발생하기 쉽습니다. 소프트웨어 종속성 및 버전 호환성 문제로 인해 Docker 컨테이너를 빌드하는 데 며칠이 걸립니다. 또한 Docker 컨테이너 이미지를 최적화하여 인스턴스 클러스터 전체에서 머신 러닝 작업을 확장 및 분배 할 수 있는 전문 기술이 필요합니다. 새로운 버전의 소프트웨어 또는 드라이버를 사용할 수 있게 되면 프로세스가 반복됩니다.
AWS는 딥 러닝 컨테이너 (AWS DL Containers)를 통해 고급 ML 실무자를위한 DIY 제품을 확장하고 텐서 플로우 및 Apache MXNet과 같은 프레임 워크로 사전 구성된 딥 러닝을 위한 Docker 컨테이너 이미지를 제공했습니다. AWS는 딥 러닝을 위해 Docker 컨테이너를 구축하고 최적화하는데 관련된 미분화 된 무거운 리프팅을 처리합니다. AWS DL Containers는 Amazon ECS (Amazon Elastic Container Service) 및 Amazon EKS (Amazon Elastic Kubernetes Service)와 긴밀하게 통합 되어 있습니다. 한번의 클릭으로 Amazon ECS 및 Amazon EKS에 AWS DL CONTAINERS를 배포하고 이를 사용하여 여러 프레임 워크에서 머신 러닝 작업을 확장 및 가속화 할 수 있습니다. Amazon ECS 및 Amazon EKS는 가상 머신 클러스터에서 AWS DL CONTAINERS를 배포하고 확장하는 데 필요한 모든 컨테이너 오케스트레이션을 처리합니다. 현재 TensorFlow 및 Apace MXNet에서 AWS DL CONTAINERS를 사용할 수 있습니다.
컨테이너 이미지는 Python 및 2.7 및 3.6 용 CPU와 GPU 모두에서 사용할 수 있으며, 추론 및 학습용 TensorFlow에 대한 분산 학습을 지원하는 Horovod를 지원합니다.
AWS DL CONTAINERS는 AWS Marketplace 또는 Amazon ECS 콘솔에서 사용할 수 있습니다.
TensorFlow Docker 이미지 용 AWS DL Containers 버전 2.0은 Amazon SageMaker, Amazon EC2, Amazon ECS 및 Amazon EKS에서 테스트 되었습니다. AWS의 여러 플랫폼에서 하나의 Docker 이미지를 사용할 수 있습니다.
네트워킹
향상된 네트워킹
향상된 네트워킹은 SR-IOV (Single Root I / O Virtualization)를 사용하여 지원되는 인스턴스 유형에서 고성능 네트워킹 기능을 제공합니다. SR-IOV는 기존 가상화 네트워크 인터페이스와 비교할 때 더 높은 I / O 성능과 CPU 사용률을 제공하는 장치 가상화 방법입니다. 향상된 네트워킹은 더 높은 대역폭, 더 높은 PPS (packet per second) 성능 및 일관된 인스턴스 간 대기 시간을 제공합니다. 딥 러닝에 사용되는 대부분의 인스턴스 유형은 향상된 네트워킹을 위해 ENA (Elastic Network Adapter)를 지원합니다.
ENA는 C5, M5, P3 및 X1 인스턴스와 같은 최신 프로세서와 잘 작동하도록 설계되었습니다. 이러한 프로세서에는 많은 수의 가상 CPU (X1의 경우 128)가 있으므로 네트워크 어댑터와 같은 공유 리소스를 효율적으로 사용하는 것이 중요합니다. 높은 처리량과 뛰어난 PPS (Packet Per Second) 성능을 제공하는 동시에 ENA는 여러 가지 방법으로 호스트 프로세서의 로드를 최소화하고 여러 vCPU에 패킷 처리 워크로드를 보다 효율적으로 분산시킵니다. 이 향상된 성능을 가능하게하는 몇 가지 기능은 다음과 같습니다.
- 체크섬 생성 — ENA는 하드웨어에서 IPv4 헤더 체크섬 생성 및 TCP / UDP 부분 체크섬 생성을 처리합니다.
- 다중 대기열 장치 인터페이스 — ENA는 다중 전송 및 수신 큐를 사용하여 내부 오버 헤드를 줄이고 확장성을 향상시킵니다. 여러 개의 대기열이 있으면 들어오는 패킷과 나가는 패킷을 특정 vCPU에 매핑하는 프로세스가 간소화되고 가속화 됩니다.
- 수신 측 조정 — ENA는 들어오는 패킷을 처리 할 적절한 vCPU로 보낼 수 있습니다. 이 기술은 병목 현상을 줄이고 캐시 효율성을 높입니다.
이러한 모든 기능은 프로세서에서 가능한 많은 워크로드를 유지하고 네트워크 패킷과 이를 생성 또는 처리하는 vCPU간에 짧고 효율적인 경로를 만들도록 설계되었습니다.
배치 그룹
배치 그룹은 Amazon EC2 인스턴스 간의 지연 시간을 줄이기 위한 AWS 솔루션입니다. 대기 시간을 줄이고 처리량을 향상 시키기 위해 동일한 가용 영역에서 실행중인 인스턴스를 최대한 가깝게 배치하는 메커니즘입니다.
Elastic Fabric Adapter
EFA (Elastic Fabric Adapter)는 고객이 AWS에서 대규모 딥 러닝과 같은 높은 수준의 인스턴스 간 통신이 필요한 고성능 컴퓨팅 (HPC) 애플리케이션을 실행할 수 있도록 하는 Amazon EC2 인스턴스 용 네트워크 인터페이스입니다. HPC 응용 프로그램을 확장하는데 중요한 인스턴스간 통신 성능을 향상시키기 위해 맞춤형 운영 체제 바이 패스 기술을 사용합니다. EFA를 통해 MPI (Message Passing Interface)와 같은 널리 사용되는 HPC 기술을 사용하는 HPC 응용 프로그램은 수천 개의 CPU 코어로 확장 할 수 있습니다. EFA는 개방형 표준 libfabric API를 지원하므로 지원되는 MPI 라이브러리를 사용하는 애플리케이션을 거의 또는 전혀 수정하지 않고 AWS로 마이그레이션 할 수 있습니다. EFA는 추가 비용없이 C5n.18xl 및 P3dn.24xl 인스턴스에서 활성화 할 수 있는 옵션 EC2 네트워킹 기능으로 제공됩니다.
Open MPI 3.1.3 이상 또는 NCCL (2.3.8 이상) 및 NCCL 용 OFI 드라이버를 사용할 수 있습니다.
인스턴스는 EFA를 사용하여 VPC 서브넷 내에서 통신 할 수 있으며 보안 그룹에는 보안 그룹 내의 모든 트래픽이 흐름을 허용하는 수신 및 송신 규칙이 있어야 합니다. 각 인스턴스에는 단일 EFA가 있을 수 있으며, 인스턴스가 시작되거나 중지 될 때 연결될 수 있습니다.
Amazon Elastic Inference
Amazon Elastic Inference를 사용하면 저렴한 GPU 기반 가속을 Amazon EC2 및 Amazon SageMaker 인스턴스에 연결하여 딥 러닝 추론 실행 비용을 최대 75 % 줄일 수 있습니다. 현재 Amazon Elastic Inference는 TensorFlow, Apache MXNet 및 ONNX 모델을 지원하며 더 많은 프레임 워크가 제공 될 예정입니다. 다른 딥 러닝 프레임 워크를 사용하려면 ONNX를 사용하여 모델을 내 보낸 다음 모델을 MXNet으로 가져 오십시오. 그런 다음 Amazon Elastic Inference와 함께 모델을 MXNet 모델로 사용할 수 있습니다.
Amazon Elastic Inference는 AWS의 향상된 TensorFlow 버전 또는 Apache MXNet과 함께 사용하도록 설계되었습니다. 이 향상된 버전의 프레임 워크는 Amazon SageMaker Python SDK를 사용할 때 컨테이너에 자동으로 내장되거나 바이너리 파일로 다운로드하여 고유 한 Docker 컨테이너로 가져올 수 있습니다.
일반적으로 모델이 복잡하고 Amazon SageMaker 사전 구축 컨테이너가 지원하지 않는 프레임 워크에 대한 확장이 필요한 경우가 아니면 사용자 지정 컨테이너를 만들 필요가 없습니다.
Amazon Elastic Inference 액셀러레이터는 엔드 포인트의 Amazon EC2 인스턴스와 함께 작동하여 추론 호출을 가속화하는 네트워크 연결 장치입니다. 모델이 엔드 포인트로 배포되면 ML 프레임 워크는 Amazon EC2 인스턴스와 액셀러레이터 리소스의 조합을 사용하여 추론 호출을 실행합니다.
호스팅 된 엔드 포인트에서 Amazon Elastic Inference를 사용하려면 필요에 따라 다음 중 하나를 사용할 수 있습니다.
- Amazon SageMaker Python SDK TensorFlow-TensorFlow를 사용하려는 경우 사용자 지정 컨테이너를 구축 할 필요가 없습니다.
- Amazon SageMaker Python SDK MXNet — MXNet을 사용하려는 경우 사용자 정의 컨테이너를 구축할 필요가 없습니다.
- Python용 Amazon SageMaker SDK(Boto 3) — 사용자 정의 컨테이너를 구축해야 하는 경우입니다.
일반적으로 모델이 복잡하고 Amazon SageMaker 사전 구축 컨테이너가 지원하지 않는 프레임 워크에 대한 확장이 필요한 경우가 아니면 사용자 지정 컨테이너를 만들 필요가 없습니다.
다음과 같은 Amazon Elastic Inference 액셀러레이터 유형을 사용할 수 있습니다. Amazon Elastic Inference 액셀러레이터 유형으로 엔드 포인트 또는 노트북 인스턴스를 구성 할 수 있습니다.
호스팅 모델에 대한 가속기 유형을 선택할 때 다음 요소를 고려하십시오.
- 모델, 입력 텐서 및 배치 크기는 필요한 가속기 메모리 양에 영향을 줍니다. 최소한 훈련 된 모델의 파일 크기만큼의 메모리를 제공하는 가속기 유형으로 시작 하십시오.
- CPU 컴퓨팅 리소스, GPU 기반 가속 및 CPU 메모리에 대한 요구는 딥 러닝 모델마다 다릅니다. 응용 프로그램의 대기 시간 및 처리량 요구 사항에 따라 필요한 컴퓨팅 및 가속 량이 결정됩니다. 다양한 인스턴스 유형 구성과 Amazon Elastic Inference 액셀러레이터 크기를 철저히 테스트하여 애플리케이션의 성능 요구에 가장 적합한 구성을 선택하십시오.
솔루션
Amazon SageMaker Ground Truth for Data Labeling
다른 형태의 기계 학습에 비해지도 학습은 기계 학습 공간을 계속 지배합니다. 모델 학습주기에 더 많은 데이터를 제공하면 머신 러닝 모델 성능이 계속 향상됩니다. 그러나 정확한 레이블로 학습 데이터 세트를 작성하는 것은 어렵고 비용이 많이 드는 작업입니다.
Amazon SageMaker Ground Truth는 데이터를 수집하고 레이블을 지정할 때 기계 학습 프로세스의 첫 단계에서 도움이 됩니다. Amazon SageMaker Ground Truth는 능동적 학습 기반의 자동 데이터 레이블링 기술과 Mechanical Turk를 사용하여 크라우드 소싱 된 데이터 레이블링 프로세스를 결합합니다. 능동 학습을 사용하여 학습해야 하는 속성을 식별 한 다음 크라우드 소싱 인력을 사용하여 레이블을 수행 할 수 있습니다. 능동 학습은 모델 학습에 필요한 레이블이 지정된 데이터의 양을 크게 줄일 수 있는 방법입니다. 전문가를 위한 라벨링 작업의 우선 순위를 지정하여 이를 수행합니다.
능동적 학습 모델은 레이블이 없는 데이터를 보고 신뢰도에 따라 순위가 정해지는 답변을 계산합니다. 다음으로, 모델은 가장 신뢰도가 낮은 점수를 레이블이 지정된 데이터와 비교합니다. 마지막으로, 모델이 동일한 데이터를 다시 볼 경우 정답을 계산할 가능성이 높아지도록 자체 조정됩니다.
Amazon SageMaker Ground Truth는 적극적인 학습 기능과 Mechanical Turk workforce에 대한 액세스 외에도 레이블 관리 및 워크 플로우 관리에 도움을 줍니다. 선택적으로 레이블 작업에 프라이빗 및 하이브리드 workforce를 설정합니다.
Amazon SageMaker Neo for Model Optimization
훈련 된 모델이 있으면 클라우드, 엣지 또는 모바일 장치에 배포 할 수 있습니다. 추론 요청은 클라이언트 HTTP 스택을 통해 네트워크를 통해 웹 서버 및 응용 프로그램 서버 스택을 통해 최종적으로 추론 엔드 포인트로 전달해야 합니다. 위의 모든 계층에서 발생하는 대기 시간을 고려하면 추론을 계산하고 이를 사용자 경험에 영향을 주기 전에 클라이언트에 다시 제공하는 데 약간의 시간이 남아 있습니다. 따라서 추론 끝점에서 최대 성능을 얻는 것이 항상 바람직합니다.
추론 endpoint의 성능을 향상시키는 것은 복잡한 문제입니다. 먼저, 모델의 계산 그래프는 계산 집약적인 작업입니다. 둘째, 추론을 위해 머신 러닝 모델을 최적화 하려면 모델이 배포되는 특정 하드웨어 및 소프트웨어 구성을 조정해야 합니다. 최적의 성능을 위해서는 하드웨어 아키텍처, 명령어 세트, 메모리 액세스 패턴 및 입력 데이터 형태를 알아야합니다.
기존 소프트웨어의 경우 컴파일러와 프로파일러가 튜닝을 처리합니다. 심층 학습 모델 배포의 경우, 수동 시행착오 프로세스가 됩니다.
Amazon SageMaker Neo는 ARM, Intel 및 NVIDIA 프로세서에 배포 할 수 있도록 TensorFlow, Apache MXNet, PyTorch, ONNX 및 XGBoost 모델을 자동으로 최적화하여 특정 소프트웨어 및 하드웨어 구성에 맞게 모델을 조정하는 데 필요한 시간과 노력을 제거 할 수 있습니다. 지원되는 딥 러닝 프레임 워크, 모델 형식 및 칩셋 목록은 앞으로도 계속 증가 할 것입니다.
Amazon SageMaker Neo는 컴파일러와 런타임으로 구성됩니다. 먼저 Amazon SageMaker Neo API는 모델을 읽고 표준 형식으로 구문 분석합니다. 프레임 워크 별 기능 및 조작을 프레임 워크에 구애 받지 않는 중간 표현으로 변환합니다. 다음으로 모델 그래프에서 일련의 최적화를 수행합니다. 그런 다음 최적화 된 작업을 위해 이진 코드를 생성합니다. Amazon SageMaker Neo는 또한 컴파일 된 모델을 로드 및 실행하는 데 사용되는 각 대상 플랫폼 및 소스 프레임 워크에 대해 린 (lean) 런타임을 제공합니다. 마지막으로 Amazon SageMaker Neo는 Apache 소프트웨어 라이센스에 따라 Neo-AI 프로젝트처럼 오픈 소스 코드로도 제공되므로 다양한 디바이스 및 애플리케이션에 맞게 소프트웨어를 사용자 정의 할 수 있습니다.
AWS는 IT 인프라 비용을 절감하고 기업의 핵심가치에 더욱 집중할 수 있도록 합니다.
AWS에 대한 자세한 문의사항은 여기를 눌러 주세요.
빌드업웍스는 AWS 컨설팅 파트너로 고객 비즈니스를 최우선으로 하며 고객의 클라우드의 성공적인 시작과 운영을 지원합니다.