161 votes

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

Je suis nouveau dans Tensorflow et je bénéficierais 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 distante ?

1 votes

Quelques solutions possibles : (1) Il se peut que ce soit la même chose que de l'exécuter sur une machine locale, bien que je ne l'aie pas vérifié : après l'avoir exécuté, il vous fournit un numéro de port, avec lequel vous y accédez depuis le navigateur de votre machine locale. (2) Êtes-vous en mesure d'utiliser un logiciel de bureau à distance tel que RealVNC ? (3) Je suppose que vous exécutez également les calculs de tensorflow sur la même machine distante ; vous pouvez également télécharger les fichiers journaux sur votre machine locale, et exécuter tensorboard sur votre machine locale.

250voto

Olivier Moindrot Points 17630

Voici ce que je fais pour éviter les problèmes liés à l'acceptation par le serveur distant de votre IP externe locale :

  • lorsque je me connecte à 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

Ce que ça fait, c'est que tout ce qui est sur le port 6006 du serveur (en 127.0.0.1:6006 ) sera transmis à vers ma machine sur le port 16006 .


  • Vous pouvez alors lancer tensorboard sur la machine distante en utilisant une commande standard tensorboard --logdir log avec la valeur par défaut 6006 port
  • Sur votre machine locale, allez à http://127.0.0.1:16006 et profitez de votre TensorBoard à distance.

1 votes

Il y a également eu un problème avec les tracés de tensorboard qui étaient tout noirs sur Safari, mais qui fonctionnent sur Chrome (lié à la question suivante #4856 )

4 votes

Une petite astuce : 127.0.0.1 voici votre local ip de la machine, vous devez donc le laisser tel quel. Ne le remplacez pas par votre adresse IP distante. J'ai gaspillé 10 minutes sur ce sujet. Comme je suis stupide !

0 votes

Et l'application de l'IPv4 avec le -4 Le drapeau ssh a résolu le problème. En lisant les questions similaires, beaucoup ont eu des problèmes avec les adresses IPv6 dans leurs serveurs.

114voto

eqzx Points 709

Vous pouvez faire du portage avec un autre ssh qui ne doit pas nécessairement ê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.

  1. de votre local machine, courir

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

  2. sur le à distance machine, courir :

    tensorboard --logdir <path> --port 6006

  3. 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 en arrière-plan

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

avant <machine1>:<portA> (portée locale) à <machine2>:<portB> (portée à distance)

0 votes

Comme mentionné par @0xcaff, vous devriez plutôt écouter sur vos autres interfaces

0 votes

Pour un port spécifique, ssh -p PORTNUMBER -N -f -L localhost:16006:localhost:6006 user@remote.

1 votes

D'après la page 'man ssh', l'option -L effectue une redirection de port depuis le périmètre local vers le périmètre distant. Mais sinon, bonne réponse.

95voto

caffinatedmonkey Points 1130

Vous n'avez pas besoin de faire quoi que ce soit 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 site --host 0.0.0.0 indique à tensorflow d'écouter les connexions sur toutes les adresses IPv4 de la machine locale.

4 votes

Cela devrait être la bonne réponse il est fort probable que tensorboard ne soit pas lié à une adresse visible par les services externes.

1 votes

Cela ne fonctionne pas pour moi pour un serveur distant... Qu'est-ce que je manque ?

1 votes

Si vous voulez seulement écouter sur votre IP publique, vous pouvez faire : tensorboard --host $(hostname -I) <autres args ici> Et ensuite vous pouvez copier-coller l'URL que tensorboard imprime : TensorBoard 1.12.2 at 10.0.50.42:6006 (Appuyez sur CTRL+C pour quitter)

23voto

Scientist1642 Points 362

Une autre option si vous ne pouvez pas le faire fonctionner pour une raison quelconque est de monter simplement 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.

12voto

JohnAllen Points 1522
  1. Trouvez votre local IP externe en googlant "whats my ip" ou en entrant cette commande : wget http://ipinfo.io/ip -qO -
  2. Déterminez votre à distance IP externe. C'est probablement ce qui vient après votre nom d'utilisateur lorsque vous vous connectez au serveur distant par ssh. Vous pouvez également wget http://ipinfo.io/ip -qO - encore de là aussi.
  3. Sécurisez le trafic de votre serveur distant pour qu'il accepte seulement votre local adresse IP externe
  4. Exécuter Tensorboard. Notez le port qu'il utilise par défaut : 6006
  5. Entrez votre à distance l'adresse IP externe dans votre navigateur, suivie du port : 123.123.12.32:6006

Si votre serveur distant est ouvert au trafic provenant de votre adresse IP locale, vous devriez être en mesure de voir votre Tensorboard distant.

Avertissement : si tous Si le trafic Internet peut accéder à votre système (si vous n'avez pas spécifié une adresse IP unique pouvant y accéder), n'importe qui peut être en mesure de visualiser vos résultats TensorBoard et s'enfuir en créant SkyNet lui-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X