원격 서버에서 Tensorboard를 어떻게 실행할 수 있습니까?


116

저는 Tensorflow를 처음 접했고 제가하는 일에 대한 시각화를 통해 큰 도움이 될 것입니다. Tensorboard가 유용한 시각화 도구라는 것을 알고 있지만 원격 Ubuntu 컴퓨터에서 어떻게 실행합니까?


몇 가지 가능한 솔루션 : (1) 확인하지는 않았지만 로컬 컴퓨터에서 실행하는 것과 동일 할 수 있습니다. 실행 한 후에는 로컬 컴퓨터의 브라우저에서 액세스 할 수 있도록 포트 번호를 제공합니다. 기계. (2) RealVNC와 같은 원격 데스크톱 소프트웨어를 사용할 수 있습니까? (3) 동일한 원격 머신에서 tensorflow 계산도 실행한다고 가정합니다. 로그 파일을 로컬 머신에 다운로드하고 로컬 머신에서 텐서 보드를 실행할 수도 있습니다.
Yao Zhang

답변:


185

다음은 원격 서버가 로컬 외부 IP를 수락하도록 만드는 문제를 방지하기 위해 수행하는 작업입니다.

  • 컴퓨터에 ssh 할 때 원격 서버의 포트 를 내 컴퓨터 의 포트로 -L전송 하는 옵션 을 사용합니다 (예 : 600616006 ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip

그것이하는 일은 6006서버 의 포트 (in 127.0.0.1:6006) 에있는 모든 것이 포트 의 내 컴퓨터 로 전달 된다는 것입니다 16006.


  • 그런 다음 tensorboard --logdir log기본 6006포트가 있는 표준 을 사용하여 원격 머신에서 텐서 보드를 시작할 수 있습니다.
  • 로컬 머신에서 http://127.0.0.1:16006으로 이동 하여 원격 TensorBoard를 즐기십시오.

1
또한 텐서 보드 플롯이 Safari에서 모두 검은 색으로 표시되는 문제가있었습니다. Chrome에서 작동합니다 (문제 # 4856 관련 )
Olivier Moindrot

2
작은 힌트 : 127.0.0.1여기에 로컬 시스템 IP가 있으므로 그대로 두어야합니다. 원격 IP로 변경하지 마십시오. 나는 이것에 10 분을 낭비했다. 내가 얼마나 어리석은가!
DarkZero 2017

이것을 -4ssh 플래그로 IPv4를 적용하면 해결되었습니다. 비슷한 질문을 읽고 많은 사람들이 서버의 IPv6 주소에 문제가 있습니다.
로버트 Parcus

ssh 셸에 머물러야 할 것 같습니다. ssh 셸을 닫으면 원격 텐서 보드에서 응답이 없습니다. ssh 셸을 종료하는 동안 텐서 보드에 연결하는 방법이 있습니까?
Fan

@Fan : 아래 의 다른 답변을 확인하십시오 . 기본적으로 -Nssh 셸을 열지 않도록 플래그를 추가 할 수 있습니다 . 추가 -f하면 ssh 연결이 백그라운드에 있습니다.
Olivier Moindrot

78

ssh서버에 연결하는 방법에 연결할 필요가없는 다른 명령으로 포트 포워드 할 수 있습니다 (다른 답변의 대안으로). 따라서 아래 단계의 순서는 임의적입니다.

  1. 귀하의 지역 기계, 실행

    ssh -N -f -L localhost:16006:localhost:6006 <user@remote>

  2. 원격 기계, 실행

    tensorboard --logdir <path> --port 6006

  3. 그런 다음 로컬 컴퓨터에서 http : // localhost : 16006 (이 예에서는)으로 이동 합니다.

(ssh 명령에 대한 설명 :

-N : 원격 명령 없음

-f : 배경에 ssh를 넣어

-L <machine1>:<portA>:<machine2>:<portB> :

순방향 <machine2>:<portB>에 (원격 범위) <machine1>:<portA>(로컬 영역)


0xcaff @에서 언급 한 바와 같이, 대신 다른 인터페이스를 수신한다
mmohaveri

특정 포트의 경우 ssh -p PORTNUMBER -N -f -L localhost : 16006 : localhost : 6006 <user @ remote>.
Wey Shi

63

멋진 일을 할 필요가 없습니다. 그냥 실행 :

tensorboard --host 0.0.0.0 <other args here>

서버 URL 및 포트와 연결하십시오. 는 --host 0.0.0.0로컬 컴퓨터에있는 모든 IPv4 주소의 연결에서들을 수 tensorflow 알려줍니다.


이것은 정답이어야합니다. 대부분 텐서 보드는 외부 서비스에서 볼 수있는 주소에 묶여 있지 않습니다.
드웨인

1
원격 서버에서는 작동하지 않습니다 ... 무엇을 놓치고 있습니까?
Idan azuri 19.01.07

퍼블릭 IP에서만 수신하고 싶다면 다음과 같이 할 수 있습니다. tensorboard --host $ (hostname -I) <other args here> 그런 다음 tensorboard가 출력하는 URL을 복사하여 붙여 넣을 수 있습니다. TensorBoard 1.12.2 at 10.0 .50.42 : 6006 (종료하려면 CTRL + C를 누름)
Morten

1
@Idanazuri 원격 컴퓨터에 대한 http 액세스 권한이 있습니까? 아니면 방화벽이 있습니까 (예 : ssh 연결을 통해서만 액세스 가능)? ssh 전용이면이 답변이 작동하지 않습니다.
drevicko

17

어떤 이유로 작동하지 않는 또 다른 옵션은 단순히 sshfs로 파일 시스템에 logdir 디렉토리를 마운트하는 것입니다.

sshfs user@host:/home/user/project/summary_logs ~/summary_logs

그런 다음 Tensorboard를 로컬에서 실행합니다.


10
  1. 인터넷 검색을 하거나 다음 명령을 입력 하여 로컬 외부 IP를 찾습니다 "whats my ip".wget http://ipinfo.io/ip -qO -
  2. 원격 외부 IP를 결정합니다 . 이것은 아마도 원격 서버에 ssh-ing 할 때 사용자 이름 뒤에 오는 것입니다. wget http://ipinfo.io/ip -qO -거기 에서도 다시 할 수 있습니다 .
  3. 로컬 외부 IP 주소 만 허용하도록 원격 서버 트래픽을 보호 합니다.
  4. Tensorboard를 실행합니다. 기본 포트는 다음과 같습니다.6006
  5. 브라우저에 원격 외부 IP 주소를 입력 한 다음 포트 :123.123.12.32:6006

원격 서버가 로컬 IP 주소의 트래픽에 대해 열려있는 경우 원격 텐서 보드를 볼 수 있어야합니다.

경고 : 모든 인터넷 트래픽이 시스템에 액세스 할 수있는 경우 (액세스 할 수있는 단일 IP 주소를 지정하지 않은 경우) 누구나 TensorBoard 결과를 볼 수 있고 SkyNet을 직접 만들 수 있습니다.


7

이것은 적절한 대답은 아니지만 문제 해결사이며 저와 같이 노련한 다른 네트워크 사용자에게 도움이되기를 바랍니다.

필자의 경우 (firefox + ubuntu16) 브라우저가 연결되었지만 빈 페이지 (탭에 텐서 보드 로고 포함)가 표시되고 로그 활동이 전혀 표시되지 않았습니다. 나는 여전히 그 이유가 무엇인지 모르겠지만 (별로 살펴 보지는 않았지만 아는 사람이 있으면 알려주십시오!) 우분투의 기본 브라우저로 전환하여 해결했습니다. @Olivier Moindrot의 답변과 거의 같은 정확한 단계는 다음과 같습니다.

  1. 서버에서 텐서 보드를 시작합니다. tensorboard --logdir=. --host=localhost --port=6006
  2. 클라이언트에서 ssh 터널을 엽니 다. ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
  3. 열기 우분투의 Browser방문 localhost:16006. 텐서 보드 페이지는 많은 지연없이로드되어야합니다.

SSH 터널이 효과적으로 작동하는지 확인하려면 이 Python 스크립트 와 같은 간단한 에코 서버 가 도움 될 수 있습니다.

  1. 스크립트를 <ECHO>.py서버 의 파일에 넣고 python <ECHO>.py. 이제 서버는 0.0.0.0:5555에서 수신하는 echo 스크립트를 갖게됩니다 .
  2. 클라이언트에서 ssh 터널을 엽니 다. ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
  3. 클라이언트에서 터널을 여는 데 사용 된 동일한 터미널 (2 단계)에서 발급 telnet localhost 12345하면 서버에서 실행중인 에코 스크립트에 연결됩니다. 입력 hello하고 Enter 키를 누르면 hello다시 인쇄 됩니다. 이 경우 SSH 터널이 작동하는 것입니다. 이것이 제 경우 였고 문제가 브라우저와 관련이 있다는 결론을 내 렸습니다. 다른 터미널에서 연결하려고하면 터미널이 멈췄습니다.

내가 말했듯이, 그것이 도움이되기를 바랍니다!
건배,
Andres


chromium + ubuntu14에서 똑같은 문제가 있습니다. 더 나쁜 것은 한 컴퓨터에서 전달 된 포트에서는 완벽하게 작동하지만 다른 컴퓨터에서는 동일한 빈 페이지 (정확한 파비콘 포함)를 표시합니다. Firefox는 잘 작동합니다. 지금도 파이어 폭스를 사용하면서 알아 내지 못했습니다.
LucasB

네, 많은 요인이 관여하지만 한 작동으로 ... 주에 또 다른 한가지는 TF와 함께 제공되는 TB 버전은 ... 여기에서 찾을 수 있습니다 TB-독립 것과 다른 것입니다 https://github.com/dmlc/tensorboard단지 더 많은 대안을 추가 설정. 건배
fr_andres

7

원격 서버의 터미널에서 다음 명령을 직접 실행하여 텐서 보드를 실행할 수 있습니다.

tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006

또는 ipython 노트북 내에서 텐서 보드를 시작할 수도 있습니다.

%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006

4

포트 전달을 사용하여 SSH 연결을 만들어야합니다.

ssh -L 16006:127.0.0.1:6006 user@host

그런 다음 다음 tensorboard명령 을 실행합니다 .

tensorboard --logdir=/path/to/logs

그러면 다음 tensorboard에서 브라우저에서에 쉽게 액세스 할 수 있습니다 .

localhost:16006/

3

--bind_all 옵션이 유용합니다.

$ tensorboard --logdir runs --bind_all

포트는 6006에서 점진적으로 자동으로 선택됩니다. (6006, 6007, 6008 ...)


1

ssh 키를 사용해야하는 모든 사용자 (회사 서버용).

-i /.ssh/id_rsa끝에 추가 하십시오.

$ ssh -N -f -L localhost:8211:localhost:6007 myname@servername -i /.ssh/id_rsa


0

텐서 보드를 실행하는 동안 시스템의 --host = ip 옵션을 하나 더 제공 한 다음 http : // ip of your host system : 6006을 사용하여 다른 시스템에서 액세스 할 수 있습니다 .


0

또 다른 접근 방식은 역방향 프록시 를 사용하는 것입니다 .이를 통해 SSHing없이 인터넷에 연결된 모든 장치에서 Tensorboard 수 있습니다 . 이 접근 방식을 사용하면 예를 들어 모바일 장치에서 Tensorboard를 훨씬 더 쉽게 / 다루기 쉽게 볼 수 있습니다.

단계 :

1) Tensorboard를 호스팅하는 원격 컴퓨터에 역방향 프록시 Ngrok를 다운로드합니다. 지침 은 https://ngrok.com/download 를 참조 하십시오 (최대 5 분 설정).

2) 실행 ngrok http 6006(포트 6006에서 Tensorboard를 호스팅한다고 가정)

3) ngrok가 출력하는 URL을 저장하십시오.

여기에 이미지 설명 입력

4) TensorBoard를 보려면 브라우저에 입력하십시오.

여기에 이미지 설명 입력

Sam Kirkiles 에게 특별히 감사드립니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.