딥러닝 서비스를 만드는 스타트업 개발자, 개인 개발자로서 가장 신경을 쓰는 부분은 딥러닝 모델을 훈련시키고 러닝하는 과정을 효율적으로 만드는 것입니다. 스타트업에서 Devops 개발자로 일한 경험을 살려 모두가 알아두면 좋을 AWS가 제공하는 GPU 인스턴스를 활용하는 방법과 에이전트 기반 지표 수집, 그리고 스팟 인스턴스를 사용하여 비용을 줄이면서 안정된 서비스를 운영하는 방법 등을 공유합니다.
클라우드
어떤 것을 할수 있을까요?
• 개발 환경 설정
• 서비스 환경 설정
• 서비스를 위한 GPU 비용 감소
• 학습 알림
18.
개발 환경 설정
•개발자가 개발에만 집중할 수 있는 환경 조성
• 딥러닝 개발자
- 시간 비싸요
- 쓰는 머신도 비싸요
• 반복적인 부분을 제거하는데 집중
19.
개발 환경 설정
1.AWS Deep Learning AMI 선택
2. EC2 인스턴스 생성
3. Jupyter Notebook 구동
4. SSH 터널링 설정
5. Jupyter Notebook 접속
6. 문제 생기면, 3번부터 반복
7. 필요한 모델 예제 코드 복사
8. 데이터를 넣어 보델 훈련 진행
9. 기 샘플에 훈련된 모델 활용
Amazon EC2 + Deep Learning AMI
일반적으로 클라우드에서
딥러닝 환경을 조성하는 방법
20.
이 부분을 자동화합니다
와함께
개발 환경 설정
1. AWS Deep Learning AMI 선택
2. EC2 인스턴스 생성
3. Jupyter Notebook 구동
4. SSH 터널링 설정
5. Jupyter Notebook 접속
6. 문제 생기면, 3번부터 반복
7. 필요한 모델 예제 코드 복사
8. 데이터를 넣어 보델 훈련 진행
9. 기 샘플에 훈련된 모델 활용
Amazon EC2 + Deep Learning AMI
Nvidia-Docker
Containerizing GPU applicationsprovides
several benefits, among them:
- Ease of deployment
- Isolation of individual devices
- Run across heterogeneous driver/toolkit
environments
- Requires only the NVIDIA driver to be installed
on the host
- Facilitate collaboration: reproducible builds,
reproducible performance, reproducible
results.
23.
개발 환경 설정
1.Dockerfile 작성
• 필요한 Dependency가 설치되어 있는 기본 도커 이미지 구성
- devel/prod에서 공통적으로 사용
- Cloud/IDC에서 공통적으로 사용
• OS Dependency 설치
• Deep Learning packages 설치
• 그 외 필요한 설정
개발 환경 설정
1.Dockerfile 작성
• nvidia/cuda
• CUDA and cuDNN images from gitlab.com/nvidia/cuda
• Ubuntu, Centos 기반 cuda 패키지 지원 (2018.12기준 버젼 ~10)
26.
개발 환경 설정
1.Dockerfile 작성
• 일반적으로 OpenCV, TensorRT 등 필요한 패키지 설치
27.
개발 환경 설정
1.Dockerfile 작성
nvidia/cuda
install DeepLearning
packages
install pip packages
1st layer
2nd layer
3rd layer • 3rd layer까지 Dockerfile
안에 작성하는 것도 가능
• 하지만 Ansible, Packer
같은 툴로 의존성 주입을
해서 사용하는 것이 이점이
큽니다
28.
개발 환경 설정
2.AMI 생성 • Packer is a tool for building
identical machine images for
multiple platforms from a single
source configuration.
• Ansible: Simple, agentless IT
automation that anyone can use
• Ansible로 이미지 위에 코드를 설치
하고, Packer로 이를 AWS AMI
(Amazon Machine Image)에 업로
드합니다
• Packer, Ansible 없이도 AMI는 생
성할 수 있습니다
29.
개발 환경 설정
2.AMI 생성
• AWS AMI?
• Amazon Machine Image
• 필요한 소프트웨어가 이미 구성
되어 있는 템플릿 (예: OS, App
Server, App)
• AMI에서 EC2 인스턴스를 바로
시작할 수 있습니다.
서비스 환경 설정
ServiceAuto Scailing Group
ASG에 대한 GPU Utilization CloudWatch metric 수집
GPU util metric에 대한 CloudWatch Alarm 생성
CloudWatch Alarm에 대한 ASG Scailing Policy 생성
(예: GPU Util > 60% then scale 1 out)
42.
GPU 비용 최적화
•소중한 지갑을 지키기 위한 최선
GPU
Instance
온디맨드 요금 스팟 요금
p2.xlarge $1.465 $0.4395
p2.8xlarge $11.72 $11.72
p2.16xlarge $23.44 $23.44
p3.2xlarge $4.981 $1.4943
p3.8xlarge $19.924 $5.9772
p3.16xlarge $39.848 $39.848
시간당 온디맨드 대비 스팟 가격 2018.10.10 2pm
43.
GPU 비용 최적화
•스팟 인스턴스란?
• 온디맨드 가격보다 저렴한 비용으로 사용할 수 있는 미사용 EC2
인스턴스
• 최대 90% 할인된 금액으로 이용
• 시간당 가격에 대한 입찰 방식으로 (1) EC2 가용 용량이 부족하거
나, (2) 스팟 가격이 최고 가격을 초과하면 중단
GPU 비용 최적화
•은근히 자주 발생하는 상
태 코드
- capacity-not-available
- system-error
- instance-terminated-
no-capacity
47.
GPU 비용 최적화
•은근히 자주 발생하는 상태
코드
- capacity-not-available
- system-error
- instance-terminated-no-
capacity
• 스팟 요청부터 실패 가능
• (시작 후) 언제든 중단 가능
• (스팟 가격)=(온디맨드 가격)
이더라도 위험성 존재