Sou novo no Tensorflow e me beneficiaria muito com algumas visualizações do que estou fazendo. Eu entendo que o Tensorboard é uma ferramenta de visualização útil, mas como faço para executá-lo em minha máquina Ubuntu remota?
Sou novo no Tensorflow e me beneficiaria muito com algumas visualizações do que estou fazendo. Eu entendo que o Tensorboard é uma ferramenta de visualização útil, mas como faço para executá-lo em minha máquina Ubuntu remota?
Respostas:
Aqui está o que devo fazer para evitar os problemas de fazer o servidor remoto aceitar seu IP externo local:
-L
de transferir a porta 6006
do servidor remoto para a porta 16006
da minha máquina (por exemplo):
ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip
O que acontece é que tudo na porta 6006
do servidor (in 127.0.0.1:6006
) será encaminhado para minha máquina na porta 16006
.
tensorboard --logdir log
com a 6006
porta padrão127.0.0.1
aqui está o ip da sua máquina local , então você deve deixá-lo como está. Não mude para o seu ip remoto. Eu perdi 10 minutos nisso. Como sou estúpido!
-4
sinalizador ssh resolveu. Lendo questões semelhantes, muitos tiveram problemas com endereços IPv6 em seus servidores.
-N
sinalizador para evitar a abertura de um shell ssh. Adicionar -f
coloca a conexão ssh em segundo plano.
Você pode encaminhar a porta com outro ssh
comando que não precisa estar vinculado ao modo como você está se conectando ao servidor (como alternativa à outra resposta). Portanto, a ordenação das etapas abaixo é arbitrária.
de sua máquina local , execute
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
na máquina remota , execute:
tensorboard --logdir <path> --port 6006
Em seguida, navegue até (neste exemplo) http: // localhost: 16006 em sua máquina local.
(explicação do comando ssh:
-N
: nenhum comando remoto
-f
: colocar ssh em segundo plano
-L <machine1>:<portA>:<machine2>:<portB>
:
encaminhar <machine2>:<portB>
(escopo remoto) para <machine1>:<portA>
(escopo local)
Você não precisa fazer nada extravagante. Apenas corra:
tensorboard --host 0.0.0.0 <other args here>
e conecte-se com o url e a porta do servidor. O --host 0.0.0.0
diz ao tensorflow para ouvir as conexões em todos os endereços IPv4 na máquina local.
Outra opção se você não conseguir fazê-lo funcionar por algum motivo é simplesmente montar um diretório logdir em seu sistema de arquivos com sshfs:
sshfs user@host:/home/user/project/summary_logs ~/summary_logs
e execute o Tensorboard localmente.
"whats my ip"
ou digitando este comando:wget http://ipinfo.io/ip -qO -
wget http://ipinfo.io/ip -qO -
voltar a partir daí.6006
123.123.12.32:6006
Se o seu servidor remoto estiver aberto ao tráfego de seu endereço IP local, você deve ser capaz de ver seu Tensorboard remoto.
Aviso : se todo o tráfego da Internet pode acessar seu sistema (se você não especificou um único endereço IP que pode acessá-lo), qualquer pessoa pode ser capaz de ver os resultados do TensorBoard e fugir com a criação de SkyNet.
Esta não é uma resposta adequada, mas um solucionador de problemas, espero que ajude outros networkers menos experientes como eu.
No meu caso (firefox + ubuntu16) o navegador estava se conectando, mas mostrando uma página em branco (com o logotipo do tensorboard na guia), e nenhuma atividade de log foi mostrada. Eu ainda não sei qual pode ser a razão para isso (não olhei muito para isso, mas se alguém souber, por favor, avise!), Mas resolvi mudar para o navegador padrão do Ubuntu. Aqui estão as etapas exatas, praticamente as mesmas da resposta de @Olivier Moindrot:
tensorboard --logdir=. --host=localhost --port=6006
ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
Browser
e visite localhost:16006
. A página do tensorboard deve carregar sem muito atraso.Para verificar se o túnel SSH está funcionando de maneira eficaz, um servidor de eco simples como este script Python pode ajudar:
<ECHO>.py
arquivo no servidor e execute-o com python <ECHO>.py
. Agora o servidor terá o script de eco ouvindo em 0.0.0.0:5555 .ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
irá conectar-se ao script echo em execução no servidor. Digitar hello
e pressionar Enter deve imprimir de hello
volta. Se for esse o caso, seu túnel SSH está funcionando. Este foi o meu caso e me levou à conclusão de que o problema envolvia o navegador. A tentativa de conexão de um terminal diferente fazia com que o terminal travasse.Como eu disse, espero que ajude!
Saúde,
Andres
https://github.com/dmlc/tensorboard
apenas para adicionar mais alternativas ao configuração. Saúde
Você pode executar diretamente o seguinte comando no terminal do seu servidor remoto para executar o tensorboard:
tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
Ou você também pode iniciar o tensorboard em seu notebook ipython:
%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
Você deve criar uma conexão ssh usando o encaminhamento de porta:
ssh -L 16006:127.0.0.1:6006 user@host
Então você executa o tensorboard
comando:
tensorboard --logdir=/path/to/logs
Depois, você pode acessar facilmente o tensorboard
em seu navegador em:
localhost:16006/
Ao executar o tensorboard, dê mais uma opção --host = ip do seu sistema e então você pode acessá-lo de outro sistema usando http: // ip do seu sistema host : 6006
Outra abordagem é usar um proxy reverso , que permite visualizar o Tensorboard de qualquer dispositivo conectado à Internet sem SSHing . Essa abordagem pode tornar muito mais fácil / tratável visualizar o Tensorboard em dispositivos móveis, por exemplo.
Passos:
1) Baixe o proxy reverso Ngrok em sua máquina remota que hospeda o Tensorboard. Consulte https://ngrok.com/download para obter instruções (configuração de ~ 5 minutos).
2) Execute ngrok http 6006
(supondo que você esteja hospedando o Tensorboard na porta 6006)
3) Salve o URL gerado pelo ngrok:
4) Insira isso em qualquer navegador para visualizar o TensorBoard:
Agradecimentos especiais a Sam Kirkiles