-
[Colab] 패키지 영구 설치하기 & 문제점개발 이야기/TIL 2024. 3. 27. 00:53
최근 colab pro를 사용하고 있는데, 매번 pip를 하다 보니 당연하게도 컴퓨팅 용량을 너무 많이 잡아먹어서..!
찾아보고 작성하게 되었다.
본 내용은 아래 링크를 기반으로 작성하였다.
https://dacon.io/codeshare/4200
Google colab에서 작업하면 정말 좋은 환경을 이용가능하고, pre-built된 library가 일부 있지만, 때로는 몇몇 라이브러리 및 패키지는 !pip install를 이용하여 업그레이드 혹은 설치해줄 필요가 있다.
이를 위해 링크를 연결하여 원본파일을 직접 사용하는 것과 같은 효과를 내는 심볼릭 링크를 이용하여 해당 위치에 패키지를 설치하고 이용해보려고 한다.
심볼릭 링크 연결하기
import os, sys from google.colab import drive drive.mount('/content/drive') my_path = '/content/package' save_path = '/content/drive/MyDrive/Colab Notebooks/package' ## 패키지가 저장될 경로 os.symlink(save_path, my_path) sys.path.insert(0, my_path)
심볼릭 링크는 원본파일을 직접 사용하는 것과 같은 효과를 내는 바로가기와 비슷한 개념으로 이해하면 된다.
이번에는 특정 폴더에 링크를 걸어두어 원본파일을 사용하기 위해 링크를 걸어보겠다.
path에 pip로 파일 설치
!pip install --target=$my_path darts
pip install --target 명령어로 해당 path에 파일을 설치한다
이후 사용법
이후에는 위에서 처음 사용한 코드만 사용하고 이후 import하면 된다..!
import os, sys from google.colab import drive drive.mount('/content/drive') my_path = '/content/package' save_path = '/content/drive/MyDrive/Colab Notebooks/package' ## 패키지가 저장될 경로 os.symlink(save_path, my_path) sys.path.insert(0, my_path)
로... 했는데 에러가 자꾸 난다 ㅜㅜㅜㅜ
그래서 코드르르 조금 수정해서, 해당 symlink에 해당하는 폴더가 이미있으면 삭제하고 만들고 연결하는 식으로 코드를 변경했다.
colab_path = '/content/venv' if os.path.exists(colab_path): os.remove(colab_path) # 파일이면 삭제 # os.rmdir(colab_path) # 디렉토리면 삭제 os.symlink('/content/drive/MyDrive/Colab Notebooks/package', colab_path) sys.path.insert(0,colab_path)
결과는 아래와 같이 잘 된다..!
그러나...! 매우 느리는 import 속도
문제는 바로 속도가 매우 느리다...! pip과정을 없애고 바로 from 혹은 import로 패키지를 읽을때 속도가 매우매우 느리다
그 이유는 구글에서 드라이브에 있는 파일을 읽어오는 과정 자체가 매우 느리기 때문인 것으로 판단된다. 관련한 이슈가 레딧에서도 공유되어서 이를 공유한다.
결론: 그냥 pip 쓰자.. ㅎㅎㅎ & dataset만 필요한 경우 공개 dataset이면 다운-> 드라이브에 옮겨서 읽기가 빠른듯..!
'개발 이야기 > TIL' 카테고리의 다른 글
[Error] sh syntax error: unexpected end of file (0) 2024.04.26 [Error] github에 공개된 모델을 돌려보는 법(sh, window multi process error) (0) 2024.04.25 [Pandas] Stat series를 dataframe으로 바꾸는법 (0) 2024.03.10 LSTM(Long short term memory) (0) 2023.08.07 RNN(recurrent neural network) (0) 2023.08.07