AWS의 GPU를 이용한 TensorFlow


최근 실행해본 CNN 정도만해도 이제 CPU TensorFlow로는 학습이 느린감이 있다.

이전에 학생 크래딧 받기를 참조해서 아마존으로 부터 $100를 받아서 AWS EC2를 사용해 보자.
이전포스트

계정을 생성하고 EC2를 생성해보자.
아래와 같은 GPU Instance 모델들이 존재 한다.

필자는 아래의 모델중 g2.8xlarge를 선택 했다.

Instance를 생성 할 때 김성훈 교수님께서 이미 EC2를 공유해 주셨기 때문에 해당 Instance를 카피해서 생성한다.
AMI라고해서 Amazon Machine Instance를 검색해서 찾을 수 있다.
아래의 이름으로 검색하면 된다.

  • ami-9e39dcf3 (N. Virginia)
  • ami-38f60658 (oregon)

그리고 생성 하려고하면 아마 limit fail이 발생할 것이다.
고객센터가서 사용 목적을 적어서 이메일 보내면 30분내로 instance 갯수 허용이 늘어나고
생성할 수 있게된다.

아래와 같이 정상적으로 생성 할 수 있다.

인증키로 로그인 하기

putty로 접속을 하려면 key를 생성해야 합니다.
http://www.chiark.greenend.org.uk/~sgtatham/putty
PUtty key generator를 실행해야하므로 모든 관련 파일이 있는 putty.zip을 다운 받아야 합니다.

PUTTYGEN을 실행 합니다.
Conversions-> Import key를 선택합니다.
EC2를 생성할 때 사용 했던 key를 이용해서 접속 key를 생성해야 합니다.

키를 로드하고 save private key 버튼을 눌러서 저장합니다.

EC2 키의 확장자는 pem이고 PUTTYGEN에 의해서 생성한 키의 확장자는 ppk입니다.

Amazon EC2 관리자로가서 Public IP 주소를 확인 합니다.
Putty를 실행해서 IP 주소를 입력하고
오른쪽 창에서 SSH-> Auth로 이동합니다.
Browse버튼을 눌러서 생성한 Key를 선택합니다.
open버튼을 눌러서 접속 합니다.

각 EC2 Instance의 운영체제에 따라서 기본 사용자명이 다릅니다.

  • Amazon Linux: ec2-user
  • Red Hat Enterprise Linux: ec2-user
  • SuSE Linux: root
  • Ubuntu Linux: ubuntu

필자는 Ubuntu이므로 아이디는 ubuntu 이다.

아래와 같이 정상적으로 로그인 되는것을 알 수 있습니다.

MNIST set을 가지고 CNN모델을 트레이닝 하는것을
AWS GPU와 i7-cpu에서 트레이닝 했을 때를 녹화한 것이다.

동영상은 아래의 유투브에서 볼 수 있다.
Youtube: https://youtu.be/-kQ4fm2fqcM

대략 5배~7배 정도 차이인것 같다.
K520 GPU가 4대 있는 EC2인데 생각보다 차이는 크지 않다.

최종 결과는 아래와 같다.

EC2

MNIST로 CNN 모델을 트레이닝 하는데 총 22분 4.040초 걸렸다.

i7 CPU

결론적으로 4.8배 차이이다.


+ Recent posts