Google colab 패키지 영구 설치(재설치 안하기)

반응형
    반응형

    코랩은 재시작할때마다 설정이나 설치목록이 리셋되서 조금 아쉽습니다.
    사용자에게 서버를 빌려주는 것이기에 당연하지만 매번 설치하는 시간을 들여야해 번거롭습니다. 불편함을 해소하고자 패키지 영구적인 설치방법을 소개할까 합니다. 아래 방법으로 실행한다면 적어도 설치 시간을 절약할 수 있습니다.

    Google colab 패키지 영구 설치

    방법에 대한 개요를 얘기하면 구글 계정을 생성하면 구글 드라이브에서 기본적으로 15GB를 제공받게 됩니다. 이 공간은 적어도 개인의 공간이니 드라이브에 패키지를 설치를 해놓을 수 있게 심볼릭 링크로 가상 path를 만들어놓아 거기에 설치를 하게 하는 방법입니다. 하지만 Google colab은 설정 리셋이 되니 매번 해당 코드를 발동시킨 후 작업을 시작하면 됩니다.

    구글 드라이브를 마운트한 후 드라이브에 /contnet/packages 라는 심볼릭 링크를 생성하고 path 경로를 지정합니다.
    다음을 입력합니다.

    import os, sys
    from google.colab import drive
    drive.mount('/content/drive')
    
    pack_path = '/content/packages'
    os.mkdir(pack_path)
    os.symlink('/content/drive/MyDrive/colab Notebooks/pack_env',pack_path)
    sys.path.insert(0,pack_path)

    그러면 구글 드라이브에 연결하겠냐는 질문이 나옵니다.
    연결을 눌러 드라이브 마운트를 합니다.
    저는 이미 해놔서 마운트가 이미 되었다고 나오네요.

    완성한겁니다. 위의 코드를 Colab 재시작할때마다 실행시켜놓으면 설치없이 사용할 수 있습니다.

     

    이제 패키지 설치를 해보겠습니다. 요즘 자연어를 하고 있어서 한국어 자연어 패키지인 konlpy를 설치해보겠습니다. 경로가 지정됐으니 그 곳으로 설치되게 해야합니다.
    target을 설정해 설치를 합니다.

    !pip install --target=$pack_path konlpy

    konlpy 설치

    실제로 koNLPy에서 제공하는 튜토리얼 예제를 그대로 실행시켜보면 잘 되는 것을 볼 수 있습니다.

    konlpy 실행

     

    다시 시작시 되는지 확인

    지금 하는 작업은 goolge colab에게 혼란을 주는 작업 중에 하나이므로 불안정한 부분이 많을 겁니다. 하지만 매번 반복하는 설치시간을 줄일려면 어쩔수없습니다. 잘 안 되는 작업이므로 여러가지를 확인해봐야합니다.

    symlink 실행이 제일 먼저

    무조건 symlink를 설정해놓아야 합니다.
    colab 재시작을 했다면 앞에서 보여준 코드를 실행시킨 후 작업을 실시합니다.

    import os, sys
    from google.colab import drive
    drive.mount('/content/drive')
    
    pack_path = '/content/packages'
    os.mkdir(pack_path)
    os.symlink('/content/drive/MyDrive/colab Notebooks/pack_env',pack_path)
    sys.path.insert(0,pack_path)

    지정한 구글 드라이브 폴더에 설치파일 있는지 확인

    일단 내가 지정한 구글 드라이브 경로에 설치가 되었는지 확인을 해봅니다. 설치가 되었다면 반드시 거기에 설치한 흔적이 나타나야합니다.
    특히 os.mkdir을 생략하면 해당경로를 폴더로 인식하는게 아니라 파일로 인식해서 아무것도 담지 않는 현상이 발생해 설치가 안됩니다.
    분명 설치는 했는데 구글 드라이브 해당폴더에 설치 흔적이 없다면 고생만 한 겁니다.
    반드시 구글 드라이브에 설치파일이 있어야 합니다.

    Colab Notebook 폴더의 하위폴더로 해놓으면 안 되는 경우가 있습니다.
    그렇기 때문에 Colab Notebook에 그냥 저장을 하던지 아니면 새로운 폴더를 만들되 메모장 하나 넣어놓고 symlink가 잘 되고 있는지 확인을 하고 시작을 합니다.

     

    오류가 나더라도 일단 구동을 해본다.

    단일 설치가 가능한 간단한 패키지인 경우는 큰 문제 없이 잘 됩니다.
    그렇지만 규모가 큰 패키지인 경우 여러가지 문제들이 발생할 수 있습니다. 대표적인게 뭐가 이미 import 되었다고 하는 오류입니다.
    다음과 같이 나옵니다.

    'WARNING: The following packages were previously imported in this runtime:
    [numpy]
    You must restart the runtime in order to use newly installed versions.'

    무시하고 쓸 수는 있습니다. 그냥 찜찜할 뿐..
    만약 안된다면 해당 폴더를 다 지웠다가 다시 깔아보는 수밖에 없습니다.
    아무래도 colab에 억지로 패키지를 우겨넣는거라 막 좋은 건 아닙니다.

    설치가 안되어 있는것처럼 보인다.

    마지막으로 colab에서는 설치가 안 됐다고 인식하기 때문에 밑줄이 쳐져있습니다.


    무시하고 해봅니다. 구글 드라이브에 설치한 파일들이 있다면 됩니다.
    다만, 링크를 걸쳐서 실행을 하는것이라 코드실행이 오래걸릴 수 있습니다. 제 경우는 import 하는데 42초정도 걸렸습니다. 처음 실행시에만 그런것이고 그 다음부터는 잘 됩니다.
    속도는 매번 다르지만 패키지가 큰 규모일수록 느려지는 것 같습니다. 큰 규모인경우 설치가 더 빠를수도 있습니다.

    얼마나 속도가 나오는지 측정해봐서 더 나은 것으로 하는 걸 추천합니다.

     

    마치며

    조금 편할려고 하는 작업같지만 제 입장에선 알고있으면 여러 응용을 할 수 있을 것 같아 한번 시도해보았습니다.영구설치가 편하기는 하지만 규모가 큰 패키지인 경우는 import 하는데 더 오래걸리수도 있습니다. 물론 처음만 그럴테지만요. 좋은 점은 다른 파일에서도 symlink를 걸어버리면 인식하기 때문에 편한건 있습니다. 일일히 pip install 안쓰고 설정해놓은 symlink 코드만 가져오면 되기에 드라이브 연동만 잘 해놓은다면 설치과정이 까다로운 패키지를 설치없이 쓸 수 있을 겁니다.

     

    관련 포스팅

    [Google colab] 구글드라이브 연동해 데이터 저장, 불러오기

    프로그램 없이 코딩하기(Google Colab)

    댓글

    Designed by JB FACTORY

    ....