딥 러닝 모델 학습

Amazon EC2에서의 AWS Deep Learning Containers 설명서 사용

AWS Deep Learning Containers(DL Containers)는 딥 러닝 프레임워크가 사전에 설치된 Docker 이미지로서, 처음부터 환경을 구축하고 최적화하는 복잡한 프로세스를 건너뜀으로써 사용자 지정 기계 학습 환경을 신속하게 배포할 수 있도록 지원합니다.

개발자 및 데이터 과학자는 AWS DL Containers를 사용하여 Amazon EKS(Amazon Elastic Container Service for Kubernetes), 자체 관리형 Kubernetes, Amazon ECS(Amazon Elastic Container Service) 및 Amazon EC2에 배포된 컨테이너식 애플리케이션에 기계 학습을 빠르게 추가할 수 있습니다.

이 자습서에서는 AWS Deep Learning Containers를 사용하여 Amazon EC2 인스턴스에서 TensorFlow 기계 학습 모델을 학습합니다.

자습서 소개
시간 10분                                           
요금 1 USD 미만
사용 사례 Machine Learning
제품 AWS Deep Learning Containers, Amazon EC2, Amazon ECR
대상 개발자, 데이터 과학자
레벨 초보자
최종 업데이트 날짜 2019년 3월 27일

1. AWS에 가입하기

이 자습서를 따르려면 AWS 계정이 필요합니다. 이 자습서에서는 AWS Deep Learning Containers를 사용하는 데 대한 추가 비용은 없습니다. 이 자습서에서 사용한 Amazon c5.large 인스턴스에 대해서만 요금을 지불하면 됩니다. 이 요금은 자습서 끝에서 종료 단계를 수행한 후 지불하게 되며 1 USD 미만입니다. 

2. Amazon ECR에 대한 액세스 권한 추가

AWS Deep Learning Container 이미지는 개발자가 Docker 컨테이너 이미지를 손쉽게 저장, 관리 및 배포할 수 있게 해주는 완전관리형 Docker 컨테이너 레지스트리인 Amazon Elastic Container Registry(ECR)에 호스팅됩니다. 이 단계에서는 기존 IAM 사용자에게 Amazon ECR에 액세스할 수 있는 권한을 부여합니다(AmazonECS_FullAccess 정책 사용).

기존 IAM 사용자가 없는 경우 자세한 내용은 IAM 설명서를 참조하십시오.

a. IAM 콘솔로 이동

AWS Management Console을 엽니다. 이 단계별 안내서는 계속 열어 놓을 수 있습니다. 이 화면이 로드되면 먼저 사용자 이름 및 암호를 입력하여 시작합니다. 그런 다음 검색 창에 IAM을 입력하고 IAM을 선택하여 서비스 콘솔을 엽니다.

AWS Management Console

b. 사용자 선택

왼쪽 탐색 창에서 사용자를 선택합니다.

3b-new

c. 권한 추가

이제 생성한 새 IAM 사용자 또는 기존 IAM 사용자에게 권한을 추가합니다. IAM 사용자 요약 페이지에서 권한 추가를 선택합니다.

3c

d. ECS 전체 액세스 정책 추가

기존 정책 직접 연결을 선택하고 ECS_FullAccess를 검색합니다. Amazon_FullAccess 정책을 선택하고 검토권한 추가를 클릭합니다.

3d-new

e. 인라인 정책 추가

IAM 사용자 요약 페이지에서 인라인 정책 추가를 선택합니다.

3e-new

f. JSON 정책 붙여넣기

JSON 탭을 선택하고 다음 정책을 붙여넣습니다.

{
       "Version": "2012-10-17",
       "Statement": [
              {
                     "Action": "ecr:*",
                     "Effect": "Allow",
                     "Resource": "*"
              }
       ]
}

이 정책을 'ECR'로 저장하고 정책 생성을 선택합니다.

 

3f-new

3. AWS Deep Learning 기본 AMI 인스턴스 시작

이 자습서에서는 Nvidia 드라이버, Docker 및 nvidia-docker와 같은 필수 종속 항목이 사전 패키지로 제공되는 AWS Deep Learning 기본 AMI(Amazon Machine Images)에서 AWS Deep Learning Containers를 사용합니다. 이러한 패키지를 사용하여 모든 AMI에서 Deep Learning Containers를 실행할 수 있습니다.

a. EC2 콘솔로 이동

AWS Management Console 홈 화면으로 돌아가서 검색 창에 EC2를 입력하고 EC2를 선택하여 서비스 콘솔을 엽니다.

step_2

b. Amazon EC2 인스턴스 시작

Amazon EC2 콘솔로 다시 이동하여 인스턴스 시작 버튼을 선택합니다.

step_4a-new

c. AWS Deep Learning 기본 AMI를 선택합니다.

왼쪽에서 AWS Marketplace 탭을 선택한 후 ‘deep learning ubuntu’를 검색합니다. Deep Learning 기본 AMI(Ubuntu)를 선택합니다. Deep Learning 기본 AMI(Amazon Linux)를 선택할 수도 있습니다.

step_4b-new

d. 인스턴스 유형을 선택합니다.

Amazon EC2 인스턴스 유형을 선택합니다. Amazon Elastic Compute Cloud(EC2)는 클라우드에서 가상 머신을 만들고 실행하는 데 사용하는 Amazon Web Services입니다. AWS에서는 이러한 가상 머신을 '인스턴스'라고 합니다.

이 자습서에서는 c5.large 인스턴스를 사용하지만 GPU 기반 P3 인스턴스를 비롯한 추가 인스턴스 유형을 선택할 수 있습니다.

검토 후 시작을 선택합니다.

step_4c-new

e. 인스턴스를 시작합니다.

인스턴스 세부 정보를 검토하고 시작을 선택합니다.

step_4d-new

f. 새로운 프라이빗 키 파일 생성

다음 화면에서 기존 키 페어를 선택하거나 새 키 페어를 만들라는 메시지가 표시됩니다. 키 페어는 SSH를 통해 인스턴스에 안전하게 액세스하는 데 사용됩니다. AWS에서는 키 페어의 퍼블릭 부분을 저장하며 이는 집의 잠금장치와 같습니다. 사용자는 키 페어의 프라이빗 부분을 다운로드하여 사용할 수 있으며 이는 집의 열쇠와 같습니다.

새 키 페어 생성을 선택하고 이름을 지정합니다. 그런 다음 키 페어 다운로드를 선택하고 안전한 위치에 키를 저장합니다. 키를 잃어버리면 인스턴스에 액세스할 수 없습니다. 다른 누군가가 키에 액세스하게 되면, 그 사람들이 사용자의 인스턴스에 액세스할 수 있습니다.

이전에 생성한 프라이빗 키 파일로 여전히 액세스할 수 있는 경우 기존 키 페어 선택을 선택하여 기존 프라이빗 키를 사용할 수 있습니다.

step_4e-new

g. 인스턴스 세부 정보 보기

콘솔에서 새로 생성한 Amazon EC2의 세부 정보를 보려면 인스턴스 ID를 선택합니다. 

step_4f-new

4. 인스턴스에 연결

이 단계에서는 SSH를 사용하여 새로 시작한 인스턴스에 연결합니다. 아래 지침에서는 Mac / Linux 환경을 사용합니다. Windows를 사용하는 경우에는 이 자습서의 4단계를 수행합니다.

a. 인스턴스의 퍼블릭 DNS 찾기 및 복사

설명 탭에서 Amazon EC2 인스턴스의 퍼블릭 DNS(IPv4)를 복사합니다.

step_5a-new

b. 명령줄 터미널 열기

터미널에서 다음 명령을 사용하여 보안 키가 있는 디렉터리를 변경한 후 SSH를 사용하여 인스턴스에 연결합니다.

cd /Users/<your_username>/Downloads/

chmod 0400 <your .pem filename>

ssh -L localhost:8888:localhost:8888 -i <your .pem filename> ubuntu@<your instance DNS>
step_5b-new

5. Amazon ECR에 로그인

AWS Deep Learning Container 이미지는 개발자가 Docker 컨테이너 이미지를 손쉽게 저장, 관리 및 배포할 수 있게 해주는 완전관리형 Docker 컨테이너 레지스트리인 Amazon Elastic Container Registry(ECR)에 호스팅됩니다. 이 단계에서는 Amazon ECR에 로그인하여 액세스 권한을 확인합니다.

a. AWS 자격 증명으로 EC2 인스턴스 구성

AWS 액세스 키 ID 및 보안 액세스 키를 제공해야 합니다. 이 정보가 없는 경우 여기에서 액세스 키 ID 및 보안 액세스 키를 생성할 수 있습니다.

step_6a-new

b. Amazon ECR에 로그인

아래 명령을 사용하여 Amazon ECR에 로그인합니다.

$(aws ecr get-login --region us-east-1 --no-include-email --registry-ids 763104351884)

참고: 명령에 '$'와 괄호를 포함해야 합니다. 이 단계가 마무리되면 '로그인 성공'이 표시됩니다.

 

step_6b-new

6. Deep Learning Containers를 사용한 TensorFlow 교육 실행

이 단계에서는 Python 3.6을 사용하는 CPU 인스턴스에 대한 TensorFlow 교육에 AWS Deep Learning Container 이미지를 사용합니다.

a. AWS Deep Learning Containers 실행

이제 아래 명령을 사용하여 EC2 인스턴스에서 AWS Deep Learning Container 이미지를 실행합니다. Deep Learning Container 이미지가 로컬에 없으면 이 명령을 통해 자동으로 가져올 수 있습니다.

docker run -it 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:1.13-cpu-py36-ubuntu16.04

참고:이 단계는 이미지 크기에 따라 몇 분이 걸릴 수 있습니다. GPU 인스턴스를 사용하는 경우 'docker' 대신 'nvidia-docker'를 사용합니다. 이 단계가 성공적으로 완료되면 컨테이너에 대한 bash 프롬프트 상태가 됩니다.

 

7a-new

b. 모델 예를 통한 교육

모델을 교육하기 위한 Python 스크립트 예가 포함된 Keras 리포지토리가 복제됩니다.

git clone https://github.com/fchollet/keras.git
7b-new

c. 교육 시작

다음 명령을 사용하여 정식 MNIST CNN 모델 교육을 시작합니다.

python keras/examples/mnist_cnn.py

AWS Deep Learning Container를 사용하여 교육을 시작했습니다.

 

7c-new

7. 리소스 종료

이 단계에서는 이 자습서에서 생성한 Amazon EC2 인스턴스를 종료합니다.

중요: 현재 사용되지 않는 리소스를 종료하여 비용을 절감하는 것이 좋습니다. 리소스를 종료하지 않으면 계정에 요금이 청구될 수 있습니다.

a. 실행 중인 인스턴스를 선택합니다.

Amazon EC2 콘솔에서 인스턴스 실행을 선택합니다.

 

8a-new

b. EC2 인스턴스 종료

생성한 EC2 인스턴스를 선택하고 작업 > 인스턴스 상태 > 종료를 선택합니다.

8b-new

c. 종료 확인

종료 확인 메시지가 표시됩니다. 예, 종료합니다.를 선택합니다.

참고: 이 프로세스는 완료까지 몇 초 정도 걸릴 수 있습니다. 인스턴스가 종료되면, EC2 콘솔에서 인스턴스 상태가 종료됨으로 변경됩니다.

 

8c-new

축하합니다!

AWS Deep Learning Containers를 사용하여 TensorFlow의 MNIST CNN 모델을 성공적으로 학습했습니다.

Amazon EC2, Amazon ECS, Amazon EKS, Kubernetes의 CPU 및 GPU 리소스에 대한 교육 및 추론에 AWS DL 컨테이너를 사용할 수 있습니다.

AWS의 성능 및 규모에 맞게 최적화된 안정적인 딥 러닝 이미지를 사용하여 사용자 정의 딥 러닝 환경을 구축하십시오.

이 자습서가 유용했습니까?

감사합니다.
좋아하는 사항을 알려주십시오.
실망을 드려 죄송합니다.
오래되었거나 혼란스럽거나 부정확한 사항이 있습니까? 피드백을 제공하여 이 자습서를 개선할 수 있도록 도와주십시오.