딥러닝 서버 구축 및 PyCharm에서의 개발환경 세팅을 위해 거쳤던 과정들을 정리하고자 한다. 목차는 다음과 같다
2. PyCharm에서 서버 환경 접속 및 세팅
1번 글대로 환경을 구축하고 있었다면 다음과 같이 2개의 terminal이 띄워져있을 것입니다.
① Container를 실행시킨 terminal (서버)
② 실행중인 Container에 접속한 terminal (클라이언트)
②를 실행하는 유저 머신에서 PyCharm 개발환경 세팅하는 부분을 설명드리겠습니다.
2. PyCharm에서의 서버 환경 접속 및 세팅
(1) PyCharm 개발 환경 세팅
PyCharm은 VSCode 처럼 서버 환경에 직접 접속하는 것이 아니라 로컬 개발환경에 폴더를 따로 만들어 서버 폴더의 내용과 동기화시킵니다.
I. 프로젝트 생성
PyCharm 실행 후 New Project를 생성합니다. 그리고 로컬 작업환경을 지정해줍니다(귀찮으면 기본값으로 설정하면 됩니다).
II. Container에 SSH 연결
프로젝트 생성 후 File - Settings - Build,Execution,Deployment - Deployment에 들어가줍니다. 그러면 서버 연결을 위한 화면이 뜹니다.
오른쪽 Connection 항목에서 ssh 연결을 해줍니다
- SSH configuration 항목 오른쪽 ... 버튼 클릭
- + 버튼 누르고 실행중인 Container가 떠있는 서버 주소랑 port 번호(ex. 7001)을 입력하고 test connection 후 ok를 눌러줍니다
- Root path는 서버의 root 경로를 말하며 /으로 지정해두면 tools - Deployment - browse remote host에서 다른 경로도 함께 볼 수 있습니다
III. 작업 폴더 Mapping 설정
PyCharm의 작업 경로와 서버의 작업 경로를 동기화시키기 위한 작업입니다. SSH 연결을 위한 Connection 버튼 옆 Mapping 항목을 눌러줍니다.
Deployment path가 헷갈릴텐데 이전 글에서 Container를 띄울 때 지정했던 target 경로로 지정해두시면 됩니다.
- Container mount를 target=/root/deeplearning으로 설정했다면 Deployment path에서도 /root/deeplearning으로 지정
IV. 서버 파일 내려받기
Tools - Deployment - Download from을 누르고 Choose server에서 뜨는 목록 중 Container가 떠있는 서버를 누릅니다. 그러면 아래와 같이 로컬환경에 Mapping에서 지정해줬던 폴더의 모든 파일이 받아집니다.
V. Remote Interpreter 설정
PyCharm은 로컬의 파일들을 서버환경에서 실행시킬 수 있습니다. 이를 Remote Interpreter라고 하며 File - Setting - Project - Python Interpreter에서 오른쪽 톱니바퀴를 선택하고 add를 눌러줍니다.
이때 새로운 서버 환경을 세팅할 수도 있지만, 저희는 위에서 container의 ssh 연결을 하나 등록해놨기 때문에 이를 바로 사용할 수 있습니다.
오른쪽 ... 박스를 누르면 II에서 봤던 ssh configuration 화면이 뜨며, 여기서 container를 연결했던 ssh 항목을 선택하고 test connection 해준다음 ok를 눌러줍니다.
그 다음 해당 Container에서의 python interpreter를 설정하는 화면이 나옵니다. 먼저 사전에 ①의 terminal에서 python 경로를 확인해줍니다. 본 글에서 사용한 PyTorch 이미지는 conda 라이브러리에 설치되어 있습니다.
which python
>>> /opt/conda/bin/python
그리고 Interperter에서 해당 경로를 찾아가 python 버전을 선택해줍니다.(우리의 이미지는 python3.7 사용중). 그리고 Finish를 눌러주면 interpreter 설정이 완료되며 오른쪽 아래에서 remote python을 기반으로 하고 있는 것을 확인할 수 있습니다.
Interpreter 설정이 완료되면 이렇게 module들의 빨간줄이 사라집니다.
(2) Container SSH 세팅
험난한 과정이었지만 이제 마지막입니다.
앞서 말씀드린 것 처럼 ①(서버)에서 멀쩡히 실행되는 python이 ②(클라이언트)에서 접속하면 python command not found이라고 뜨며 안되는 경우가 발생할 수 있습니다. 이는 경로 문제로 보이며 아래와 같이 Python 경로를 환경변수에 추가해주면 실행이 잘 되는 것을 확인할 수 있습니다.
*Root 계정에서의 Python 경로 설정*
같은 Container에 같은 root 계정으로 접속했는데 왜 안되는지 이유는 아직 파악 못했지만..! 해결방법이 있습니다.
먼저 ①에서 파이썬 경로를 찾아줍니다. 우리가 설치한 PyTorch 이미지는 conda 경로에 설치되어 있습니다.
which python
>>> /opt/conda/bin/python
이후 ②에 접속해서 Python 경로를 설정해줍니다
ln -s /opt/conda/bin/python3.7 /usr/bin/python
export PATH=$PATH:/opt/conda/bin
이 세팅을 한 이유는 별도의 terminal을 띄우지 않고 PyCharm에서 SSH Session을 띄우기 위함입니다..! Tools - Start SSH Session을 누르면 PyCharm 화면 아래에 terminal이 새로 뜹니다.
위와 같이 환경 변수를 추가하면 Python이 잘 실행되는 것을 확인할 수 있습니다.
'개발' 카테고리의 다른 글
PyCharm 디버깅 세션 실행 방법 (0) | 2021.02.10 |
---|---|
Docker Container 중지 없이 빠져나오기 (0) | 2021.02.09 |
딥러닝 개발환경 세팅기(Docker, PyCharm) (1) (2) | 2021.02.09 |
Docker 관련 명령어 정리 (0) | 2020.06.05 |
tensorflow GPU 확인 방법 (0) | 2020.06.05 |