모두의 클라우드 딥러닝
손은주 @EJSohn
발표자 소개
• 졸업을 간절히 바라는 대학생 

• 스타트업에서 Devops 개발자로 일
했어요

• 효율적으로 일하는 것을 도와주는 기
술들을 사랑합니다.

• 사실 이것저것 다 해보는 것도 좋아
합니다.
EJSohn
모두의 클라우드 딥러닝모두의 클라우드 딥러닝
모두의 클라우드 딥러닝모두의 클라우드 딥러닝
직장인 개발자
개인 개발자
학생 개발자
모두의 클라우드 딥러닝모두의 클라우드 딥러닝
Amazon Web Service,
Google Cloud Platform,
그 외의 서비스..
모두의 클라우드 딥러닝모두의 클라우드 딥러닝
CNN, RNN, GAN,
GPU, tensorflow, cuda,
keras, Deep Reinforcement
Learning..
GPU 머신은 어떻게 구하지? 비싸지 않은가? 전기세는?

수학이 많이 필요하다고 하던데 ..

어디서부터 어떻게 시작해야해?
– Eunju Amy Sohn
“필요한 것은 모두 갖추었다.”
모두의
• 직장인, 개인, 학생 개발자?

• 집중하는 부분에 차이가 있습니다.

• 하지만 공통적으로
모두의
• 직장인, 개인, 학생 개발자?

• 집중하는 부분에 차이가 있습니다.

• 하지만 공통적으로

- 모델을 만들고

- 학습시킵니다.
(학습과 테스트와 수정의 반복 그리고 반복..)
모두의
• 직장인, 개인, 학생 개발자?

• 집중하는 부분에 차이가 있습니다.

• 하지만 공통적으로

- 모델을 만들고

- 학습시킵니다.
(학습과 테스트와 수정의 반복 그리고 반복..)
이 과정을 효율적으로 만든다면?
모두의
효율 = 시간적 효율,
그리고 이에 따른 비용 감소
모두의
효율 = 모두의 행복 :)
(직장인, 개인, 학생)
클라우드
어떤 것을 할 수 있을까요?

• 개발 환경 설정

• 서비스 환경 설정

• 서비스를 위한 GPU 비용 감소

• 학습 알림
개발 환경 설정
• 개발자가 개발에만 집중할 수 있는 환경 조성

• 딥러닝 개발자

- 시간 비싸요

- 쓰는 머신도 비싸요

• 반복적인 부분을 제거하는데 집중
개발 환경 설정
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
일반적으로 클라우드에서
딥러닝 환경을 조성하는 방법
이 부분을 자동화합니다
와 함께
개발 환경 설정
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 applications provides
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.
개발 환경 설정
1. Dockerfile 작성
• 필요한 Dependency가 설치되어 있는 기본 도커 이미지 구성

- devel/prod에서 공통적으로 사용

- Cloud/IDC에서 공통적으로 사용

• OS Dependency 설치

• Deep Learning packages 설치

• 그 외 필요한 설정
개발 환경 설정
1. Dockerfile 작성
개발 환경 설정
1. Dockerfile 작성
• nvidia/cuda

• CUDA and cuDNN images from gitlab.com/nvidia/cuda

• Ubuntu, Centos 기반 cuda 패키지 지원 (2018.12기준 버젼 ~10)
개발 환경 설정
1. Dockerfile 작성
• 일반적으로 OpenCV, TensorRT 등 필요한 패키지 설치
개발 환경 설정
1. Dockerfile 작성
nvidia/cuda
install DeepLearning
packages
install pip packages
1st layer
2nd layer
3rd layer • 3rd layer까지 Dockerfile
안에 작성하는 것도 가능

• 하지만 Ansible, Packer
같은 툴로 의존성 주입을
해서 사용하는 것이 이점이
큽니다
개발 환경 설정
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는 생
성할 수 있습니다
개발 환경 설정
2. AMI 생성
• AWS AMI?

• Amazon Machine Image

• 필요한 소프트웨어가 이미 구성
되어 있는 템플릿 (예: OS, App
Server, App)

• AMI에서 EC2 인스턴스를 바로
시작할 수 있습니다.
개발 환경 설정
3. 사용
개발 환경 설정
3. 사용
• 원하는 인스턴스 선택

• 인스턴스가 시작되면, 중지한 후 scale-up/scale-down 가능
개발 환경 설정
2. AMI 생성
개발 환경 설정
2. AMI 생성
https://github.com/awslabs/ami-builder-packer
데모
개발 환경 설정
3. 사용
개발
시작 종료
자동화를 통한 프로세스 단순화를 얻었습니다
서비스 환경 설정
서비스 환경 설정
• 트래픽에 따른 적절한 수의 인스턴스를 제공

• AWS EC2에서 GPU Utilization 수집 및 CloudWatch Metric
으로 전송

• GPU Utilization을 기준으로 한 Auto Scailing
서비스 환경 설정
• nvidia-smi

• agent에서 수집하는 데이터
서비스 환경 설정
• Agent python code ( NVML API 사용 )

• 주기적으로 수집한 데이터를 CloudWatch에 업로드
서비스 환경 설정
• 이 지표를 기준으로 GPU 그룹을 스케일링합니다
서비스 환경 설정
Service Auto Scailing Group

ASG에 대한 GPU Utilization CloudWatch metric 수집

GPU util metric에 대한 CloudWatch Alarm 생성

CloudWatch Alarm에 대한 ASG Scailing Policy 생성

(예: GPU Util > 60% then scale 1 out)
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
GPU 비용 최적화
• 스팟 인스턴스란?

• 온디맨드 가격보다 저렴한 비용으로 사용할 수 있는 미사용 EC2
인스턴스

• 최대 90% 할인된 금액으로 이용

• 시간당 가격에 대한 입찰 방식으로 (1) EC2 가용 용량이 부족하거
나, (2) 스팟 가격이 최고 가격을 초과하면 중단
GPU 비용 최적화
Spot Request 보내기
GPU 비용 최적화
일반적으로 인식되는 Spot 작동 원리
GPU 비용 최적화
• 은근히 자주 발생하는 상
태 코드

- capacity-not-available

- system-error

- instance-terminated-
no-capacity
GPU 비용 최적화
• 은근히 자주 발생하는 상태
코드

- capacity-not-available

- system-error

- instance-terminated-no-
capacity

• 스팟 요청부터 실패 가능

• (시작 후) 언제든 중단 가능

• (스팟 가격)=(온디맨드 가격)
이더라도 위험성 존재
GPU 비용 최적화
GPU 비용 최적화
…
GPU 비용 최적화스팟이 성공적으로 

시작되었을 경우

(성공한 스팟 요청)

만큼의 on-demand 

인스턴스를 종료
스팟이 요청에 실패하거나 

인스턴스의 중단 알람을 받을 경우,

(원하는 스팟 개수 - 

현재 정상 실행중인 스팟 개수)

만큼의 on-demand 

인스턴스를 시작
GPU 비용 최적화
• 사용하는 주요 인스턴스 타입 할인율에 따라 크고 작은 비용 절감이
이루어짐

• GPU 사용 시간이 많을 수록 큰 비용 절감

• 1/5 ~ 1/10
학습 알림
• 언제 끝날지 모르는 Training.. 

• 기다리기에는 밤이 깊었고 그냥 두기에는 과금이 두려운 상황일 때

• 간단한 Lambda 콜 하나로 해방될 수 있습니다
딥러닝
딥러닝
• 접근성이 높아진 딥러닝 학습

• 인터넷 강의 (Udacity, Coursera, Udemy, etc..)

• Google

• 대학, 대학원 강의

• 관련 서적
딥러닝
• “모두의 딥러닝”

• 시각장애인 안내하는 ‘AI’…고2가 이틀만에 만들었다 (https://news.joins.com/
article/22957572)

• ‘아-‘하면 4초만에 파킨슨병 진단해요 (https://www.bloter.net/archives/320524)

• 식물병 진단하는 인공지능 앱 만든 여고생 개발자 (https://smartaedi.tistory.com/
354?fbclid=IwAR131LoJvmOeVmssFKiBJdUuz49INTAUsosWi8cM71ntLzfd0FPpjXNFOZc)
딥러닝
• 그럼에도 불구하고..

• 수학, NN 기반지식의 풍부한 이해 필요

• 무거운 엉덩이와 높은 인내심, 직관이 필요

• 앞으로의 발전이 기대되는 영역
감사 합니 다 :)
Q&A

손은주 @EJSohn

모두의 클라우드 딥러닝

  • 1.
  • 2.
    발표자 소개 • 졸업을간절히 바라는 대학생 • 스타트업에서 Devops 개발자로 일 했어요 • 효율적으로 일하는 것을 도와주는 기 술들을 사랑합니다. • 사실 이것저것 다 해보는 것도 좋아 합니다. EJSohn
  • 3.
  • 4.
    모두의 클라우드 딥러닝모두의클라우드 딥러닝 직장인 개발자 개인 개발자 학생 개발자
  • 5.
    모두의 클라우드 딥러닝모두의클라우드 딥러닝 Amazon Web Service, Google Cloud Platform, 그 외의 서비스..
  • 6.
    모두의 클라우드 딥러닝모두의클라우드 딥러닝 CNN, RNN, GAN, GPU, tensorflow, cuda, keras, Deep Reinforcement Learning..
  • 9.
    GPU 머신은 어떻게구하지? 비싸지 않은가? 전기세는? 수학이 많이 필요하다고 하던데 .. 어디서부터 어떻게 시작해야해?
  • 11.
    – Eunju AmySohn “필요한 것은 모두 갖추었다.”
  • 12.
    모두의 • 직장인, 개인,학생 개발자? • 집중하는 부분에 차이가 있습니다. • 하지만 공통적으로
  • 13.
    모두의 • 직장인, 개인,학생 개발자? • 집중하는 부분에 차이가 있습니다. • 하지만 공통적으로 - 모델을 만들고 - 학습시킵니다. (학습과 테스트와 수정의 반복 그리고 반복..)
  • 14.
    모두의 • 직장인, 개인,학생 개발자? • 집중하는 부분에 차이가 있습니다. • 하지만 공통적으로 - 모델을 만들고 - 학습시킵니다. (학습과 테스트와 수정의 반복 그리고 반복..) 이 과정을 효율적으로 만든다면?
  • 15.
    모두의 효율 = 시간적효율, 그리고 이에 따른 비용 감소
  • 16.
    모두의 효율 = 모두의행복 :) (직장인, 개인, 학생)
  • 17.
    클라우드 어떤 것을 할수 있을까요? • 개발 환경 설정 • 서비스 환경 설정 • 서비스를 위한 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
  • 21.
  • 22.
    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 설치 • 그 외 필요한 설정
  • 24.
    개발 환경 설정 1.Dockerfile 작성
  • 25.
    개발 환경 설정 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 인스턴스를 바로 시작할 수 있습니다.
  • 30.
  • 31.
    개발 환경 설정 3.사용 • 원하는 인스턴스 선택 • 인스턴스가 시작되면, 중지한 후 scale-up/scale-down 가능
  • 32.
  • 33.
    개발 환경 설정 2.AMI 생성 https://github.com/awslabs/ami-builder-packer
  • 34.
  • 35.
    개발 환경 설정 3.사용 개발 시작 종료 자동화를 통한 프로세스 단순화를 얻었습니다
  • 36.
  • 37.
    서비스 환경 설정 •트래픽에 따른 적절한 수의 인스턴스를 제공 • AWS EC2에서 GPU Utilization 수집 및 CloudWatch Metric 으로 전송 • GPU Utilization을 기준으로 한 Auto Scailing
  • 38.
    서비스 환경 설정 •nvidia-smi • agent에서 수집하는 데이터
  • 39.
    서비스 환경 설정 •Agent python code ( NVML API 사용 ) • 주기적으로 수집한 데이터를 CloudWatch에 업로드
  • 40.
    서비스 환경 설정 •이 지표를 기준으로 GPU 그룹을 스케일링합니다
  • 41.
    서비스 환경 설정 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) 스팟 가격이 최고 가격을 초과하면 중단
  • 44.
    GPU 비용 최적화 SpotRequest 보내기
  • 45.
    GPU 비용 최적화 일반적으로인식되는 Spot 작동 원리
  • 46.
    GPU 비용 최적화 •은근히 자주 발생하는 상 태 코드 - capacity-not-available - system-error - instance-terminated- no-capacity
  • 47.
    GPU 비용 최적화 •은근히 자주 발생하는 상태 코드 - capacity-not-available - system-error - instance-terminated-no- capacity • 스팟 요청부터 실패 가능 • (시작 후) 언제든 중단 가능 • (스팟 가격)=(온디맨드 가격) 이더라도 위험성 존재
  • 48.
  • 49.
  • 50.
    GPU 비용 최적화스팟이성공적으로 시작되었을 경우 (성공한 스팟 요청) 만큼의 on-demand 인스턴스를 종료 스팟이 요청에 실패하거나 인스턴스의 중단 알람을 받을 경우, (원하는 스팟 개수 - 현재 정상 실행중인 스팟 개수) 만큼의 on-demand 인스턴스를 시작
  • 51.
    GPU 비용 최적화 •사용하는 주요 인스턴스 타입 할인율에 따라 크고 작은 비용 절감이 이루어짐 • GPU 사용 시간이 많을 수록 큰 비용 절감 • 1/5 ~ 1/10
  • 52.
    학습 알림 • 언제끝날지 모르는 Training.. • 기다리기에는 밤이 깊었고 그냥 두기에는 과금이 두려운 상황일 때 • 간단한 Lambda 콜 하나로 해방될 수 있습니다
  • 53.
  • 54.
    딥러닝 • 접근성이 높아진딥러닝 학습 • 인터넷 강의 (Udacity, Coursera, Udemy, etc..) • Google • 대학, 대학원 강의 • 관련 서적
  • 55.
    딥러닝 • “모두의 딥러닝” •시각장애인 안내하는 ‘AI’…고2가 이틀만에 만들었다 (https://news.joins.com/ article/22957572) • ‘아-‘하면 4초만에 파킨슨병 진단해요 (https://www.bloter.net/archives/320524) • 식물병 진단하는 인공지능 앱 만든 여고생 개발자 (https://smartaedi.tistory.com/ 354?fbclid=IwAR131LoJvmOeVmssFKiBJdUuz49INTAUsosWi8cM71ntLzfd0FPpjXNFOZc)
  • 56.
    딥러닝 • 그럼에도 불구하고.. •수학, NN 기반지식의 풍부한 이해 필요 • 무거운 엉덩이와 높은 인내심, 직관이 필요 • 앞으로의 발전이 기대되는 영역
  • 57.
    감사 합니 다:) Q&A 손은주 @EJSohn