Comment puis-je exécuter Tensorboard sur un serveur distant?
je suis nouveau à Tensorflow et je profiterais grandement de quelques visualisations de ce que je fais. Je comprends que Tensorboard est un outil de visualisation utile, mais comment puis-je l'exécuter sur ma machine Ubuntu à distance?
8 réponses
voici ce que je fais pour éviter les problèmes de faire accepter au serveur distant votre adresse IP externe locale:
- quand je ssh sur la machine, j'utilise l'option
-L
pour transférer le port6006
du serveur distant dans le port16006
de ma machine (par exemple):ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip
Ce qu'il fait est que tout sur le port 6006
du serveur (dans 127.0.0.1:6006
) sera transmis à ma machine sur le port 16006
.
- vous pouvez ensuite lancer tensorboard sur la machine distante en utilisant un standard
tensorboard --logdir log
avec le défaut6006
port - sur votre machine locale, passez à http://127.0.0.1:16006 et profitez de votre TensorBoard à distance.
vous pouvez transférer avec une autre commande ssh
qui n'a pas besoin d'être liée à la façon dont vous vous connectez au serveur (comme alternative à l'autre réponse). Ainsi, l'ordre des étapes ci-dessous est arbitraire.
-
à partir de votre local de la machine, exécutez
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
-
sur la machine remote , exécuter:
tensorboard --logdir <path> --port 6006
-
ensuite, naviguez vers (dans cet exemple) http://localhost:16006 sur votre machine locale.
(explication de la commande ssh:
-N
: aucune commande à distance
-f
: mettre ssh à l'arrière-plan
-L <machine1>:<portA>:<machine2>:<portB>
:
de l'avant <machine2>:<portB>
(à distance de la portée) de <machine1>:<portA>
(portée locale)
Vous n'avez pas besoin de faire quelque chose de compliqué. Il suffit de lancer:
tensorboard --host 0.0.0.0 <other args here>
et se connecter avec l'url et le port de votre serveur. Le --host 0.0.0.0
indique à tensorflow d'écouter à partir des connexions sur toutes les adresses IPv4 de la machine locale.
- Trouvez votre local IP externe en googlant
"whats my ip"
ou en tapant cette commande:wget http://ipinfo.io/ip -qO -
- déterminez votre IP externe remote . C'est probablement ce qui suit votre nom d'utilisateur lorsque ssh-ing entre dans le serveur distant. Vous pouvez également
wget http://ipinfo.io/ip -qO -
de nouveau à partir de là aussi. - sécuriser le trafic de votre serveur distant pour accepter simplement votre Local IP externe adresse
- Exécuter Tensorboard. Remarque le port par défaut est:
6006
- entrez votre remote adresse IP externe dans votre navigateur, suivi du port:
123.123.12.32:6006
si votre serveur distant est ouvert au trafic à partir de votre adresse IP locale, vous devriez pouvoir voir votre Tensorboard distant.
avertissement : si tous trafic internet peut accéder à votre système (Si vous n'avez pas spécifié une seule adresse IP qui peut y accéder), n'importe qui peut être en mesure de voir vos résultats TensorBoard et runaway avec la création de SkyNet eux-mêmes.
une autre option si vous ne pouvez pas le faire fonctionner pour une raison quelconque est de simplement monter un répertoire logdir sur votre système de fichiers avec sshfs:
sshfs user@host:/home/user/project/summary_logs ~/summary_logs
et ensuite exécuter Tensorboard localement.
ce n'est pas une bonne réponse, mais un dépanneur, j'espère aider d'autres moins expérimentés networkers comme moi.
dans mon cas (firefox+ubuntu16), le navigateur se connectait, mais affichait une page blanche (avec le logo tensorboard sur l'onglet), et aucune activité de journalisation n'était affichée. Je ne sais toujours pas quelle pourrait être la raison pour ça, n'a rien à voir dans cela, mais si quelqu'un sait merci de le savoir!), mais je l'ai résolu en passant au navigateur par défaut d'ubuntu. Ici la les étapes exactes, à peu près les mêmes que dans la réponse de @Olivier Moindrot:
- sur le serveur, démarrer tensorboard:
tensorboard --logdir=. --host=localhost --port=6006
- sur le client, ouvrez le tunnel ssh
ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
- ouvrir ubuntu
Browser
et visiterlocalhost:16006
. La page tensorboard devrait se charger sans beaucoup de retard.
pour vérifier que le tunnel SSH fonctionne bien, un simple serveur echo comme ce script python peut aider:
- mettez le script dans un fichier
<ECHO>.py
dans le serveur et lancez-le avecpython <ECHO>.py
. Maintenant le serveur va avoir le script echo en écoute 0.0.0.0:5555 . - sur le client, ouvrez le tunnel ssh
ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
- sur le client, dans le même terminal utilisé pour ouvrir le tunnel (étape 2.), émettre
telnet localhost 12345
se connecte au script echo qui s'exécute sur le serveur. En tapanthello
et en appuyant sur entrée doit imprimerhello
en arrière. Si c'est le cas, votre tunnel SSH fonctionne. Ce fut mon cas, et m'amène à la conclusion que le problème concernait le navigateur. En essayant de se connecter à partir d'un autre terminal, le terminal s'est figé.
comme je l'ai dit, j'espère que cela vous aidera!
Santé,
Andres
vous devez créer une connexion ssh en utilisant port forwarding:
ssh -L 16006:127.0.0.1:6006 user@host
puis vous lancez la commande tensorboard
:
tensorboard --logdir=/path/to/logs
alors vous pouvez facilement accéder au tensorboard
dans votre navigateur sous:
localhost:16006/
lors de l'exécution du tensorboard donner une option de plus -- host= ip de votre système et alors vous pouvez y accéder à partir d'un autre système en utilisant http: / / ip de votre système hôte : 6006