Colab은 써야하는데 ipynb는 싫어..

Jeong SeongYun·2022년 8월 22일
1
post-thumbnail

저같이 연구실에 들어가있지도 않고 GPU를 살 돈이 없는 가난한 학부생 입장에선, Google에서 내려주는 Colab GPU가 굉장히 소중한 존재입니다.

근데 DL을 하면서 Dacon이나 Kaggle을 나가서 수상자들의 코드를 보면 .ipynb 파일이 아닌 .py 파일로 파이썬의 OOP 를 적극적으로 활용하여 재현가능성도 높이고, 유지보수에도 좋게 만들어놨습니다.

그럴 때마다 ipynb로 만든 저의 작고 소중한 코드를 보면... 더 작고 소중해지는 제 코드를 발견하긴 합니다.

그래서!!! 오늘은 Colab의 GPU를 로컬 Vscode에서 어떻게 사용 가능한지 알아보겠습니다.

왜 잘 쓰던 ipynb 안 쓰고..?

흔히 ML과 DL을 입문할 땐 Jupyter Notebook을 사용합니다. Ctrl + Enter만 누르면 해당되는 코드의 결과를 바로바로 확인할 수 있기 때문에 처음에 배워서 빠르게 결과를 확인하는 게 중요하거나 프로젝트에서 EDA나 데이터를 구축할 때나 프로젝트의 학습초기단계에서는 Notebook 형식이 사실은 더 유리합니다. 학습과정을 그때그때 바로 확인할 수 있기 때문이죠.

Jupyter를 사용한 예시

문제는 모델을 돌릴 때겠죠. 협업을 할 때나 배포, 공유를 할 때는 Notebok으로 된 파일은 좀 어렵습니다.

다른 사람이 해당 코드를 똑같이 돌려도 동일하게 재현 가능하도록 해야하는데 Notebook으로는 그러기가 쉽지 않고 (재현의 어려움), 항상 위쪽에 있는 코드부터 실행시켜야 하기 때문에 가끔 실행 순서가 꼬일 수 있는 문제가 발생합니다.

  1. 코드 재현의 어려움
  2. 실행순서의 꼬임 발생

때문에 협업을 할 때나 모델을 배포할 때는 OOP + Module을 이용하여 프로젝트를 여러 기능으로 쪼개어 관리합니다.

사실 협업을 할 때도 Notebook을 사용하면 좀 애매해지는 게, ipynb 파일은 한 파일 내에서 모든 게 대부분 이루어지기 때문에 여러명이 동시에 달려들어 프로젝트를 관리하기가 매우 까다롭습니다. (누구는 EDA 누구는 전처리, 누구는 모델링... 이런식으로 해도 되긴 하지만 나중에 합칠 때 변수명이나 로직면에서 굉장히 꼬일 수가 있죠)

그러나 OOP + Module화를 시키면 각 기능별로 분리 가능하기 때문에 협업에도 더 편합니다. 각자 한 파일만 각잡고 코딩하면 되고 Git Hub로 전체 프로젝트 관리 하기도 더 용이하기 때문이죠!

그러기 때문에 처음 배울 때는 Jupyter Notebook 이나 Colab에서 연습을 한 다음에 어느 정도 Process에 감이 잡혔다 싶으면 OOP와 Module화를 시키는 게 유지보수 면에서도 더 유리합니다.

이제 연결 해보자!

Remote - SSH 설치

일단 VSCODE에 들어가셔서 Extension을 하나 깔아줍니다.

VSCODE Extension 가셔서 Remote - SSH 이라고 검색하면 나오는 이 친구를 까시면 됩니다.

NGROK을 이용하는 방법도 있지만, 더 쉽게 사용가능하게 해주는 cloudflare 방식을 사용하겠습니다.

Colab 접속하기

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를 실행시킬 수 있습니다!
할만하죠? 오타 안 나게 조심하세요~~

profile
물어보면 대답해줄 수 있는 데이터쟁이

0개의 댓글