AWS에서 딥러닝 인스턴스 만들고 jupyter notebook 실행까지!
Oct 2, 2018

Deep learning 을 모델 학습을 위해서 high computing power가 필수 입니다. 아마존의 AWS를 통해 ‘Tesla K80’ GPU를사용하여 학습할 수 있는 인스턴스를 만들고 jupyter notebook 을 실행시켜 아마존 EC2 인스턴스에서 학습시키는 방법까지 포스팅 해보겠습니다.

Deep Learning AMI 인스턴스 생성

EC2 Dashboard를 클릭하여 들어가서

우측 계정에서 Region을 선택합니다. (인스턴스를 생성하고자하는 지역)

image-20181002185649879

Region 선택이 완료 되었으면,

Create Instance - Launch Instance를 클릭합니다.

image-20181002185449291

왼쪽 AWS Marketplace 클릭 후 검색어에 “Deep Learning AMI with Source Code”라고 입력하고 엔터

image-20181002185918326

그러면, 4가지 type 의 인스턴스가 나옵니다. 이중 3번째인 Deep Learning AMI with Source Code (CUDA 8, ubuntu)를 선택하겠습니다.

image-20181002190113211

이렇게 알림 화면이 나와주면 Continue해 주고요.

Filter by: 에서 “GPU compute” 클릭한 후 저는 p2.xlarge 인스턴스로 생성하겠습니다.

image-20181002190203971

하단 - Review and Launch 클릭

image-20181002190349984

Security Groups에 Rule이 비어 있는 것이 보이신데, 이 Rule은 port forwarding 의 개념이라고 보시면 됩니다.

image-20181002190507212

우측 - Edit security groups 클릭

Jupyter notebook이 포트 8888번을 사용하기 때문에, aws에서 jupyter notebook 서버를 올리고 이를 외부에서 접속하기 위해서는 8888번 포트 개방을 해주어야 겠죠?

image-20181002191622171

Create a new security group 클릭

Security group name 에는 ‘jupyter notebook’을 입력합니다.

Add Rule 클릭

Type에는 ‘Custom TCP’클릭, Port Range에는 jupyter notebook 포트인 ‘8888’ 을 입력합니다.

Source에는 ‘Anywhere’를 입력합니다.

image-20181002191513673

하단에 Review and Launch 클릭

image-20181002191724076

STEP: 7에서 Launch 클릭을 하면 아래와 같은 화면이 뜹니다.

image-20181002191845812

이미 key pair가 있으신 분들은 existing key pair로 하셔도 좋습니다.

저는 Create a new key pair를 선택하고, Key pair name을 입력해 주겠습니다.

그리고 반드시 Download Key Pair를 하셔야 합니다.

이 Key Pair를 분실하시면 instance에 접속이 불가하며, instance를 삭제해야하는 불상사가 생길 수 있으니, 안전한 곳에 백업해 두시길 권장합니다!!!

Launch Instances를 클릭하시면, 몇 분동안의 Instance 생성 시간이 소요된 후 성공적으로 런칭 된 것을 보실 수 있습니다.

생성된 EC2 Instance에 로그인 하기

EC2 Dashboard에서 생성된 인스턴스의 IPv4 Public IP 를 확인하고 이를 기억해 둡니다. (하단에 정보에서 확인하실 수 있습니다.)

그리고 terminal을 여시고, 아마존 Key Pair를 저장해 두었던 directory로 이동합니다.

그런 다음 ssh 접속을 통해 AWS EC2 instance로 접속합니다.

X.X.X.X에는 IPv4 Public IP 가 들어갑니다.

ssh -i YOUR_AWS_KEY_PAIR.pem ubuntu@X.X.X.X

아래와 같은 에러로 로그인이 안된다면 chmod 설정을 변경해야 합니다.

It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: YOUR_AWS_KEY_PAIR.pem
Permission denied (publickey).

아래 커멘드를 통해 해결하실 수 있습니다.

chmod 400 YOUR_AWS_KEY_PAIR.pem

Jupyter notebook & miniconda 설치

jupyter notebook setting을 위해 아래 커멘드를 입력합니다.

jupyter notebook --generate-config

이젠 miniconda를 download & 설치해 보겠습니다.

terminal에서 아래 명령어를 순서대로 입력해 줍니다.

# miniconda download
wget https://repo.continuum.io/archive/Anaconda3-5.3.0-Linux-x86_64.sh -O ~/anaconda.sh

# install miniconda
bash ~/anaconda.sh -b -p $HOME/anaconda

# update miniconda path
echo -e '\nexport PATH=$HOME/anaconda/bin:$PATH' >> $HOME/.bashrc && source $HOME/.bashrc

혹시 conda를 입력하면 menu들이 나와야 하는데 정상적으로 $PATH등록이 안되었다면, PATH 를 export 해줍니다.

export PATH=~/anaconda3/bin:$PATH

conda가 설치가 완료되었으니,

가상 환경을 만들고 실행해 보겠습니다.

가상환경 생성

conda create -n deep-learning python=3.6

가상환경 실행

source activate deep-learning

필요한 패키지 인스톨

# pytorch
conda install -c pytorch pytorch

# torchvision
conda install -c pytorch torchvision

# torch gpu support
conda install pytorch torchvision cuda80 -c soumith

기타 추가로 필요한 패키지들을 인스톨하면 됩니다.

Local 에서 Jupyter notebook 접속

가상환경에 진입한 상태에서 하기 커멘드를 실행시켜 jupyter notebook server를 실행시켜 줍니다.

jupyter notebook --ip=0.0.0.0 --no-browser

그러면

X.X.X.X:8888/?token=... 

이렇게 뜨게 되는데, X.X.X.X부분에 aws의 Public IPv4를 입력해줍니다.

그리고 이를 Local의 firefox나 chrome에 붙혀넣기 해주어 실행 시키면, aws 의 인스턴스에 접속한 jupyter notebook을 실행시킬 수 있습니다.

jupyter notebook 에서 확인하면 GPU instance가 정상 동작함을 확인할 수 있습니다.

image-20181002195237440

Tesla K80 GPU로 이제 Deep Learning 을 즐길 수 있습니다!



관련 글 더보기

- Visual Studio Code에서 ftp-simple 플러그인을 활용하여 AWS 인스턴스 code 원격(remote) 작업

- python django 프로젝트를 아마존(aws) ec2 인스턴스에 생성 및 원격접속

- 아마존 AWS에서 생성한 인스턴스와 도메인 네임서버(가비아/cafe24) 설정하기

데이터 분석, 머신러닝, 딥러닝의 대중화를 꿈 꿉니다.