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?
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?
Antworten:
Folgendes tue ich, um die Probleme zu vermeiden, die entstehen, wenn der Remote-Server Ihre lokale externe IP-Adresse akzeptiert:
-L
, um den Port 6006
des Remote-Servers in den Port 16006
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 (in 127.0.0.1:6006
) wird weitergeleitet an meine Maschine auf dem Hafen 16006
.
tensorboard --logdir log
dem Standard - 6006
Port127.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)
Sie müssen nichts Besonderes tun. Renn einfach:
tensorboard --host 0.0.0.0 <other args here>
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.
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.
"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.
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 Sie localhost: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 aus python <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 Tippen hello
und Drücken der Eingabetaste sollte hello
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
https://github.com/dmlc/tensorboard
nur um weitere Alternativen zu der hinzuzufügen Konfiguration. Cheers
Sie können den folgenden Befehl direkt auf dem Terminal Ihres Remote-Servers ausführen, um Tensorboard auszuführen:
tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
Sie können das Tensorboard auch in Ihrem Ipython-Notizbuch starten:
%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
Sie müssen eine SSH-Verbindung mithilfe der Portweiterleitung erstellen:
ssh -L 16006:127.0.0.1:6006 user@host
Dann führen Sie den tensorboard
Befehl aus:
tensorboard --logdir=/path/to/logs
Dann können Sie einfach tensorboard
in Ihrem Browser auf Folgendes zugreifen :
localhost:16006/
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
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