개발

[개발] 외부 원격 접속을 위한 Jupyter Notebook Server 띄우기

성민석 2023. 7. 16. 15:48

원격에서 Jupyter Notebook 접속을 하다보면, 각 가상환경에 따른 Server가 필요하기 마련입니다.

예를 들면, PyTorch와 TensorFlow를 사용하는 환경이라고 가정해봅시다. 일반적으로 두 Framework를 같은 가상환경에 같이 실행시키진 않습니다. 같은 가상환경에서 한꺼번에 돌아가게 할 수 있겠지만 Dependency 문제를 감당할 수 없을 겁니다.

 

이러한 복수의 Jupyter Server를 원격 접속을 하기 위해선 백그라운드에서 계속 돌고 있어줘야하는데, 많은 경우 nohup을 이용하거나 tmux를 이용합니다. 그렇지 않으면 원격 접속이 힘들겁니다. (물론 원격 접속해서 직접 틀어둘 수 있는 방법도 있을 수 있겠지만, Linux를 사용한다면 그렇게 하진 않을테니...)

 

아래는 제가 원격 접속시 Jupyter Notebook Server를 틀어두는 스크립트 예시를 넣어뒀습니다. 아래 커맨드라인을 run_jupyter_server.sh와 같은 형식으로 만들어두고 사용하시면 됩니다.

 

nohup을 이용한 방법

nohup 사용법은 다른 블로그 포스팅에서 많이 다루고 있으니, 여기선 핵심만 담아두겠습니다.

#!/bin/bash
conda activate pytorch && nohup jupyter notebook --ip=* --port=8888 > log8888.out &
conda activate tensorflow && nohup jupyter notebook --ip=* --port=8889 > log8889.out &

 

tmux를 이용한 방법

tmux 사용법은 다른 블로그 포스팅에서 많이 다루고 있으니, 여기선 핵심만 담아두겠습니다.

#!/bin/bash
# 첫번째 세션에 대한 서버
tmux new-session -d -s jupyter-pytorch
tmux send-keys "conda activate pytorch" C-m
tmux send-keys "jupyter notebook --ip=* --port 8888" C-m

# 두번째 세션에 대한 서버 
tmux new-session -d -s jupyter-tensorflow
tmux send-keys "conda activate tensorflow" C-m
tmux send-keys "jupyter notebook --ip=* --port=8889" C-m

 

사실 tmux는 조금 방법이 복잡하지만, 한번 스크립트화해두면 아래와 같은 명령어로 언제든지 접속하여 현재 서버가 다운됐는지 확인해볼 수 있으니 tmux방법을 조금 더 선호합니다. 예시는 PyTorch 서버를 이용한 예시입니다.

tmux attach -t jupyter-pytorch

 

 
728x90
반응형