Ich bin neu in Tensorflow und würde von einigen Visualisierungen meiner Arbeit sehr profitieren. Ich verstehe, dass Tensorboard ein nützliches Visualisierungstool ist, aber wie kann ich es auf meinem Remote-Ubuntu-Computer ausführen?
116
Antworten:
Folgendes tue ich, um die Probleme zu vermeiden, die entstehen, wenn der Remote-Server Ihre lokale externe IP-Adresse akzeptiert:
-L
, um den Port6006
des Remote-Servers in den Port16006
meines Computers zu übertragen (zum Beispiel):ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip
Was sie tut , ist , dass alles auf dem Port
6006
des Servers (in127.0.0.1:6006
) wird weitergeleitet an meine Maschine auf dem Hafen16006
.tensorboard --logdir log
dem Standard -6006
Portquelle
127.0.0.1
Hier ist die IP Ihres lokalen Computers, daher sollten Sie sie unverändert lassen. Ändern Sie es nicht in Ihre Remote-IP. Ich habe 10 Minuten damit verschwendet. Wie dumm ich bin!-4
ssh-Flag haben es gelöst. Beim Lesen ähnlicher Fragen hatten viele Probleme mit IPv6-Adressen auf ihren Servern.-N
Flag hinzufügen , um das Öffnen einer SSH-Shell zu vermeiden. Durch Hinzufügen wird-f
die SSH-Verbindung in den Hintergrund gestellt.Sie können eine Portweiterleitung mit einem anderen
ssh
Befehl durchführen, der nicht an die Art und Weise gebunden sein muss, wie Sie eine Verbindung zum Server herstellen (als Alternative zur anderen Antwort). Somit ist die Reihenfolge der folgenden Schritte beliebig.Führen Sie auf Ihrem lokalen Computer aus
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
Führen Sie auf dem Remote- Computer Folgendes aus:
tensorboard --logdir <path> --port 6006
Navigieren Sie dann auf Ihrem lokalen Computer zu (in diesem Beispiel) http: // localhost: 16006 .
(Erklärung des Befehls ssh:
-N
: keine Fernbefehle-f
: ssh in den Hintergrund stellen-L <machine1>:<portA>:<machine2>:<portB>
::weiterleiten
<machine2>:<portB>
(Remote-Bereich) an<machine1>:<portA>
(lokaler Bereich)quelle
Sie müssen nichts Besonderes tun. Renn einfach:
und verbinden Sie sich mit Ihrer Server-URL und Ihrem Port. Der
--host 0.0.0.0
Tensorflow weist an, Verbindungen von allen IPv4-Adressen auf dem lokalen Computer abzuhören.quelle
Eine andere Option, wenn Sie es aus irgendeinem Grund nicht zum Laufen bringen können, besteht darin, einfach ein logdir-Verzeichnis mit sshfs in Ihr Dateisystem einzubinden:
sshfs user@host:/home/user/project/summary_logs ~/summary_logs
Führen Sie dann Tensorboard lokal aus.
quelle
"whats my ip"
oder diesen Befehl eingeben :wget http://ipinfo.io/ip -qO -
wget http://ipinfo.io/ip -qO -
wieder von dort aus.6006
123.123.12.32:6006
Wenn Ihr Remote-Server für Datenverkehr von Ihrer lokalen IP-Adresse geöffnet ist, sollte Ihr Remote-Tensorboard angezeigt werden.
Warnung : Wenn der gesamte Internetverkehr auf Ihr System zugreifen kann (wenn Sie keine einzige IP-Adresse angegeben haben, die darauf zugreifen kann), kann möglicherweise jeder Ihre TensorBoard-Ergebnisse anzeigen und SkyNet selbst erstellen.
quelle
Dies ist keine richtige Antwort, sondern eine Fehlerbehebung, die hoffentlich anderen weniger erfahrenen Netzwerkern wie mir hilft.
In meinem Fall (Firefox + Ubuntu16) stellte der Browser eine Verbindung her, zeigte jedoch eine leere Seite (mit dem Tensorboard-Logo auf der Registerkarte) an, und es wurde überhaupt keine Protokollaktivität angezeigt. Ich weiß immer noch nicht, was der Grund dafür sein könnte (habe nicht viel darüber nachgedacht, aber wenn jemand es weiß, lass es uns wissen!), Aber ich habe es gelöst, indem ich auf Ubuntus Standardbrowser umgestiegen bin. Hier die genauen Schritte, so ziemlich die gleichen wie in der Antwort von @Olivier Moindrot:
tensorboard --logdir=. --host=localhost --port=6006
ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
Browser
und besuchen Sielocalhost:16006
. Die Tensorboard-Seite sollte ohne große Verzögerung geladen werden.Um zu überprüfen, ob der SSH-Tunnel effektiv funktioniert, kann ein einfacher Echoserver wie dieses Python-Skript helfen:
<ECHO>.py
Datei auf dem Server ein und führen Sie es mit auspython <ECHO>.py
. Jetzt hört der Server das Echo-Skript auf 0.0.0.0:5555 .ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
eine Verbindung zum auf dem Server ausgeführten Echoskript hergestellt. Durch Tippenhello
und Drücken der Eingabetaste solltehello
zurückgedruckt werden. In diesem Fall funktioniert Ihr SSH-Tunnel. Dies war mein Fall und führte mich zu dem Schluss, dass das Problem den Browser betraf. Der Versuch, eine Verbindung von einem anderen Terminal herzustellen, führte zum Einfrieren des Terminals.Wie gesagt, hoffe es hilft!
Prost,
Andres
quelle
https://github.com/dmlc/tensorboard
nur um weitere Alternativen zu der hinzuzufügen Konfiguration. CheersSie können den folgenden Befehl direkt auf dem Terminal Ihres Remote-Servers ausführen, um Tensorboard auszuführen:
Sie können das Tensorboard auch in Ihrem Ipython-Notizbuch starten:
quelle
Sie müssen eine SSH-Verbindung mithilfe der Portweiterleitung erstellen:
Dann führen Sie den
tensorboard
Befehl aus:Dann können Sie einfach
tensorboard
in Ihrem Browser auf Folgendes zugreifen :quelle
--bind_all
Option ist nützlich.Der Port wird automatisch schrittweise aus 6006 ausgewählt. (6006, 6007, 6008 ...)
quelle
Für alle, die die SSH-Schlüssel verwenden müssen (für einen Unternehmensserver).
Fügen Sie einfach
-i /.ssh/id_rsa
am Ende hinzu.$ ssh -N -f -L localhost:8211:localhost:6007 myname@servername -i /.ssh/id_rsa
quelle
Geben Sie beim Ausführen des Tensorboards eine weitere Option an --host = ip Ihres Systems, und Sie können dann von einem anderen System aus über http: // ip Ihres Hostsystems : 6006 darauf zugreifen
quelle
Ein anderer Ansatz ist die Verwendung eines Reverse-Proxys , mit dem Sie Tensorboard von jedem mit dem Internet verbundenen Gerät ohne SSHing anzeigen können . Dieser Ansatz kann das Anzeigen von Tensorboard beispielsweise auf Mobilgeräten erheblich vereinfachen.
Schritte:
1) Laden Sie den Reverse Proxy Ngrok auf Ihren Remote-Computer herunter, auf dem Tensorboard gehostet wird. Anweisungen finden Sie unter https://ngrok.com/download (~ 5 Minuten Setup).
2) Ausführen
ngrok http 6006
(vorausgesetzt, Sie hosten Tensorboard auf Port 6006)3) Speichern Sie die von ngrok ausgegebene URL:
4) Geben Sie dies in einen beliebigen Browser ein, um TensorBoard anzuzeigen:
Besonderer Dank geht an Sam Kirkiles
quelle