web-dev-qa-db-fra.com

Comment puis-je exécuter Tensorboard sur un serveur distant?

Je connais Tensorflow pour la première fois et bénéficierais grandement de certaines 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 distante?

58
user

Voici ce que je fais pour éviter que le serveur distant accepte votre adresse IP externe locale:

  • quand je ssh dans la machine, j'utilise l'option -L pour transférer le port 6006 du serveur distant dans le port 16006 de ma machine (par exemple): ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip

Cela signifie que tout ce qui est sur le port 6006 du serveur (dans 127.0.0.1:6006) sera transféré à ma machine par le port 16006.


  • Vous pouvez ensuite lancer tensorboard sur la machine distante en utilisant un tensorboard --logdir log standard avec le port 6006 par défaut.
  • Sur votre ordinateur local, allez à http://127.0.0.1:16006 et profitez de votre TensorBoard distant.
106
Olivier Moindrot

Vous pouvez transférer le port avec une autre commande ssh qui n'a pas besoin d'être liée à la façon dont vous vous connectez au serveur (au lieu de l'autre réponse). Ainsi, l'ordre des étapes ci-dessous est arbitraire.

  1. de ton local machine, courir 

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

  2. sur le éloigné machine, exécuter:

    tensorboard --logdir <path> --port 6006

  3. Ensuite, accédez à (dans cet exemple) http: // localhost: 16006 sur votre ordinateur local.

(explication de la commande ssh:

-N: pas de commandes à distance

-f: mettre ssh à l'arrière-plan

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

transférer <machine2>:<portB> (étendue distante) vers <machine1>:<portA> (étendue locale) 

33
eqzx

Vous n'avez pas besoin de faire quelque chose d'extraordinaire. Il suffit de courir:

tensorboard --Host 0.0.0.0 <other args here>

et connectez-vous avec l'URL et le port de votre serveur. Le --Host 0.0.0.0 indique à tensorflow d'écouter les connexions de toutes les adresses IPv4 de la machine locale.

21
0xcaff

Une autre option si vous ne pouvez pas le faire fonctionner pour une raison quelconque est simplement de monter un répertoire logdir sur votre système de fichiers avec sshfs:

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

puis exécutez Tensorboard localement. 

7
Scientist1642
  1. Recherchez votre adresse IP externe local en recherchant "whats my ip" ou en entrant la commande suivante: wget http://ipinfo.io/ip -qO -
  2. Déterminez votre remote adresse IP externe. C'est probablement ce qui vient après votre nom d'utilisateur lorsque ssh-ing sur le serveur distant. Vous pouvez également wget http://ipinfo.io/ip -qO - à partir de là aussi.
  3. Sécurisez le trafic de votre serveur distant pour n'accepter que votre adresse IP externe local
  4. Exécuter Tensorboard. Notez le port par défaut: 6006
  5. Entrez votre adresse IP externe remote dans votre navigateur, suivie du port: 123.123.12.32:6006

Si votre serveur distant est ouvert au trafic depuis votre adresse IP locale, vous devriez pouvoir voir votre Tensorboard distant.

Avertissement : si tout le trafic Internet peut accéder à votre système (si vous n'avez pas spécifié une adresse IP unique pouvant y accéder), tout le monde peut voir les résultats de votre TensorBoard et s'emballer en créant SkyNet .

7
JohnAllen

Ce n'est pas une bonne réponse, mais un dépanneur, j'espère aider d'autres réseauteurs moins expérimentés comme moi.

Dans mon cas (firefox + ubuntu16), le navigateur se connectait, mais une page vierge (avec le logo du tensorboard sur l'onglet) était affichée, et aucune activité de journalisation n'était affichée. Je ne sais toujours pas quelle pourrait en être la raison (je n'y ai pas beaucoup réfléchi, mais si quelqu'un le sait, veuillez le faire savoir!), Mais j'ai résolu le problème en passant au navigateur par défaut d'ubuntu. Voici les étapes exactes, à peu près les mêmes que dans la réponse de @Olivier Moindrot:

  1. Sur le serveur, démarrez tensorboard: tensorboard --logdir=. --Host=localhost --port=6006
  2. Sur le client, ouvrez le tunnel ssh ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
  3. Ouvrez la Browser d'ubuntu et visitez le localhost:16006. La page de tensorboard devrait se charger sans trop de retard. 

Pour vérifier que le tunnel SSH fonctionne efficacement, un simple serveur d'écho, tel que ce script python peut vous aider:

  1. Placez le script dans un fichier <ECHO>.py sur le serveur et exécutez-le avec python <ECHO>.py. Le script echo écoute maintenant sur le serveur 0.0.0.0:5555 .
  2. Sur le client, ouvrez le tunnel ssh ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
  3. Sur le client, dans le même terminal que celui utilisé pour ouvrir le tunnel (étape 2), l’émission de telnet localhost 12345 se connectera au script echo exécuté sur le serveur. Si vous tapez hello et appuyez sur Entrée, hello retour sera imprimé. Si tel est le cas, votre tunnel SSH fonctionne. C'était mon cas et cela m'a amené à conclure que le problème concernait le navigateur. Essayer de se connecter depuis un autre terminal a provoqué le gel du terminal.

Comme je le disais, espérons que cela aide!
À votre santé,
Andres

5
fr_andres

Vous devez créer une connexion ssh en utilisant le transfert de port:

ssh -L 16006:127.0.0.1:6006 user@Host

Ensuite, vous exécutez la commande tensorboard:

tensorboard --logdir=/path/to/logs

Ensuite, vous pouvez facilement accéder à la tensorboard dans votre navigateur sous:

localhost:16006/
3
user4911648

Pour tous ceux qui doivent utiliser les clés ssh (pour un serveur d'entreprise).

Ajoutez simplement -i /.ssh/id_rsa à la fin.

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

0
Aerin

Lorsque vous utilisez le tensorboard, donnez une option supplémentaire --Host = ip de votre système et vous pourrez y accéder depuis un autre système via http: // ip de votre système hôte : 6006

0
user2973566