useful clutter

GCP VM 인스턴스 생성 및 VS Code 연결

|

Google Cloud Platform (GCP)에서 가상머신 (VM) 인스턴스를 생성하고, 로컬에 연결하여 VS code로 작업하는 과정을 기록했다.

GCP VM 인스턴스 생성

Google Cloud Platform (GCP)에 접속한 후, 아래의 사진과 같이 VM 인스턴스 생성을 클릭한다.

VM 인스턴스 생성하기

새로운 인스턴스 만들기 클릭 후, 이름을 설정한 다음 목적에 맞는 머신을 구성한다. 필자는 딥러닝을 위한 GPU가 필요했기 때문에 GPU 카테고리에 머신을 구성했다. 리전과 영역에 따라 선택할 수 있는 GPU가 다르기 때문에 원하는 GPU가 선택한 리전에 없다면, 리전을 변경하자. (리전에 따른 차이가 있는지는 모르겠다.)

GPU를 선택하면 우측에 예상 금액이 보인다.

머신 유형에서 vCPU 개수를 선택할 수 있는데, 당연히 개수가 많을수록 비싸다. 작업을 해보니 한 개로는 부족한 것 같고, 최소 2개는 해주는 것이 좋아보인다.

부팅 디스크의 선택도 중요하다. 필자는 Pytorch with CUDA 환경에서 작업할 생각이었기 때문에, 그것에 알맞은 디스크를 선택했다. 엉뚱한 디스크를 선택하면, torch 설치부터 해야하는 불상사가 발생한다.

Pytorch 사용을 위해 부팅 디스크를 설정하는 모습

VM 인스턴스 생성 후, GPU 할당량을 조정해야 한다. 먼저, 좌측 메뉴에서 [IAM 및 관리자] > [할당량] 메뉴를 클릭한다.

할당량 수정 메뉴

필터에 gpus_all_regions라는 키워드로 검색한다.

필터에 gpus_all_regions로 검색한다.

좌측 체크박스를 클릭한 후, 우측 상단에 할당량 수정을 눌러 할당량을 0에서 1로 수정한다. GPU 한 개를 할당해달라고 요청하는 것이다. 필자는 이 과정에서 체크박스가 선택이 안되는 문제가 있었는데, 유료 계정 전환을 통해 해결했다. 유료 계정으로 전환하더라도 요금이 바로 부과되는 것은 아니다. 처음 사용하는 유저에게 90일 동안 사용할 수 있는 300달러 크레딧을 주기 때문에, 크레딧을 사용하는 동안 요금이 부과되지 않는다. 특정 기관(학교 등)의 경우, 100달러를 추가로 주는 것 같다. 기다리다 보면 할당량 수정이 승인되고 VM 인스턴스를 사용할 수 있게 된다.

GCP VM 인스턴스 SSH 연결

로컬 PC에 SSH key를 생성한다.

> ssh-keygen -t rsa -f ~/.ssh/[생성할 키 파일 이름] -C [GCP 계정]
예) ssh-keygen -t rsa -f ~/.ssh/gcp_key -C j0shuajun@snu.ac.kr

생성된 키를 열어 확인 후 내용을 복사한다.

> cat ~/.ssh/[생성한 키 파일 이름].pub

복사한 SSH 키를 GCP 서버에 추가한다.

  1. GCP 홈페이지 우측 상단에 Cloud Shell 활성화를 클릭한다.
  2. vi ~/.ssh/authorized_keys 입력 > i 입력 > 복사한 SSH key 붙여넣고 esc 입력 > :wq 입력 후 엔터
  3. cat ~/.ssh/authorized_keys로 잘 저장되었는지 확인하다.

좌측 메뉴에서 [Computer Engine] > [메타데이터] 메뉴를 클릭한다. SSH키로 이동한 후, 상단의 수정 버튼을 눌러 복사했던 SSH 키를 저장한다.

[Computer Engine] > [메타데이터]

복사한 SSH 키를 붙여넣는다.

그 다음, [VPC 네트워크] > [IP 주소] 메뉴에서 외부 고정 주소 예약을 누른 후, 외부 IP 주소를 고정한다. 그렇지 않으면, 인스턴스를 중지하고 재개할 때마다 외부 IP 주소가 바뀌어버린다.

[VPC 네트워크] > [IP 주소]

예약할 고정 IP 주소의 이름을 입력한 후, 리전은 앞서 생성한 VM 인스턴스의 리전과 동일하게 설정하고, 연결 대상을 해당 인스턴스로 지정해준다.

GCP VM 인스턴스 IP 고정하기

마지막으로 VM 인스턴스로 돌아가서 외부 IP를 확인한 후, 다음의 명령어를 터미널에 입력하면 VM 인스턴스에 접속할 수 있다. 처음 접속하는 경우, nvidia-driver를 설치하라는 메시지가 나올텐데 yes를 입력하면 된다.

> ssh -i [로컬 PC의 키 파일 경로] {VM의 username}@{VM의 외부 IP}
예) ssh -i ~/.ssh/gcp_key j0shuajun@12.34.56.78

VS Code로 접속하기

  1. Extensions 탭에서 Remote - SSH를 설치한다.
  2. 추가된 모니터 모양 아이콘을 누른 후 다음의 명령어를 입력한다.
    > ssh -i [로컬 PC의 키 파일 경로] {VM의 username}@{VM의 외부 IP}
    예) ssh -i ~/.ssh/gcp_key j0shuajun@12.34.56.78
    
  3. 첫 번째 config 파일에 저장한다.
  4. IP 주소 옆 연결 버튼을 누르면 연결 성공.
  5. 마지막으로 딥러닝에 필요한 코드 및 데이터를 Linux VM에 업로드해야 한다. 관련 링크를 통해 방법을 확인할 수 있다. (업로드 속도가 매우 느리다. 1기가 파일을 업로드하는데 3시간 가량 소요됐다. 빠른 방법은 없을까?)
    • SSH-in-browser 방법은 굉장히 느려서 추천하지 않는다.
    • Cloud Storage 버킷을 통해 업로드/다운로드 하는 것을 추천한다.
# VM에서 버킷으로 업로드 하는 경우
> sudo gsutil cp [업로드할 파일 경로] gs://[버킷 이름]/[저장할 경로]
예1) sudo gsutil cp ~/projects/train.py gs://sample_bucket
예2) sudo gsutil cp -r ~/projects/code gs://sample_bucket
# 버킷에서 VM으로 업로드 하는 경우
> sudo gsutil cp gs://[버킷 이름]/[다운로드할 파일 경로] [저장할 경로] 
예1) sudo gsutil cp gs://sample_bucket/train.zip ~/projects/data
예2) sudo gsutil cp -r gs://sample_bucket/data ~/projects

Note

  • GCP를 재실행할 때 오류가 발생하며 연결이 되지 않는 경우가 있다. 이럴 때에는 다음의 명령어를 통해 드라이버를 재설치해주자.
sudo /opt/{name}/install-driver.sh