저같이 연구실에 들어가있지도 않고 GPU를 살 돈이 없는 가난한 학부생 입장에선, Google에서 내려주는 Colab GPU가 굉장히 소중한 존재입니다.
근데 DL을 하면서 Dacon이나 Kaggle을 나가서 수상자들의 코드를 보면 .ipynb 파일이 아닌 .py 파일로 파이썬의 OOP 를 적극적으로 활용하여 재현가능성도 높이고, 유지보수에도 좋게 만들어놨습니다.
그럴 때마다 ipynb로 만든 저의 작고 소중한 코드를 보면... 더 작고 소중해지는 제 코드를 발견하긴 합니다.
그래서!!! 오늘은 Colab의 GPU를 로컬 Vscode에서 어떻게 사용 가능한지 알아보겠습니다.
흔히 ML과 DL을 입문할 땐 Jupyter Notebook을 사용합니다. Ctrl + Enter만 누르면 해당되는 코드의 결과를 바로바로 확인할 수 있기 때문에 처음에 배워서 빠르게 결과를 확인하는 게 중요하거나 프로젝트에서 EDA나 데이터를 구축할 때나 프로젝트의 학습초기단계에서는 Notebook 형식이 사실은 더 유리합니다. 학습과정을 그때그때 바로 확인할 수 있기 때문이죠.
문제는 모델을 돌릴 때겠죠. 협업을 할 때나 배포, 공유를 할 때는 Notebok으로 된 파일은 좀 어렵습니다.
다른 사람이 해당 코드를 똑같이 돌려도 동일하게 재현 가능하도록 해야하는데 Notebook으로는 그러기가 쉽지 않고 (재현의 어려움), 항상 위쪽에 있는 코드부터 실행시켜야 하기 때문에 가끔 실행 순서가 꼬일 수 있는 문제가 발생합니다.
- 코드 재현의 어려움
- 실행순서의 꼬임 발생
때문에 협업을 할 때나 모델을 배포할 때는 OOP + Module을 이용하여 프로젝트를 여러 기능으로 쪼개어 관리합니다.
사실 협업을 할 때도 Notebook을 사용하면 좀 애매해지는 게, ipynb 파일은 한 파일 내에서 모든 게 대부분 이루어지기 때문에 여러명이 동시에 달려들어 프로젝트를 관리하기가 매우 까다롭습니다. (누구는 EDA 누구는 전처리, 누구는 모델링... 이런식으로 해도 되긴 하지만 나중에 합칠 때 변수명이나 로직면에서 굉장히 꼬일 수가 있죠)
그러나 OOP + Module화를 시키면 각 기능별로 분리 가능하기 때문에 협업에도 더 편합니다. 각자 한 파일만 각잡고 코딩하면 되고 Git Hub로 전체 프로젝트 관리 하기도 더 용이하기 때문이죠!
그러기 때문에 처음 배울 때는 Jupyter Notebook 이나 Colab에서 연습을 한 다음에 어느 정도 Process에 감이 잡혔다 싶으면 OOP와 Module화를 시키는 게 유지보수 면에서도 더 유리합니다.
일단 VSCODE에 들어가셔서 Extension을 하나 깔아줍니다.
VSCODE Extension 가셔서 Remote - SSH 이라고 검색하면 나오는 이 친구를 까시면 됩니다.
NGROK을 이용하는 방법도 있지만, 더 쉽게 사용가능하게 해주는 cloudflare 방식을 사용하겠습니다.
1. 코랩 들어가기
Colab에 연결해서 GPU를 쓰는 게 목적이니 일단 Colab에 들어가야겠죠?
2. GPU 설정
들어가셔서 일단 런타임 유형을 GPU로 설정해줍니다.
3. Cloudflare 바이너리 파일 설치
다운로드
위 링크에 들어가시면 아래와 같은 화면이 뜰 텐데요
여기서 본인의 환경에 맞는 걸 설치해주시면 됩니다. 대부분 64bit로 해주시면 될 겁니다.
설치하신 경로를 잘 기억해주세요!
4. SSH 접속 코드 입력
그러고 나서 아래에 있는 코드들을 전부 입력해줍니다.
{}는 빼고 입력하시면 됩니다.
!pip install colab_ssh --upgrade
from colab_ssh import launch_ssh_cloudflared, init_git_cloudflared
launch_ssh_cloudflared(password = {'패스워드 적으세여'})
여기까지 하시면 코드의 출력 셀에 이런 창이 뜰 겁니다.
그럼 오른쪽 칸에 있는 VSCode Remote SSH에 이상꾸리하게 적힌 걸 Copy 해줍니다.
5. VSCode 열기
VSCode에 들어가서 Ctrl + Shift + P를 누르시면 이런 화면이 뜹니다.
검색창에다가 remote-ssh를 입력 해주시고 먼저
Remote-SSH: Open SSH Configureation File...를 눌러줍니다.
두 개가 뜰 텐데, 위쪽에 경로\.ssh\config 에 들어가줍니다.
들어가시면 말 그대로 config를 넣으실 수 있습니다. 아래의 코드에서 경로만 잘 수정해서 넣도록 합니다.
{}는 빼고 입력하시면 됩니다.
Host *.trycloudflare.com
HostName %h
User root
Port 22
ProxyCommand {Cloudflare가 있는 경로} access ssh --hostname %h
Ctrl + S 로 저장해주신 다음에 다시 Ctrl + Shift + P로 검색창을 열고 똑같이 remote-ssh라고 검색해줍니다.
그런 다음 이번에는 Connect to Host...를 눌러줍니다
여기에 아까 Colab에서 복사한 알 수 없는 말을 붙여넣기 해줍니다.
그러고 Enter를 눌러주시면 또 다른 VSCode를 띄워줍니다.
6. 모든 준비는 끝났다.
저는 화면이 이미 여러번 입력한 상태라 뜨진 않지만 들어가자마자
Linux
Window
Mac
중에 하나를 고르라고 합니다.
본인OS를 고르는 게 아닙니다. 일단 Linux를 선택해줍니다.
그 다음으로는 엑세스를 할 건지를 물어봅니다.
당연하게도 예를 눌러줍니다.
그런 다음에야 이제 비밀번호를 입력하는 창이 뜹니다.
아까 코랩에서 설정해놨던 비밀번호를 입력해줍니다.
참고로 비밀번호가 틀리거나 아까 config에서 오타가 있거나 경로를 잘못 설정하신 경우 이런 오류창이 뜹니다.
잘 입력하시면 Terminal이 아래 사진처럼 바뀌면서 Colab이 주는 컴퓨터에 정상적으로 접속 됩니다.
GPU를 잘 받아왔는지 확인하기 위해 Colab과 VSCode에서 nvidia-smi를 입력해보겠습니다.
정상적으로 Colab의 Tesla P-100을 받아온 것을 확인하실 수 있습니다.
이제 VSCode에서 GPU를 실행시킬 수 있습니다!
할만하죠? 오타 안 나게 조심하세요~~