Search
Duplicate

효율적인 ML 프로젝트 개발 환경에 대한 고찰

Created
5/31/2021, 7:34:00 AM
Tags
Empty

생산성을 높이기 위한 필수 규칙

1.
무조건 editor가 아닌 IDE를 사용해야한다. pycharm을 쓸 때랑 sublimetext를 사용할 때의 생산성 차이는 압도적이다. (특히 refactor 기능)
2.
무조건 local에서 바로 실행할 수 있어야한다. 즉시 응답하는 빠른 run이 가능해야만 손쉽게 디버깅을 할 수 있다. local run은 단순히 pytorch cpu에서 실행해도 전혀 상관이 없다. 서버에서 실행해야하는 경우도 가능하면 toy환경을 local로 가져오는 것이 좋고, 그마저도 힘들다면 sftp를 이용해서 remote의 코드를 pycharm으로 수정하도록 한다. 기계학습의 경우 데이터의 아주 일부분이라도 프로젝트에 내장시켜서 local run이 가능하게 해야한다.
3.
개발 환경을 docker로 한 번 감싼다. 그래야 다른 환경에 쉽게 옮길 수 있다. docker commit을 이용해서 현재 환경을 복사하면 되기 때문이다.

개발도구의 기본 개념

IDE(Integrated Development Environment)

Text editor + compiler + debugger가 합쳐진 코딩 전용 프로그램이다. IDE를 사용해야 Refactor기능 등에 있어서 훨씬 편리한 코딩이 가능하다.
ex) PyCharm, VSCode, Visual Studio

TextEditor

메모장의 매우 고급화된 버젼으로 볼 수 있다. 대표적인 예로 아주 기능이 뛰어난 Sublime Text 3라고 할지라도, 기능이 제한적이다.
ex) Sublime Text 3, Notepad ++

Jupyter나 Notepad++의 한계

서버에 있는 python 코딩을 Jupyter로만하다가 한계를 느끼고 PyCharm을 도입하기로 했다. 우선 주피터를 사용해서 웹으로만 코딩을 하면, 찾기 기능이 잘 안되고, 한번에 이름을 못바꾸고, 탭키 사용이 제한적인 등 많은 불편함이 있다.
Notepad++의 경우 직관적이고 쉬운 사용법이 강점이지만 체계적인 프로젝트 관리와 ssh를 직접실행할 수 없는 단점이 있다. 이에 PyCharm의 경우 제대로 설정만 한 번 해놓으면 거의 모든 작업을 다 할수가 있다.

여러 IDE 비교 분석

Atom

자바스크립트 기반이라 좀 느리다. 저사양 컴퓨터에서 속도를 원한다면 서브라임텍스트가 유일하다. 그러나 텍스트 에디터와 IDE사이의 엄청난 기능 장벽은 아무리 서브라임텍스트에 확장프로그램을 설치해도 매워지지 않는다. 결국 느리더라도 pycharm으로 복귀하였다.

PyCharm 유료버전과 무료버전 비교

유료버젼의 경우 가격이 1년에 90달러로 상당히 비싸다. 그리고 유료(Professional)버전을 사용해야만 원격 서버에 있는 파이썬 코딩을 할 수 있기 때문에 반드시 필요하다.
하지만 위의 링크에 들어가보면 학생들은 무료로 사용할수가 있다!(학교 메일로 인증을 해야함)그래서 회원가입을 먼저한다음, 학생메일 인증을 하고, 유료 버전을 다운받아 설치한 뒤 계정을 입력해서 인증을 한다.

속도 이슈

거대한 웹 서버를 제작하는 규모 있는 프로젝트 관리에 적합한 것 같다. 생각보다 너무 기능이 많고 무거우며, 연구용으로 단순히 몇개의 python파일을 수정하는 수준에는 불편한 점이 너무 많다.
그래서 Atom을 써보기로 한다. 그런데 Atom은 웹기반의 브라우저를 개량해서 만든것이라, 저사양 컴퓨터에서는 써보니까 좀 무거운 느낌이 많이 든다... 그래서 다시 Sublime을 시도해본다.
→ 여러 고생 끝에 내린 결론으로, 아무리 무거워도 IDE는 필수이다. PyCharm이 너무 무거워서 느리다면 컴퓨터를 바꾸는게 맞다.
TOP