본문 바로가기
Development/for Machine Learning

가장 효율적인 ML 프로젝트 개발 환경 / Sublime과 Pycharm

by 곽동현 이스텔리앙 2020. 1. 17.

절대 규칙

1. 무조건 editor가 아니라 IDE를 사용해야한다.

pycharm을 쓸 때랑 sublimetext를 사용할 때의 생산성 차이는 압도적이다.(특히 refactor)


1. 무조건 local에서 바로 실행할 수 있어야한다.

즉시 응답하는 빠른 run이 가능해야만 손쉽게 디버깅을 할 수 있다. local run은 단순히 pytorch cpu에서 실행해도 전혀 상관이 없다.

서버에서 실행해야하는 경우도 가능하면 toy환경을 local로 가져오는 것이 좋고, 그마저도 힘들다면 sftp를 이용해서 remote의 코드를 pycharm으로 수정하도록 한다.


1. 내가 사용하는 환경을 docker로 한번 감싼다.

그래야 다른 환경에 쉽게 옮길 수 있다. docker commit을 이용해서 현재 환경을 복사하면 되기 때문이다.


1. GPU에서 실험하는 경우 docker로 띄운다.






개발도구의 기본 개념

IDE

Text editor + compiler + debugger

TextEditor

메모장의 매우 고급화된 버젼

Sublime Text 3

Text Editor라서 언어에 상관 없이 가볍게 코딩이 가능

Sublime Text 3를 IDE로 바꾸기

submlimet text 3는 원래 단순 text editor이지만, anaconda 같은 package들을 설치해서, IDE로 사용하는

Sublime Text 3 Hot key

  • ctrl + `: 서브라임 텍스트 콘솔창 켜기(특정 명령어를 실행시킬 수도 있고, 어떤 작업을 하는지 그 과정을 모니터링할 수도 있음
  • ctrl + shift + p: general command 창
  • ctrl + p : go to anywhere
  • ctrl+alt+d : documnet 보기
  • ctrl + d : 같은 변수 선택하기
  • ctrl+alt+f : usage 찾기
  • ctrl+shift+space: 선택영역 좌우로 늘리기
  • ctrl + p : go to anywhere
  • ctrl+alt+d : document 보기

Sublime Text 3 에서 커스텀 단축키 만들기

  • ctrl+`을 눌러서 console창을 키고, sublime.log_commands(True)을 입력하여 로깅옵션을 킨다음 특정 행동을 취해서 command_name을 알아내고, 이를 key binding에 등록

Sublime Text3 에서 Github Markdown Preview 사용하기

  • 그대로 따라하면됨. 주의사항은 enable_autoreload=true로 했을 때, ".md" 파일만 markdown으로 인식되어, 저장시 자동 빌드가 된다는 점임.

그래서 다음과 같이 수정할 것 "markdown_filetypes": [".txt", ".md", ".markdown", ".mdown"],

그리고 추가로 LiveReload가 항상 enable되어있게 하려면 다음을 setting에 추가. { "enabled_plugins": [ "SimpleReloadPlugin", "SimpleRefresh" ] }

https://github.com/revolunet/sublimetext-markdown-preview

Window Subsystem Linux와 sublime text 3연결하기

아래의 여러 링크들을 참조하여 조사해보았으나, 아직까지 매끄럽고 쉽게 연결할 수 있는 방법은 없는 것으로 확인된다. 게다가 pytorch gpu까지 고려하면, anaconda를 설치하는 것이 더 나은 방법으로 보인다.

  1. https://github.com/Microsoft/vscode-python/issues/67
  2. https://github.com/Microsoft/WSL/issues/2760
  3. https://stackoverflow.com/questions/37000166/getting-pycharm-to-recognize-python-on-the-windows-linux-subsystem-bash-on-wind
  4. https://devblogs.microsoft.com/commandline/share-environment-vars-between-wsl-and-windows/
  5. https://gist.github.com/Voronoff/059c50f9fd354386c305c55af1f3a61f#install-and-set-up-python-to-work-with-vscode-and-wsl
  6. https://stackoverflow.com/questions/53731023/sublimetext-integration-with-windows-subsystem-for-linux-wsl-bash

Windows 10에서 python AI 개발 환경 구축하기

일단 WSL만으로는 부족하다. Sublime text 3나 pycharm을 IDE로써 사용하려면 python binary가 연결되어야하는데, WSL에 깔려있는 python으로는 아직 연결이 안되므로 anaconda가 필요하다. 또한 pytorch를 gpu에서 돌릴려면 마찬가지로 WSL로는 불가능하고, 이 역시 anaconda가 필요하다.

윈도우 용 Anaconda 설치

링크에서 다운받아 설치한다. Anaconda에는 기본으로 jupyter도 설치되어 있고, wsl과 다른 ananconda prompt가 있다. 이것을 사용하면 된다. Anaconda를 설치하고 powershell prompt를 사용하면 기본 prompt보다 더 많은 기능이 지원되고, conda가 이미 설치되어 있어 바로 사용 가능하여 매우 편리하다.

Docker 설치

Sublime text 3-anaconda 패키지 설치하기

링크에서 다운받아 설치한다. 링크를 참조하여 ananconda가 사용할 python interpreter의 경로를 지정하고, 이를 build system에 등록한다.

그리고 sublime text의 build 옵션을 수정하여 anaconda의 python.exe를 가리키도록 한다. 링크 참조(Build System-New build system-"cmd":["C:\\ProgramData\\Anaconda3\\python.exe", "-u", "$file"] 추가하기. 그러면 해당 build 옵션은 다음 Sublime Text\\Data\\Packages\\User 경로 에 Py37Anaconda.sublime-build 이런 식으로 저장된다.)

설정이 완료되면, ctrl+B를 눌러 빌드를 할 수 있고 IDE에서 사용가능한 여러 기능들이 가능해진다.

Preferences-Package Setting-

{
	"python_interpreter": "C:\\\\\\\\ProgramData\\\\\\\\Anaconda3\\\\\\\\python.exe",
	"auto_python_builder_enabled": true,
}
  • 다양한 anaconda 옵션 설정하기 링크를 참조하면 내 입맞에 맞는 다양한 옵션을 설정할 수 있다.
{
		"python_interpreter": "C:\\\\ProgramData\\\\Anaconda3\\\\python.exe",
    "auto_python_builder_enabled": false,

    "hide_snippets_on_completion":true,

    // document
    "enable_docstrings_tooltip": true,
    "display_signatures": true,
    "enable_signatures_tooltip":true,
    "merge_signatures_and_doc":true,
    /*
        Sets the linting behaviour for anaconda:

        "always" - Linting works always even while you are writing (in the background)
        "load-save" - Linting works in file load and save only
        "save-only" - Linting works in file save only
    */
    "anaconda_linting": true,
    "anaconda_linting_behaviour": "always",
    "anaconda_linter_persistent": true,
    "anaconda_linter_show_errors_on_save":false,
    "anaconda_linter_phantoms":false, // show inline error 

    "pep8": false,
    "pep8_rcfile": false,
    "pep8_error_levels": {"E": "W", "W": "V", "V": "V"},
    "pep8_ignore":
        [
            "E309"
        ],
    "pep257": false,
    "pep257_ignore":
    [
        "D203",
        "D209"
    ],

    /*
        If 'outline' (default), anaconda will outline error lines.
        If 'fill', anaconda will fill the lines.
        If 'solid_underline', anaconda will draw a solid underline below regions.
        If 'stippled_underline', anaconda will draw a stippled underline below regions.
        If 'squiggly_underline', anaconda will draw a squiggly underline below regions.
        If 'none', anaconda will not draw anything on error lines.
    */

    "anaconda_linter_mark_style": "squiggly_underline",
    "anaconda_linter_underlines": false, // redundant with above option

    // If true, anaconda draws gutter marks on line with errors.
    "anaconda_gutter_marks": true,
    "anaconda_gutter_theme": "hard", // 'basic', 'alpha', 'bright', 'dark', 'hard', "retina", 'simple'
}

Pycharm for anaconda 설치하기

만약 sublime이 아니라 pycharm을 원한다면, 링크에서 다운받아 설치한다.

Pytorch for anaconda 설치하기

  1. 설치방법 링크
  2. Pytorch 공식 다운로드 방법

예를 들어 pytorch cpu버전을 설치한다면 Anaconda powershell prompt을 관리자 권한으로 실행한 다음을 입력한다.

conda install pytorch-cpu torchvision-cpu -c pytorch

PyCharm

역시 IDE의 압승이다.. 서브라임 텍스트가 아무리 날고 기어봤자 IDE의 매우 강력한 기능은 절대 이길 수가 없다.

단축키

setting에가면, sublime text 키맵을 사용하는 옵션이 있음. 매우 편리함

  • 자동부분선택: Ctrl + Shift + A
  • 자동완성 or Hint 보기: Ctrl + Space
        Hint window의 크기 조절이 가능하고, 이미 완성된 함수에도 ctrl + space를 누르면 함수의 인자를 볼 수 있다
  • 코드 접기/펴기 ctrl + > : 접기/펴기
  • 함수 정의 살펴보기: Ctrl + Shift + I
  • Active window tool 열기: Alt + 숫자
  • Active window tool 닫기: Shift + ESC

좋은 화면 구성

Split vertial을 통해서 좌우로 코드를 나누고, 왼쪽의 active tool window는 기본을 view mode-undock으로 바꾸어 놓는다.



import _ssl 에러 해결하기

해결 방법은 pycharm의 환경설정에 들어가서, 환경 변수에 다음 세가지 경로를 PATH variable에 추가하는 것이다.

C:\Python\Anaconda3; C:\Python\Anaconda3\Scripts; C:\Python\Anaconda3\Library\bin;

Python 3.7 anaconda environment - import _ssl DLL load fail error


댓글0