BLOG

[AI Song Cover] Part2. GCP 및 SSH 설정

[AI Song Cover] Part2. GCP 및 SSH 설정

네부캠을 하면서 같은 팀원 형이 GPU 공짜로 사용할 수 있는 기회가 잘 없으니 많이 써두라고 했었는데, 무슨 의미인지 이제 알 것 같다. 몸값이 비싼 친구라 그런지 마음대로 쓰기는 쉽지가 않다. 코랩도 잠깐만 돌리면 사용량 제한 알림이 나오고.. 그래서 Google Cloud Platform(GCP)를 사용하기로 했다. GCP는 1회에 한해 6달간 300달러 상당의 크레딧을 무료로 제공한다. 아래 URL로 들어간 후 로그인을 하면 금방 얻을 수 있다.

https://cloud.google.com/free?hl=ko

무료 체험판과 무료 등급 서비스 및 제품$300의 무료 크레딧과 월별 한도까지 무료로 사용할 수 있는 Compute Engine, Cloud Storage 등 20여 개의 제품으로 Google Cloud에서 빌드하세요.cloud.google.com

크레딧을 얻었다면, GPU를 할당받을 수 있도록 할당량을 지정해야 한다. 좌측 상단 구글 클라우드 로고 옆의 세줄짜리 '탐색 메뉴'에서 'IAM 및 관리자' 탭에서 '할당량 및 시스템 한도'로 들어간다. 이후 필터에서 이름 탭을 선택하고 GPUs (all regions)를 입력하면 할당량이 0으로 된 것을 볼 수 있다. 왼쪽의 체크박스를 선택하고 '할당량 수정' 탭을 클릭하여 할당량을 변경해준다. 나는 하나만 쓸 예정이니 1로. 잠시 기다리면 값이 1로 변경된 것을 확인할 수 있다.

다음으로는 GPU를 빌리기 위해 Computer Engine API 사용 버튼을 클릭해야 한다. 몇분간 기다리다 보면 사용이 가능해진다. 'VM 인스턴스' 탭에서 '인스턴스 만들기'를 클릭하면, 아래와 같은 탭에서 여러 옵션들을 선택할 수 있다.

리전이나 영역에 따라 사용 가능한 머신 구성이 달라지는 모양이다. 머신 구성 탭에서 원하는 옵션을 선택하면 자동으로 다른 영역을 선택하라는 안내와 함께 사용 가능 영역을 표시해준다. 또한 GPU를 사용하기 위해서는 무료 계정을 유로 계정으로 전환해야 한다. 300달러를 사용한 후에는 비용이 청구될지도 모르니 조심하자.

설정한 머신 구성에 따라 우측 상단에 월별 예상 가격이 표시된다. 비쌀수록 성능은 좋아지겠지만 그만큼 사용할 수 있는 시간이 줄어드니 적당한 친구를 선택하자. 나는 NVIDIA V100을 선택했다. 그리고 기본 부팅 디스크를 사용하면 CUDA 스택을 수동으로 설치해야 한다는 안내가 나와서 CUDA가 설치되었다고 하는 Deep Learning on Linux - Deep Learning VM with CUDA 11.8 M116 부팅 디스크로 변경해 주었다. 그리고 '만들기' 버튼을 누르면 끝. 잠시 대기하면 인스턴스가 생성된다.

다음 절차를 로컬에서 사용할 수 있도록 SSH 등록하기. 'Computer Engine' 탭에서 아래 '설정'의 '메타데이터'에 들어간다. 'SSH 키' 탭에 들어가면 새로운 키를 등록할 수 있다. 키를 어떻게 만들 것이냐? ssh-keygen이라는 명령어를 터미널에 입력하면 자동으로 ssh key를 생성해준다. 아래 코드 참고.


(base) ➜  AI ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/USER/.ssh/id_rsa): id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in id_rsa
Your public key has been saved in id_rsa.pub
The key fingerprint is:
SHA256:[KEY] [USER]@[FILE]
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+

위와 동일하게 했다면, 지정한 위치에 id_rsa, id_rsa.pub 두 파일이 생성된다. 나는 현재 폴더에 생성이 되었다. 이제 pub 파일의 공개키를 복사해서 ssh키를 등록하자. 이대로 ssh 설정을 진행하면 key가 너무 오픈되어 있다면서 ssh 연결에 실패하니 파일 위치를 .ssh 폴더 아래로꼭 옮겨주도록 하자.


mv id_rsa /Users/USERNAME/.ssh
mv id_rsa.pub /Users/USERNAME/.ssh

나는 Visual Studio Code(VS Code)를 사용할 예정이라 VS Code에서도 여러 설정을 해야한다. 먼저 Extension(맥은 cmd+shift+X, 윈도우는 ctrl+shift+X려나)에서 Remote-SSH를 다운받는다.

다음으로 SSH Config 설정을 수정해야 한다고 하는데 나는 수정할 것이 없었다. 맨 아래의 티스토리 게시글을 참고하자.

마지막으로 cmd+shift+P/ctrl+shift+P를 눌러 'Remote-SSH: SSH 구성 파일 열기...' 탭에 들어가 SSH 구성을 추가한다. HOSTNAME, USERNAME은 상황에 맞게 잘 바꾸도록 하자. GPU 외부 IP는 VM 인스턴스 탭에 나온다.


Host HOSTNAME
  HostName GPU 외부 IP
  IdentityFile /Users/USERNAME/.ssh/id_rsa
  User USERNAME

이제 파일을 저장하고 다시 cmd+shift+P/ctrl+shift+P 버튼을 눌러 'Remote-SSH: 호스트에 연결...' 탭에 들어가면 HOSTNAME으로 된 호스트가 존재한다. 그 호스트를 선택하면 끝! 이제 본격적으로 뭔가를 할 수 있겠다.

VM 인스턴스를 켜두면 계속 돈이 나가니까 잊지 말고 삭제 혹은 중지를 시키도록 하자.

+추가

중지를 시킨 후 다시 VM 인스턴스 시작/재개를 하면 외부 IP 주소가 바뀌는 것 같다. 다시 들어가니 연결 시간이 초과되었다는 알림이 떠서 'Remote-SSH: SSH 구성 파일 열기...' 탭에서 IP 주소를 다시 바꿔주었더니 정상적으로 작동한다.

참고 사이트

https://blog.naver.com/westreed/222823107627 - GCP, SSH

https://velog.io/@hun_dev/%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-GCP%EC%97%90%EC%84%9C-GPU%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-%EA%B0%9C%EB%B0%9C%ED%95%B4%EB%B3%B4%EC%9E%90-01 - GCP

https://jonhyuk0922.tistory.com/241 - SSH