ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Error] github에 공개된 모델을 돌려보는 법(sh, window multi process error)
    개발 이야기/TIL 2024. 4. 25. 14:37

    최근 캡스톤을 진행하면서 기존에 발표된 모델들을 하나씩 찾아보고, 실행이 필요한 경우 실행하고 있는데...!

    보통 아래와 같이 공개 github이 있는 경우 친절하게 방법들을 설명해두었다. 

    https://github.com/yuqinie98/PatchTST

    문제는 git clone하고까지는 문제없이 진행했지만, sh 명령어가 윈도우에서 가끔 안 먹는 경우가 많아서 ㅎㅎㅎ 

    방법을 간단히 정리할겸 블로그에 글을 쓰게 되었다. 

     

    1. Git clone하기!

    우선 보고자하는 논문의 모델이 공개된 경우 github에 공개된 경우가 많다. 

    해달 repository를 포크 뜬 다음에 git clone 명령어를 통해서 내 로컬에 다운받도록 하자. 

    명령어는 아래와 같다. 

    git clone [해당 repo 링크]

     

    2. Dataset 다운

     dataset의 경우 보통 repository가 아닌 첨부된 구글 드라이브에 업로드 되어있거나, 벤치마크 dataset이 있는 경우 해당 dataset을 처음 쓴 논문의 github링크를 첨부해두는 경우가 많다. 찾아서 다운받고 우리의 모델 폴더에 옮기도록 하자. 

     

    3. requirments.txt 설치

    보통 필요한 프로그램들의 경우 requirments.txt에 모두 작성된 경우가 많다. 

    이때 아래 명령어를 통해 해당 프로그램들을 모두 설치 가능하다. 

    pip install -r requirements.txt

     

    그 전에 보통 가상환경을 만들어두고 이를 설치하도록 하자..! 

    이에 관한 자세한 설명은 생략하지만, 일부 코드를 작성해두었으니 참고하자.

    ** 추가로 gitbash에서 바로 실행하는 것이 마음이 편하다 

    conda deactivate (가상환경 우선 나와주기)
    conda create -n project1 python=3.8
    conda env list 
    conda activate project1
    python -m pip install -r requirements.txt
    code . (vs code로 이동)

     

    이후  vs코드에서는 보통 아래와 같이 한다(이번에는 생략)

    1. source deactivate
    2. conda deactivate (마찬가지로 먼저 모든 가상환경 나오기)
    3. conda activate project1
    4. 과제 혹은 프로젝트 실행하기
    5. 과제 시 python -m pytest (./tests/Part_1) 로 채점 후 python -m pytest --submit 로 과제 제출

    추가로 bash에서 anaconda가 안될때는

    IMPORTANT: You may need to close and restart your shell after running 'conda init'.

     

     아래의 명령어를 쳐보자 

    $ conda init bash
    echo '. ${HOME}/.bash_profile' >> ~/.bashrc

    4. .sh 실행하기 

    git bash에서 바로 sh명령어 실행이 가능하다.

    sh ./scripts/PatchTST/weather.sh

     

    * Python Window에서의 multiprocessing문제발생시

    실행을 했는데...! 두둥 아래와 같은 문제가 발생했다

    RuntimeError:
            An attempt has been made to start a new process before the
            current process has finished its bootstrapping phase.
    
            This probably means that you are not using fork to start your
            child processes and you have forgotten to use the proper idiom
            in the main module:
    
                if __name__ == '__main__':
                    freeze_support()
                    ...
    
            The "freeze_support()" line can be omitted if the program
            is not going to be frozen to produce an executable.

    이는 보통 Window 사용자들 사이에서 나는 에러로, 가상환경 사용시 linux와 window간의 fork 실행시 child process관련 문제로 인해 나타나는 에러인것 같다...(window에서는 fork를 지원하지 않아서 생기는 문제라는데 하 맥 써야하나🤣)

     

     위 문제는 python 버전을 3.7로 업데이트하면 해결가능하다고 알려져있지만, 나의 경우에는 해결되지 않았다.. ㅜㅜㅜ

    그래서  ubuntu 위에서 돌리고 있는 중이다..! 결과가 나오면 다시 글을 업데이트해보겠다 

     

    - ubuntu를 window에서 WSL2를 이용해 세팅하기

    njw1204님의 velog

     노마드 코더의 개발자를 위한 윈도우 셋업 강의

     

    - ubuntu에서 conda를 설치하는 방법

    https://jongsky.tistory.com/21

     

    Ubuntu 22.04에 Anaconda 설치 및 가상환경 세팅

    1. 글을 작성하게 된 계기 새로운 프로젝트를 할 때마다 Anaconda를 설치해서 환경 세팅을 하는 경우가 많다. 매번 구글링해서 설치하곤 하는데 정리해서 새로운 환경에서 시작할 때 참고하고자 한

    jongsky.tistory.com

    (추가로 zsh를 터미널로 쓰는 경우에는 zshrc 파일에 path를 추가해야한다

    https://ieworld.tistory.com/12 의 댓글 확인!)

Designed by Tistory.