2019. 12. 28. 13:44ㆍ분석 Python/Tensorflow
Tensor flow 같은 딥러닝 프레임워크를 개인 노트북에서 돌리기 어려워서 remote server에 ssh 통신을 통해 작업을 하는 분들이 많을 것이다.
필자도 보통 노트북에 있는 코어나 GPU를 사용하지 않고 remote server에 접속하여 사용한다.
Tensor flow를 사용하다 보면 Tensorboard를 많이 사용하는데, 이것이 보통 개인 노트북에서 킬 때는 localhost:6006 이런 식으로 키면 잘 돌아가지만, 원격에서 작업한 것을 개인 노트북에서 킬 때 localhost:6006을 해도 안될 것이다.
그래서 좀 찾아본 몇가지 글에서 답이 있어서 공유하고자 한다.
Tensorboard 기본적인 default port는 6006이지만, 저런 원격 서버 같은 경우 여러 명이 공유해서 사용할 것이다.
6006 : 김모씨
6007 : 정모씨
6008 : 이모씨
이런 식으로 다 정해져 있기 때문에 딱 사용하고자 하는 port를 지정해서 연결해야 한다.
여기서 나는 이모씨라고 가정을 하자. (port 6008 사용)
그러면 보통 우리가 tensorboar를 킬 때 다음과 같은 코드로 작동시킬 것이다.
## remote server Terminal
tensorboard --logdir=path/to/log/dir --port=6008
자 이제 우리는 저 원격 서버에서 켜진 localhost:6008을 내 개인 노트북과 연결을 해야 저걸 나의 노트북에서 띄울 수 있게 된다.
방법은 생각보다 간단했다. 일단 개인 노트북에 터미널로 들어가자.
일단 사실 이 필자는 무식하기 때문에 N, f, L의 역할을 잘 모른다! (https://hack-cracker.tistory.com/131)
그래서 찾아보니 다음과 같은 것을 찾을 수 있고, 머 보안 신경 안 쓰면 L만 가지고도 할 수 있을 것 같다.
-f : ssh가 명령 실행 직전 백그라운드로 이동하도록 요청한다.
-L : 지정된 원격 호스트와 포트에 전송할 로컬 포트를 지정한다. (소켓에 할당하여 로컷 측의 TCP 포트를 수신하거나 선택적으로 지정된 bind_adress에 bind하거나 유닉스 소켓에 수식하는 방식
## 개인 노트북 터미널
ssh -NfL localhost:8898:localhost:6009 [USERID]@[IP]
ex) ssh -NfL localhost:8898:localhost:6009 [lsr]@[111.xx.xxx.xxx]
자 이렇게 하면 의미는 localhost:6009로 연결되어 있는 것을 내 개인 노트북에서 localhost:8898로 해서 키겠다.
그래서 일단 순서는 원격 서버에서 tensorboard를 켜고 내 개인 노트북에서 저거랑 연결하면 된다.
하지만 저걸 사용하다 보면 port끼리 충동할 수가 있을 것이다 (내 개인 노트북에서 이미 8898을 사용한다던지)
그럴 땐 lsof를 이용하 port를 찾아보고 지워도 되는 거면 지우고 ssh를 다시 설정하면 된다.
## 어디에 쓰는지 확인
xxxx : port (8898)
lsof -ti:xxxx
## 어디에 쓰는지 확인후 제거
lsof -ti:XXXX | xargs kill -9
끝
http://cerfacs.fr/helios/research_blog/tensorboard/
https://blog.yyliu.net/remote-tensorboard/
'분석 Python > Tensorflow' 카테고리의 다른 글
Tensorflow 1.x Tabular Data Neural Network Modeling (0) | 2020.01.04 |
---|---|
Tensorflow Adanet Tabular Data 적용해보기 (0) | 2019.12.29 |
[ Tensorflow ] Binary, MutliClass Loss (0) | 2019.11.09 |
TensorFlow 유용한 구현 모음 (아직 테스트는 안해봄) (0) | 2019.10.27 |
TensorFlow gpu cuda 설치 공식 문서 (Windows / Ubuntu 16.04 ,18.04) (0) | 2019.10.03 |