[개발 환경] GCP에서 GPU를 이용해 개발해보자! - 02

hun_dev·2022년 9월 13일
0

꿀 같이 달콤했던 나흘이 지나고 다시 바쁜 일상이 찾아왔습니다. 다들 추석 연휴는 잘 보내셨는지요. 지난 게시글에서는 GCP에서 GPU를 할당받는 과정을 진행해보았습니다. 이번 게시글에서는 할당받은 GPU를 토대로 VM 인스턴스를 생성해보겠습니다.

지난 게시글은 해당 링크 또는 위의 시리즈를 통해 다시 볼 수 있습니다.

VM 인스턴스 생성

GPU 할당을 받았으니 이제 할당받은 GPU를 사용하여 개발을 진행할 개발 공간, 즉 VM 인스턴스가 필요합니다. 그 전에 VM에 대해 잠시 알아보도록 하겠습니다.

VM ( Virtual Machine, 가상 머신 )
가상 머신은 컴퓨팅 환경을 소프트웨어로 구현한 것, 즉 컴퓨터 시스템을 에뮬레이션(가상 현실화)하는 소프트웨어다. 가상 머신 상에서 운영 체제나 응용 프로그램을 설치 및 실행할 수 있다.

(참고) 위키백과 - 가상 머신

쉽게 말해, 현재 사용하고 있는 호스트 컴퓨터 안에 또다른 컴퓨터를 생성하고 동작시키는 것이라고 할 수 있습니다. VM을 이용하면 호스트 컴퓨터와 독립된 공간에서 동작하므로 각종 테스트에 용이합니다.

뿐만 아니라, 현재 Windows 환경에서 개발을 진행하고 있는데 Linux 등 Windows가 아닌 타 환경에서의 개발이 필요할 때도 요긴하게 사용할 수 있습니다.

그러나 호스트 컴퓨터보다 떨어지는 효율성과 실행 속도, 하나의 호스트 컴퓨터에서 다수의 가상 머신을 실행했을 시 나타나는 성능의 불안정함은 불가피합니다.

대표적인 VM 프로그램으로는 VirtualBox, VMware 등이 있습니다.

Google Cloud의 VM 인스턴스에 대한 설명입니다.
https://cloud.google.com/compute/docs/instances?hl=ko#instances_and_containers

GCP에서 VM 인스턴스를 생성하는 것은 어렵지 않습니다. 좌측 상단의 탐색 메뉴를 클릭해 Compute Engine의 VM 인스턴스를 클릭합니다. 그러면 다음과 같은 페이지가 우리를 맞아줍니다.

인스턴스 만들기를 클릭합니다. 클릭하면 인스턴스 이름, 머신 구성, 방화벽 설정 등을 진행할 수 있는 페이지가 나타납니다. 작성 및 변경할 사항은 다음과 같습니다.

이름, 리전, 영역, 머신 구성, 부팅 디스크, 방화벽, 고급 옵션 - 네트워킹

해당 링크는 GCP의 VM 인스턴스 생성 가이드입니다. 우리는 위의 설정만 작성 및 변경하지만 다른 설정도 작성 및 변경하여 인스턴스를 생성하고 싶다면 참고하여 생성하면 됩니다.

인스턴스 이름 설정입니다. 저는 Bert를 사용하여 작업을 진행할 것이기에 간단하게 'instance-bert'라고 하겠습니다.

인스턴스 리전과 영역 설정입니다. 리전과 영역마다 사용할 수 있는 리소스, CPU, 머신 유형 등이 상이합니다. 아쉽게도 서울을 비롯한 근방의 홍콩, 도쿄 등은 V100 GPU를 지원하지 않습니다. 저는 V100 GPU를 사용할 수 있는 asia-east1 리전의 asia-east1-c 영역을 선택하였습니다. 제가 선택한 리전과 영역은 T4, V100, P100을 지원합니다.

리전 및 영역 별 사용가능한 설정은 여기에서 알 수 있습니다.
그러나 GPU 사용이 가장 제한되는 문제이므로, 여기에서 해당 GPU를 사용가능한 지역을 찾아 선택하면 됩니다.

아시아 리전의 GPU 리전 및 영역 조합 표입니다. GPU 플랫폼 항목에서 사용하고자 하는 GPU를 찾아 해당 리전과 영역을 선택하면 됩니다.

머신 구성 설정입니다. 우리는 GPU를 사용할 것이기 때문에 머신 계열에서 GPU를 선택합니다. GPU 유형으로 할당받은 GPU를 선택하고 GPU 수는 할당량만큼 설정합니다. 저는 V100 GPU를 1만큼 할당 받았기 때문에 다음과 같이 설정하였습니다.

다음으로는 머신 유형을 설정합니다. 필요에 부합하는 vCPU의 수와 메모리의 크기를 설정합니다. 그 외 사항은 건드리지 않아도 됩니다.

리소스가 많아지고 성능이 향상될수록 시간 당 부과되는 요금은 올라가니 적당히 타협하여 설정해야 합니다.

부팅 디스크 이미지 설정입니다. 변경을 눌러 원하는 이미지의 부팅 디스크로 설정합니다. 저는 Ubuntu 20.04 LTS 환경에서 작업할 것이기에 사진과 같이 설정하였습니다. 본 게시글 및 시리즈는 Ubuntu 20.04 LTS 환경에서 진행됩니다.

방화벽 설정과 고급옵션 - 네트워킹 설정입니다. 사용하면서 로컬 컴퓨터와의 기본 파일 업로드 및 다운로드 기능이 존재하나, 파일의 크기가 커질수록 속도가 현저히 느려짐을 알 수 있었습니다. 따라서 jupyter를 통해 파일 업로드 및 다운로드를 진행할 것입니다. 뿐만 아니라, CLI 환경이 어색하거나 notebook 환경이 익숙하신 분들은 다음과 같이 네트워크 태그에 꼭 jupyter를 작성해주세요. ( jupyter 사용 유무는 선택사항입니다. )

설정이 진행되는 동안 우측 상단의 가격 책정표가 실시간으로 업데이트됩니다. 제 VM 인스턴스의 경우 시간당 약 $1.93가 부과된다고 합니다. 역시 GPU가 비용의 가장 큰 부분을 차지하고 있음을 알 수 있습니다. 9월 14일 01시 현재 환율로 따져보면 한화로 약 2,700원 가량이네요. 지난 시간에 무료 크레딧으로 약 400,000원의 한화를 지급받았으니 148시간 정도 사용할 수 있습니다.

가격 책정표를 보며 사양을 요리조리 변경하면서 극한의 효율을 챙겨도 좋겠네요.

예상 요금까지 확인하였으면 하단의 만들기를 눌러 인스턴스를 생성합니다. 인스턴스가 생성되는 데에는 약간의 시간이 소요됩니다. 빙글빙글 돌아가는 로딩 게이지를 보며 눈 운동을 해보겠습니다. 항상 고생하는 우리의 눈을 위해 잠시 휴식 시간을 주는 구글 신의 은혜입니다.

우리의 첫 인스턴스가 생성되었습니다.

인스턴스가 동작하는 동안에는 요금이 부과됩니다.
작업이 마무리되었으면 인스턴스를 꼭 중지하여야 합니다. 그렇지 않으면 나도 모르는 사이 요금 폭탄을 맞습니다..! 기억하세요. 억울한 요금 부과는 없어야 합니다.


인스턴스 정지가 아니라 중지입니다. 정지는 작업 중이던 노트북을 잠시 닫는 것과 같습니다. 중지 후에는 인스턴스가 정말로 중지되었는지 확인해주세요.

방화벽 규칙 설정 (선택 사항)

해당 설정은 jupyter를 사용하고자 할 때만 진행하면 됩니다. 좌측 상단의 탐색 메뉴에서 VPC 네트워크의 방화벽에 들어가줍니다. 그러면 다수의 VPC 방화벽 규칙이 눈에 띕니다. 상단에 보이는 방화벽 규칙 만들기를 클릭합니다.

위와 같이 입력합니다. 방화벽 규칙 설명은 작성하지 않아도 됩니다. 작성하였으면 하단에 위치한 만들기를 클릭합니다.

방화벽 규칙을 생성하고 다시 VPC 방화벽 규칙 리스트를 살펴 보면, 위와 같이 방화벽 규칙이 정상적으로 생성되었음을 알 수 있습니다.

VM 인스턴스 생성 완료!

VM 인스턴스로 돌아가 해당 VM 인스턴스의 연결 메뉴를 누르면 여러 가지의 연결 방법이 나열되어 있습니다. 저는 SSH가 별도의 설치가 필요 없기에 브라우저에서 SSH로 연결하였습니다.

상단바를 살펴보면, 파일 업로드 및 다운로드 메뉴, 유저 피드백 및 단축키 사용, 설정 메뉴가 있습니다. 설정 메뉴에서 약간의 커스텀을 진행할 수가 있습니다. 선택지가 극히 적지만 기분이라도 내줍니다.

커스텀? 개발자라면 이거 못 참습니다.

이제 진짜 개발을 진행해보자!

본 게시글에서는 VM 인스턴스를 생성하고 jupyter를 이용하기 위한 방화벽 규칙 설정까지 완료하였습니다. 이제 진짜 GPU를 이용한 개발을 진행해봅시다.

혼자 환경설정할 때에는 금방금방 진행했는데 스크린샷과 설명을 덧붙이니 다소 오랜 시간이 걸리는 듯한 느낌입니다. 최대한 간결하고 쉽게 쓰려고 노력하고 있습니다.

다음 게시글에서는 GPU 설정과 PyTorch, TensorFlow와 같은 딥러닝에 필요한 각종 라이브러리 설치를 진행해보도록 하겠습니다.

피드백은 항상 감사히 받습니다. 수정해야 할 내용이 있다면 댓글로 알려주세요!

profile
좋아하는 것이 잘하는 것이 될 때까지

0개의 댓글