Soy nuevo en Tensorflow y me beneficiaría enormemente de algunas visualizaciones de lo que estoy haciendo. Entiendo que Tensorboard es una herramienta de visualización útil, pero ¿cómo la ejecuto en mi máquina Ubuntu remota?
Soy nuevo en Tensorflow y me beneficiaría enormemente de algunas visualizaciones de lo que estoy haciendo. Entiendo que Tensorboard es una herramienta de visualización útil, pero ¿cómo la ejecuto en mi máquina Ubuntu remota?
Respuestas:
Esto es lo que hago para evitar los problemas de hacer que el servidor remoto acepte su IP externa local:
-L
para transferir el puerto 6006
del servidor remoto al puerto 16006
de mi máquina (por ejemplo):
ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip
Lo que hace es que todo en el puerto 6006
del servidor (en 127.0.0.1:6006
) se reenviará a mi máquina en el puerto 16006
.
tensorboard --logdir log
con el 6006
puerto predeterminado127.0.0.1
aquí está la ip de su máquina local , por lo que debe dejarla como está. No lo cambie a su ip remota. Perdí 10 minutos en esto. ¡Que estúpido soy!
-4
bandera ssh lo resolvió. Al leer preguntas similares, muchos han tenido problemas con las direcciones IPv6 en sus servidores.
-N
bandera para evitar abrir un shell ssh. Agregar -f
pone la conexión ssh en segundo plano.
Puede reenviar el puerto con otro ssh
comando que no necesita estar vinculado a cómo se conecta al servidor (como una alternativa a la otra respuesta). Por tanto, el orden de los pasos siguientes es arbitrario.
desde su máquina local , ejecute
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
en la máquina remota , ejecute:
tensorboard --logdir <path> --port 6006
Luego, navegue hasta (en este ejemplo) http: // localhost: 16006 en su máquina local.
(explicación del comando ssh:
-N
: sin comandos remotos
-f
: poner ssh en segundo plano
-L <machine1>:<portA>:<machine2>:<portB>
:
reenviar <machine2>:<portB>
(alcance remoto) a <machine1>:<portA>
(alcance local)
No necesitas hacer nada elegante. Solo corre:
tensorboard --host 0.0.0.0 <other args here>
y conéctese con la URL y el puerto de su servidor. Le --host 0.0.0.0
dice a tensorflow que escuche las conexiones en todas las direcciones IPv4 en la máquina local.
Otra opción si no puede hacer que funcione por alguna razón es simplemente montar un directorio logdir en su sistema de archivos con sshfs:
sshfs user@host:/home/user/project/summary_logs ~/summary_logs
y luego ejecute Tensorboard localmente.
"whats my ip"
o ingresando este comando:wget http://ipinfo.io/ip -qO -
wget http://ipinfo.io/ip -qO -
volver a hacerlo desde allí.6006
123.123.12.32:6006
Si su servidor remoto está abierto al tráfico desde su dirección IP local, debería poder ver su Tensorboard remoto.
Advertencia : si todo el tráfico de Internet puede acceder a su sistema (si no ha especificado una sola dirección IP que pueda acceder a él), cualquiera puede ver los resultados de su TensorBoard y crear SkyNet por sí mismo.
Esta no es una respuesta adecuada, sino un solucionador de problemas, espero que ayude a otros networkers menos experimentados como yo.
En mi caso (firefox + ubuntu16), el navegador se estaba conectando, pero mostraba una página en blanco (con el logotipo de tensorboard en la pestaña) y no se mostraba ninguna actividad de registro. Todavía no sé cuál podría ser la razón de eso (no lo investigué mucho, pero si alguien lo sabe, ¡avísele!), Pero lo resolví cambiando al navegador predeterminado de ubuntu. Aquí los pasos exactos, prácticamente los mismos que en la respuesta de @Olivier Moindrot:
tensorboard --logdir=. --host=localhost --port=6006
ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
Browser
y visite localhost:16006
. La página del tensorboard debería cargarse sin mucha demora.Para verificar que el túnel SSH está funcionando efectivamente, un servidor de eco simple como este script de Python puede ayudar:
<ECHO>.py
archivo en el servidor y ejecútelo con python <ECHO>.py
. Ahora el servidor tendrá el script de eco escuchando en 0.0.0.0:5555 .ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
se conectará al script de eco que se ejecuta en el servidor. Escribir hello
y presionar enter debería hello
volver a imprimir . Si ese es el caso, su túnel SSH está funcionando. Este fue mi caso y me llevó a la conclusión de que el problema estaba relacionado con el navegador. Al intentar conectarse desde un terminal diferente, el terminal se congelaba.Como dije, ¡espero que te ayude!
Saludos,
Andrés
https://github.com/dmlc/tensorboard
solo para agregar más alternativas a la preparar. Saludos
Puede ejecutar directamente el siguiente comando en la terminal de su servidor remoto para ejecutar tensorboard:
tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
O también puede iniciar el tensorboard dentro de su cuaderno ipython:
%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
Tienes que crear una conexión ssh usando el reenvío de puertos:
ssh -L 16006:127.0.0.1:6006 user@host
Luego ejecuta el tensorboard
comando:
tensorboard --logdir=/path/to/logs
Luego, puede acceder fácilmente tensorboard
en su navegador en:
localhost:16006/
Mientras ejecuta el tensorboard, dé una opción más --host = ip de su sistema y luego puede acceder a él desde otro sistema usando http: // ip de su sistema host : 6006
Otro enfoque es utilizar un proxy inverso , que le permite ver Tensorboard desde cualquier dispositivo conectado a Internet sin SSHing . Este enfoque puede hacer que sea mucho más fácil / manejable ver Tensorboard en dispositivos móviles, por ejemplo.
Pasos:
1) Descargue el proxy inverso Ngrok en su máquina remota que aloja Tensorboard. Consulte https://ngrok.com/download para obtener instrucciones (configuración de ~ 5 minutos).
2) Ejecutar ngrok http 6006
(asumiendo que está alojando Tensorboard en el puerto 6006)
3) Guarde la URL que genera ngrok:
4) Ingrese eso en cualquier navegador para ver TensorBoard:
Un agradecimiento especial a Sam Kirkiles