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

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



답변

다음은 원격 서버가 로컬 외부 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를 즐기십시오.

답변

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>(로컬 영역)


답변

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

tensorboard --host 0.0.0.0 <other args here>

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


답변

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

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

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


답변

  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을 직접 만들 수 있습니다.


답변

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

필자의 경우 (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


답변

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

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