구글 클라우드 플랫폼(GCP)을 이용해서 GPU 사용해보기
최근 머신러닝, 딥러닝이 큰 이슈가 되고 있는데요.
이에 관심있는 분들이 만들고 싶은 모델의 훈련 속도를 빠르게 진행하려면, 대부분 성능이 좋은 GPU가 필요한데 기업이나 단체가 아닌 개인적으로 공부하는 사람들에게는 값 비싼 GPU를 구매하기 부담스러운게 사실입니다. 이런 사람들을 위해 구글에서 제공하는 클라우드 플랫폼을 이용해서 NVIDIA GPU를 빌려 사용할 수 있는 방법이 있는데요. 처음에 가입하면 무료로 제공해주는 크레딧을 통해 충분히 학습이 가능합니다. 한번 자세히 알아보겠습니다.
구글 클라우드 플랫폼 사이트 : https://cloud.google.com/?hl=ko
우선 구글 계정으로 플랫폼 가입을 진행합니다.
클라우드 플랫폼은, 처음 가입하면 365일동안 무료 체험판을 사용할 수 있으며 300달러에 해당하는 크레딧이 제공됩니다.
크레딧을 초과해서 사용할 수도 있기 때문에, 가입 시에 자신의 계정으로 된 결제 카드를 입력해야 합니다.
(연습 목적으로 사용하는 사람들은 크레딧을 초과하면 그만큼 금액이 부과되므로 항상 주의하도록 해야합니다. 큰 프로젝트가 아닌 혼자 연습을 진행하는 것으로는 300달러면 충분히 이용할 수 있으니 크게 걱정하지 않아도 됩니다!)
가입이 완료되면 '콘솔로 이동'을 누르고 이동해봅시다.
처음 이용하면 프로젝트를 생성하게 될 겁니다. 자신이 원하는 이름으로 프로젝트를 하나 만들어주시고, 왼쪽 바를 클릭하면 아래와 같은 메뉴가 나오게 됩니다.
'Compute Engine'으로 들어가서 맨위에 VM 인스턴스를 클릭해줍니다. 인스턴스를 우선 하나 생성해야 API가 만들어지면서 원하는 GPU 할당 신청이 가능해집니다.
인스턴스 만들기를 클릭합니다.
만들 인스턴스 이름은 자신이 원하는 것으로 설정해주면 됩니다.
지역은 상당히 다양하게 있는데, 가까운 편에 속하는 타이완으로 선택했습니다. 오른쪽에 보면 예상 비용이 나오는 모습을 볼 수 있죠?
CPU를 2개 쓰고 싶다고 설정하니, 이 인스턴스를 사용하면 1시간에 0.08달러가 소요된다고 나와있습니다. 하지만 우리는 300달러 크레딧이 있기에 걱정하지 않아도 됩니다ㅎㅎ
부팅 디스크는 가상머신을 활용하기 위해서 변경버튼을 클릭하고 우분투 16.04를 선택했습니다. 디스크 용량은 50기가 정도로 잡았습니다.
우선 이정도로만 체크하고 인스턴스를 생성합니다. 만들어지는데 약간의 시간이 소요되니 기다리면 됩니다.
생성이 완료되면 자동으로 위 화면처럼 실행이 됩니다. 나중에 다 설정을 마친 이후에는 꼭 인스턴스 메뉴에서 '중지'를 통해 인스턴스 실행을 정지시켜 주도록 해야합니다. 만약 까먹고 그냥 컴퓨터나 해당 창을 끄더라도 구글 클라우드 서버에서 재생 중인 인스턴스는 계~~속 돌아가게 되고 돌아간 만큼 비용이 청구되니 반드시 컴퓨터를 종료하기 전에는 중지를 눌러주도록 합시다ㅠㅠ
(중지 옆에 삭제 버튼은 인스턴스를 없애버리니까 혼동하지 않도록 주의하세요)
이제 우리가 딥러닝에 사용할 NVIDIA GPU를 신청하러 가보도록 합시다. GPU를 사용하기 위해서는 내가 원하는 GPU의 할당량을 신청하고 승인을 받아야만 이용이 가능합니다.
왼쪽 메뉴바에 'API 및 서비스'를 누르고 '할당량'을 선택합시다.
저는 이미 GPU 하나를 할당 받고 사용 중인 상태이기 때문에 맨 위에 사용 모습이 나오는 모습을 보실 수 있습니다. 처음 진행하시는 분들은 할당량 내역에서 NVIDIA GPU에 대한 서비스는 보이지 않을 것 입니다.
위에 조건을 설정하는 부분에서 '측정항목' 부분을 클릭해주세요.
현재 전체 선택된 상태이기 때문에 모든 서비스가 보여지고 있습니다. 우리가 필요한건 GPU이기 때문에, '선택 해제'를 눌러주시고 gpu라고 검색합니다.
아래처럼 구글에서 제공하는 NVIDIA GPU들의 내역이 나오는 모습을 확인할 수 있습니다. K80, P100, V100 등이 있네요.
저는 이 중에서 K80 GPU를 사용하기 위해 이것만 체크했습니다. (여러가지를 사용하실 분들은 중복 체크도 가능합니다!)
K80에 해당하는 서비스들이 나옵니다. 이 중에서 위치는 asia-east1를 체크합시다. 그리고 위에 '할당량 수정'을 누르면 오른쪽과 같은 모습이 뜹니다.
※ 할당량 수정을 하려면 계정 업그레이드를 해야합니다?
이처럼 업그레이드를 해야 할당량 수정이 가능하다는 알림이 뜨는 분들이 계실텐데요. GPU를 사용하기 위해서는 유료 계정으로 업그레이드가 필요합니다. 하지만 업그레이드를 해도 크레딧은 그대로 존재하고, 우리가 원하는만큼만 사용하고 중지시키면 되기 때문에 크게 걱정하지 않으셔도 됩니다. 업그레이드를 눌러주시고, 유료 계정으로 변환이 완료되면 새로고침 후에 다시 할당량 수정 부분을 진행하시면 됩니다.
이름과 이메일은 이미 작성된 상태로 나오게 되는데요. 맨 아래 전화번호를 입력 후 다음으로 넘어갑시다.
새로 할당 받고 싶은 수를 입력하도록 나오는데요. 저는 우선 연습해보는 단계이기 때문에 1개만 신청했습니다. 더 필요하신 분들은 여러개 요청도 가능합니다. (그만큼 사용시간 당 지불비용도 늘어날 것이기에 잘 생각해서 선택하세요!)
요청 설명에는 어떤 일을 하기 위해 신청하는 지 간단하게 입력한 후 '완료'를 누르고, 요청 제출을 통해 할당량 신청을 완료하면 됩니다.
해당 구글 계정의 메일로 할당이 완료되었다는 답장이 오게 되는데요. 메일이 오는 시간은 약 1시간 정도 소요되는 것 같습니다. (평일만)
기다리는 동안 다른 업무 보시거나 아래 어떻게 진행되는지 먼저 한번 살펴보시는 것도 좋을 것 같아요~
할당량 신청이 완료되었다는 메일이 위와 같이 오게 됩니다. 이 메일이 반드시 와야 할당량 신청이 완료된 것이니 만약 시간이 오래지나도 답장이 오지 않는다면 할당량 신청을 다시 진행해주시면 됩니다. (경험상 주말에는 할당량 지원을 안해주는 것 같습니다.)
이제 우리는 K80 GPU를 사용할 수 있게 되었는데요. 다시 VM 인스턴스로 돌아가서 GPU를 할당한 새로운 인스턴스를 만들도록 합시다.
다른건 원래 인스턴스 만든 것처럼 똑같이 설정해주시면 되는데, 이번에 할당받은 GPU를 지정해줘야겠죠? '맞춤설정'을 클릭합시다.
GPU 개수가 없음으로 되어있을텐데요. 사용할 GPU 개수를 설정해주시면 됩니다. 전 1개를 신청했기 때문에 1로 선택했습니다.
아래 쪽에 방화벽은 모두 트래픽 허용으로 체크해주시구요.
네트워킹에 태그 두가지를 입력해줍니다. 나중에 모델 학습에 유용한 jupyter와 tensorboard를 사용하기 위함입니다. (선택사항이니 필요하신 분들만 하시면 됩니다.)
이제 만들기를 완료해주시면, GPU를 탑재한 인스턴스가 만들어지게 되었습니다.
※ jupyter와 tensorboard 사용 설정
두 기능을 사용하고 싶으신 분들은, 왼쪽 바에서 네트워킹 > VPC 네트워크 > 방화벽 규칙에 들어갑시다.
(사용안하실 분들은 아래로 넘어가시면 됩니다.)
두 방화벽 규칙을 설정해주기 위해 새로 만들어줍시다. 진행은 아래 빨간 박스에 해당하는 부분만 똑같이 작성해주시고 완료하시면 됩니다.
tensorboard 또한 아래 입력형태로 만들어줍니다.
이름: tensorboard
대상 태그: tensorboard
소스 IP 범위: 0.0.0.0/0
프로토콜 및 포트: tcp:6006
이처럼 만든 두 가지 규칙이 잘 적용된 모습을 확인할 수 있습니다.
이제 다시 VM 인스턴스로 돌아가보겠습니다.
현재 진행중인 인스턴스의 외부 IP를 확인할 수 있구요. 옆에 SSH를 클릭하면 해당 인스턴스의 우분투 환경의 터미널로 접속됩니다.
이제 딥러닝에 활용한 몇가지 필요한 모듈을 다운로드 받도록 하겠습니다.
ssh로 연결된 우분투 터미널에서 아래 순서대로 입력하면서 다운로드를 진행해주시면 됩니다. (약 10~15분 소요)
wget https://raw.githubusercontent.com/GzuPark/gcp-ubuntu-gpu/master/setup.sh
sudo bash
bash setup.sh
exit
source .bashrc
설치되는 모듈 및 프로그램 내역은 아래와 같습니다.
CUDA 9.0.176
NCCL 2.2.13
CUDNN 7.1.4.18
Python 3.5.2
TensorFlow 1.9.0
PyTorch 0.4.0
nvidia-docker 1.0.1
Anaconda 5.2.0
다운로드가 다 완료되었으면, 현재 우분투 환경에서 nvidia gpu를 확인해보도록 합시다.
sudo nvidia-smi
Tesla K80이 존재하는 모습을 확인할 수 있습니다!
※ jupyter 사용
jupyter를 설정하신 분들은 아래와 같이 터미널에 입력해주면 연결이 가능합니다.
> jupyter notebook --allow-root
포트 8888로 생성된 모습입니다. 현재 실행 중인 인스턴스의 '외부IP:8888'로 url에 입력하면 아래와 같이 jupyter 환경을 사용 가능합니다.
이제 자신이 원하는 학습을 진행해보시기 바랍니다~!
'정보' 카테고리의 다른 글
[git] error: failed to push some refs to (0) | 2018.10.08 |
---|---|
Regex (정규표현식) (0) | 2018.08.31 |
[Git] 사용 요약 (0) | 2018.07.31 |
개발자 기술면접 준비하기 (2) | 2018.07.06 |
클라우드 컴퓨팅 정리 (0) | 2018.06.22 |