최영록·2022년 11월 4일
0
post-thumbnail

[Colab] Google Colab (코랩) 재실행 초기화 해결방법

문제

colab은 새로 실행할 때마다 초기화된다.

→ 실행할 때마다 pip 로 설치한 라이브러리 및 패키지를 다시 설치한다..?NO

해결 방법

  1. colab에 구글 드라이브를 마운트 한다.
  2. 구글 드라이브의 특정 폴더와 colab 의 폴더를 link(연동) 한다(Symbolic link)

Colab에서 실행할 code

# Colab 폴더와 구글드라이브의 폴더 Link 시키기
import os, sys
from google.colab import drive
drive.mount('/content/drive')

my_path = '/content/content_ObjectDetection' # 구글드라이브의 폴더와 연동되는 폴더 경로
save_path = '/content/drive/MyDrive/Colab Notebooks/content_ObjectDetection' # 실제 저장될 경로

os.symlink(save_path, my_path) # 두 폴더를 링크 시켜주는 명령어
sys.path.insert(0, my_path) # 시스템 환경변수에 my_path를 추가

※ 코랩 최상단에 해당 코드를 붙여넣고, 코랩을 재실행하여 초기화 될 때마다 최초 1회 실행시켜주어야 합니다.

라이브러리 설치 방법: 경로 지정하기

  • !pip 설치 시 --target=$my_path 경로 지정
!pip install --target=$my_path cython

wget 원하는 경로에 파일 다운로드 받기

%%shell
cd /content/content_ObjectDetection # 데이터 다운받을 경로로 이동

wget https://www.cis.upenn.edu/~jshi/ped_html/PennFudanPed.zip # 다운로드

unzip PennFudanPed.zip # 압축풀기
  1. 구글코랩의 default 경로(=현재 디렉토리 위치)는 /content 에서 돌아간다.
  • 지금 실행되고 있는 .ipynb 확장자로 된 jupyter notebook 파일이 /content 에 있다고 생각하면 단순하다
  • 리눅스 명령어 !pwd 로 현재 위치를 확인할 수 있다.
  • /content 내에 설치되는 패키지, 학습데이터 등은 런타임을 다시 연결(코랩 재접속, cpu -> gpu로 런타임 유형 변경)시 리셋된다
  • 따라서 /content 하위 폴더인 /content/content_ObjectDetection 을 만들어 사용하고, 이 폴더가 리셋 되더라도 구글 드라이브의 어떤 폴더와 연동되어 백업되게끔 한다.
  1. colab 에 사용할 라이브러리를 내 계정의 구글 드라이브에 저장하기
  • save_path = '/content/drive/MyDrive/Colab Notebooks/content_ObjectDetection'
  • ※구글 드라이브에서 해당 save_path 에 실제로 content_ObjectDetection 폴더를 생성한다
  1. 구글 드라이브의 폴더와 colab의 my_path = '/content/content_ObjectDetection' 폴더를 link 시키기
  • ※colab 에서는 폴더를 직접 생성하지 않는다.
  • 아래 명령어를 통해 실제로 구글드라이브의 save_path 에 존재하는 폴더와 연동되는 my_path 를 생성한다.
  • os.symlink(save_path, my_path): my_path를 save_path와 링크 시킨다.
  • 실제로 저장 되는 곳은 save_path 이지만, 시스템은 my_path에 있는 것 처럼 작동한다.
  1. ※ 따라서 이제부터는 예제 실행에서 모든 기본 경로를 /content/content_ObjectDetection 으로 설정해주어야 한다
  • 명령어 1회 실행: %cd /content/content_ObjectDetection
  • !pwd 로 해당 경로에 접근된 것을 확인할 수 있다.

저의 부족하고 잘못된 지식에 대한 피드백은 언제나 환영합니다.

profile
99년생 코린이입니다. 직접 삽질 해보면서 유용한 것을 올립니다.

0개의 댓글