Better late than Never

Pycharm 원격 서버 연결하기

IT기술

이 글은 Pycharm IDE에서 "Run on remote server" 기능을 사용하기 위해 설정해야 할 항목들을 정리하였다.


Pycharm Professional 버전은 "Run on remote server"기능을 제공하는데 한마디로 로컬(예: 개인PC, Windows)에서 코드를 작성하고 원격 서버(예: 딥러닝서버, Ubuntu)에서 해당 코드를 실행하는 기능이다.


이 기능을 이용하면 원격 서버에 Pycharm을 설치하지 않아도 Pycharm의 강력한 기능(예: 디버깅 등)들을 사용할 수 있다! 


개인적으로 딥러닝과 같은 복잡한 파이썬 코드를 실행할 때 꼭 필요한 기능이라 생각한다



목차


1. Remote Interpreter 설정하기


2. Remote Host 경로 지정하기


3. GPU 실행을 위한 환경변수 설정하기





1. Remote Interpreter 설정하기


로컬에서 작성한 코드를 서버에서 실행하기 위해 서버에 설치된 파이썬 Interpreter를 지정해야 한다.


  • Pycharm에서 새 프로젝트를 생성한다. 

Menu -> File -> New Project


본인은 D:\py-study 경로에 "py-study" 프로젝트를 생성하였다.



  • Project Interpreter 설정 창 열기

Menu -> File -> Settings -> Project -> Project Interpreter


  • Remote Interpreter 연결하기

톱날버튼 클릭 후 -> Add Remote -> Deployment configuration 더보기


Remote Interpreter를 연결하기 위해 우선 원격 서버를 추가해야 한다.

Deployment 설정 창의 왼쪽 상단에서 + 버튼 클릭

서버명을 입력하고 Secure Shell을 이용할 경우 서버 Type은 SFTP로 설정한다.




원격 서버의 접속정보를 입력한다. (IP주소, 사용자명, 비밀번호)

Save password 체크해두면 접속 시 비밀번호를 입력하지 않아도 된다.

* Root path는 사용자의 Home 디렉터리를 지정해준다. (접속정보가 정확할 경우 Autodetect 클릭해도 됨)


접속정보 입력 후 OK 버튼 클릭




Deployment 서버를 생성하면 다음 대화창이 뜬다 


Create 버튼을 클릭하여 Deployment 서버정보를 IDE 설정에 저장한다.




Deployment configuration이 "Copy of project-level server xxx"로 바뀐다!


이제 원격 서버의 파이썬 Interpreter 경로를 지정해준다.


Python interpreter path 입력 창에 서버에 설치된 파이썬 Interpreter 위치를 입력한다.


파이썬 위치는 Anaconda, virtualenv 등 사용하는 개발환경에 따라 다르니 잘 확인하고 입력한다. 


파이썬 위치를 모를 경우 원격 서버에서 "which python"을 실행하면 확인 가능하다.



여기까지 문제없이 설정해주면 원격 Interpreter 연결 과정이 끝난다.


원격 Interpreter가 제대로 연결되었는지 확인하는 방법은 Project Interpreter로 방금 생성한 원격 Interpreter를 사용할 경우 다음 그림처럼 원격 Interpreter에 설치된 파이썬 패키지 리스트가 보인다!






2. Remote Host 경로 지정하기


이어서 로컬에서 작성한 파이썬 코드를 원격 서버에 업로드하기 위해 Remote Host 경로를 지정한다.



Remote Host 브라우저 창 열기

Menu -> Tools -> Deployment -> Browse Remote Host



* 로컬에서 작성한 코드를 원격 서버에 업로드할 때 디렉터리 위치를 지정해야 한다.

(개인적으로 이 부분이 헷갈렸다.)

 

Remote Host 창에서 Deployment 서버를 설정하기 위해 더보기 버튼을 클릭한다.

Mappings 탭에서 Deployment path on server 입력창에 업로드 경로를 입력한다.


본인은 /sources/py-study 경로를 사용했는데 이때 로컬 파일은 $HOME/sources/py-study로 업로드 된다.

$HOME은 Connection 탭에서 입력한 Root path에 해당된다 (앞에서 /home/hkh 로 입력함)

(즉 로컬에서 작성한 파일은 원격 서버의 /home/hkh/sources/py-study로 업로드 된다.)



마지막으로 Pycharm의 파일 자동업로드 기능을 사용하기 위해

방금 설정한 Deployment 서버를 "기본 서버로 사용"을 설정한다.

기본 서버로 설정된 Deployment 서버는 Bold체로 변한다.




여기까지 설정해주면 코드를 원격 서버에서 실행하기 위한 모든 설정이 끝난다.


다음은 파일 업로드 방법과 자동 업로드 방법을 설명한다.


로컬파일 서버로 업로드하기



자동 업로드 기능을 사용하면 코드 수정 시 파일이 원격 서버로 자동 업로드(동기화) 된다!


자동 업로드 기능 사용하기



로컬에서 작성한 코드가 원격 서버에 제대로 업로드 되었는지 확인한다.






3. GPU 실행을 위한 환경변수 설정하기


Tensorflow, Theano 등 딥러닝 Framework를 사용하기 위하여 CUDA 라이브러리 위치를 환경변수로 지정해야 한다.

Pycharm에서 원격 서버로 코드를 실행할 경우 리눅스에서 설정한 사용자 환경변수가 자동으로 연결되지 않는다.

따라서 다음과 같이 추가 설정이 필요하다.


실행할 파일 우클릭 -> Edit Configuration -> Environment variables -> 더보기 클릭




LD_LIBRARY_PATH 환경변수 추가, 

* 설치된 CUDA 위치에 따라 조금 다를 수 있음




여기까지 모든 설정이 끝나고 아래 첨부파일(혹은 코드를)을 로컬 Pycharm 프로젝트로 복사하여 실행한다.

다음과 같이 Device mapping에 GPU:0 -> device: 0 와 유사한 메시지를 확인하면 

로컬에서 작성한 GPU를 이용한 파이썬 코드가 원격 서버에서 올바르게 실행되는 것이다.


이 글에서는 Tensorflow를 사용했지만 Theano, PyTorch 등 기타 Framework도 비슷한 방법으로 확인할 수 있다.






hello-tf.py