안녕하세요~
29년차 진로탐색꾼 조녁입니다.
오늘은 클라우드에서 고성능 GPU 인스턴스를 할당받아서 사용해보는 방법을 정리해볼까합니다.
최대한 차근차근 작성했지만 혹시 따라하시다 잘 안되시는 부분은 댓글로 남겨주세요.
1. 구글 클라우드 프로젝트 세팅하기
0 - 구글 클라우드 플랫폼(GCP) 가입하기
- 우선 구글 클라우드 플랫폼에 가입하지 않으신 분들은 가입을 해주셔야합니다. 가입하는 내용은 구글 계정 (유튜브 보는 분들이라면 한개씩 있으시겠죠!)으로 간편히 할 수 있으니 스킵하겠습니다.
- 추가로 처음 가입하실떄 무료 크레딧 300 달러를 받게 됩니다. 이때 회사 계정(이메일)인증을 하게되면, 다른 이메일에서 가입하실떄도 100 달러를 추가로 받아 총 400달러 크레딧을 받게됩니다.
1 - 프로젝트 생성 및 결제정보 등록하기
1-1. 결제정보 등록
- 무료 크레딧 사용 중일 경우, 결제수단 등록해도 결제되지 않습니다.
- “결제”를 누르고 들어가셔서 "계정 만들기"를 통해 만들 수 있습니다. 결제 계정 만드실때, VISA 나 MASTER 카드를 준비해주시면 됩니다.
1-2. 프로젝트 생성하기
- 좌측 상단 “My First Project”라고 되어있는 부분을 누르면 다음과 같은 창이 나옵니다. 창의 오른쪽 상단 “새 프로젝트”를 눌러주세요.
- 새 프로젝트의 이름은 자유롭게 지정해주시고, 사전에 만든 결제 계정을 등록해주세요. 조직은 따로 입력하지 않으셔도 괜찮습니다.
1-3. Compute Engine API 사용 신청하기
- 처음 사용하시는 분들은 “Computer Engine > VM 인스턴스”를 클릭해줍니다.
- 이후 나오는 아래 화면에서 “사용”을 눌러주시고 잠시 기다려줍니다. (이때 결제계정이 등록 안되어있다면 에러가 날 수 있음)
1-4. 무료계정 > 유료계정으로 업그레이드 (GPU 사용위해선 유료계정 필요)
- 무료계정을 사용하시다 만료되신 분들은, 보이시는 화면 우측 최상단에 “활성화” 버튼을 눌러줍니다.
- 만약 처음 가입하신 분들이라면, 결제 계정을 등록하신 후 위와 같이 “활성화” 를 눌러주시거나 결제 계정 등록과정에서 “유료계정 업그레이드”를 진행해주시면 됩니다.
2 - GPU 할당량 증가 신청하기 (중요!)
2-1. IAM > 할당량 에서 “all regions” & “gpu” 로 검색하면 “Compute Engine API , GPUs(all regions)”가 나옵니다.
2-2. 위의 GPUS(all regions)를 클릭한후, 보이는 화면의 우측 상단 “할당량 수정”를 누릅니다. 그리고 새 한도에 1을 입력한 후, 완료를 누릅니다.
사유는 자유롭게 작성해주시면 됩니다. 아마 5분 이내에 GCP에 등록하신 이메일로 회신이 올거에요.
3 - SSH Key 생성해서 프로젝트에 등록하기
3-1. SSH로 public key, private key 생성하기 [Mac 기준]
- ssh-keygen 명령어로 공개키와 암호키를 생성합니다.
- rsa 암호화 기본 2048이지만 4096이 좀더 안전
ssh-keygen -t rsa -b 4096 -f gcp_rsa_4096 -C [본인 이메일]
3-2. 아래와 같이 root dir 에 public, private key 가 생성되면 ~/.ssh 밑으로 옮겨 줍니다.
# .ssh dir 없을 경우 생성
mkdir ~/.ssh
# .ssh 밑으로 이동
mv ~/gcp_rsa_4096 ~/.ssh/gcp_rsa_4096
mv ~/gcp_rsa_4096.pub ~/.ssh/gcp_rsa_4096.pub
# 잘 옮겨졌는 지 확인
cd ~/.ssh
ls -a
4 - SSH로 클라우드와 로컬 연결하기
4-1. Computer Engine - 설정 - 메타데이터로 이동합니다.
4-2. SSH 키 화면을 누르고, SSH public key(gcp_rsa_4096.pub) 값을 복사 붙여넣기 합니다.
- gcp_rsa_4096.pub key 값 복붙
sudo vi ~/.ssh/gcp_rsa_4096.pub
# 접속할때 비밀번호는 노트북 잠금해제할 때 비밀번호.
# 이후 값 ctrl c
# esc + : + q
- 복붙한 값을 아래 SSH키에 입력
- 아래와 같이 저장되면 됩니다.
4-3. (5번 인스턴스 할당이후) 아래 커맨드로 ssh를 접속성공할 수 있습니다.
ssh -i gcp_rsa_4096 vm 등록한 아이디@vm 외부 IP
** vm 외부 IP는 Computer Engine - GPU 탭에서 확인하실 수 있습니다.
⇒ 하지만 저희는 추후 VS-Code의 SSH 익스텐션을 통해서 접속하는 방법으로 살펴볼 예정입니다.
5 - Computer Engine > VM 인스턴스 > 인스턴스 할당받기
5-1. Computer Engine > VM 인스턴스로 이동하기
5-2. 인스턴스 만들기 클릭
5-3. 인스턴스 생성하기 - 기본 옵션
- 이름 : 본인이 원하는 대로 설정
- 머신 구성 : GPU 선택 후, GPU 유형은 NVIDIA V100 설정, 갯수는 1개
- 머신 유형 : n1-standard-8(vCPU 8개, 30GB 메모리) 선택
5-4. 인스턴스 생성하기 - 부팅디스크
- 운영체제 : ubuntu (버전은 알아서, 기본은 18.04)
- 크기(GB) : 100 or 50으로 변경
- 이후, 최하단 “만들기” 버튼을 누르면 생성 완료. (쥬피터랩을 쓸 경우는 다음 글 참고)
2. VS-Code SSH 설정하기
1 - vs-code에 extention 설치하기
1-1. extention (아래 아이콘 참고) 클릭하시고 “SSH” 로 검색하셔서 맨위에 나오는 익스텐션 2가지 설치
1-2. “docker” 로 검색해서 docker extention도 설치
- 나중에 도커 사용할 때 쓸 예정
2 - SSH Config 세팅 수정하기
2-1. ctrl+shift+p (윈도우) , command+shift+p (맥) : default setting 검색 , “기본 설정 : 기본 설정 열기(JSON)” 클릭
- defaultSettings.json file에 들어간후 , ctrl +f 로 “useLocalServer”검색
- remote.SSH.use.LocalServer 를 false > true로 변경 (이미 True라면 무방함)
3 - SSH-Config file 에 호스트 추가하기
3-1. ctrl+shift+p (윈도우) , command+shift+p (맥) : ssh config 로 검색 , “원격 - SSH : SSH 구성 파일열기” 클릭
- 리스트중 root/.ssh/config 에 해당되는 파일 클릭
3-2. config file 내 새로운 호스트(host) 추가
- HOST : 자유롭게 지정
- HostName : 구글 클라우드 인스턴스의 외부 IP
- IdentityFile : 생성한 키(gcp_rsa_4096)이 존재하는 경로
- User : GCP 계정의 유저이름
3-3. ctrl+shift+p (윈도우) , command+shift+p (맥) : ssh 검색 후 “원격-SSH : 호스트에 연결” 클릭한 후 내가 지정한 HOST(GCP_V100)을 클릭하면 연결 끝!
3. 기본 세팅하기
1- nvidia driver 설치
1-1. nvidia driver 설치되지 않은 것 확인하기
1-2. 아래코드 입력한 후에 재접속
## GCP VM cuda install
sudo apt-get update
# 이후 재부팅
sudo apt install nvidia-driver-470 libnvidia-gl-470 libnvidia-compute-470 libnvidia-decode-470 libnvidia-encode-470 libnvidia-ifr1-470 libnvidia-fbc1-470
sudo reboot # 재부팅 시간이 걸리니 3분 정도 후에 접속하기
막상 GPU를 쓰려니 어떻게해야할까 고민하다가 GCP GPU 사용하는 방향으로 잡고 잘 사용중입니다.
(꼭 사용하지 않으실떄는 중지, 오래 안쓰신다면 삭제 해주세요!! 돈나갑니다)
혹시 하시다가 에러가 있거나 질문있으신 분들은 편하게 댓글로 남겨주세요!!
'프로그래밍 공부 > 보면 도움이 될걸?!' 카테고리의 다른 글
[오류해결] UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 0: invalid start byte (0) | 2022.08.09 |
---|---|
[오류해결] ValueError: Mixing dicts with non-Series may lead to ambiguous ordering (0) | 2022.06.14 |
[오류해결] Pyenv & Poetry 사용하다가 만난 에러 정리 (0) | 2022.03.03 |
주피터노트북(jupyter notebook)에 가상환경(virtual env) 연결하기 (0) | 2021.11.18 |
[오류해결] VS code에서 ssh 연결해서 사용하다 만난 오류들 (0) | 2021.09.20 |