Sono nuovo su Tensorflow e trarrei grandi vantaggi da alcune visualizzazioni di ciò che sto facendo. Capisco che Tensorboard sia uno strumento di visualizzazione utile, ma come posso eseguirlo sulla mia macchina Ubuntu remota?
Sono nuovo su Tensorflow e trarrei grandi vantaggi da alcune visualizzazioni di ciò che sto facendo. Capisco che Tensorboard sia uno strumento di visualizzazione utile, ma come posso eseguirlo sulla mia macchina Ubuntu remota?
Risposte:
Ecco cosa faccio per evitare il problema di far accettare al server remoto il tuo IP esterno locale:
-L
per trasferire la porta 6006
del server remoto nella porta 16006
della mia macchina (ad esempio):
ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip
Quello che fa è che tutto sulla porta 6006
del server (in 127.0.0.1:6006
) verrà inoltrato alla mia macchina sulla porta 16006
.
tensorboard --logdir log
con la 6006
porta predefinita127.0.0.1
ecco l' ip della tua macchina locale , quindi dovresti lasciarlo così com'è. Non cambiarlo con il tuo IP remoto. Ho sprecato 10 minuti su questo. Quanto sono stupido!
-4
flag ssh lo ha risolto. Leggendo domande simili, molti hanno avuto problemi con gli indirizzi IPv6 nei loro server.
-N
flag per evitare di aprire una shell ssh. L'aggiunta -f
mette la connessione ssh in background.
Puoi port-forward con un altro ssh
comando che non deve essere legato al modo in cui ti stai connettendo al server (in alternativa all'altra risposta). Pertanto, l'ordine dei passaggi seguenti è arbitrario.
dalla tua macchina locale , esegui
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
sulla macchina remota , esegui:
tensorboard --logdir <path> --port 6006
Quindi, vai a (in questo esempio) http: // localhost: 16006 sulla tua macchina locale.
(spiegazione del comando ssh:
-N
: nessun comando remoto
-f
: metti ssh in background
-L <machine1>:<portA>:<machine2>:<portB>
:
inoltra <machine2>:<portB>
(ambito remoto) a <machine1>:<portA>
(ambito locale)
Non devi fare niente di stravagante. Corri:
tensorboard --host 0.0.0.0 <other args here>
e connettiti con l'URL e la porta del tuo server. La --host 0.0.0.0
dice tensorflow per ascoltare da connessioni su tutti gli indirizzi IPv4 sulla macchina locale.
Un'altra opzione se non riesci a farlo funzionare per qualche motivo è semplicemente montare una directory logdir sul tuo filesystem con sshfs:
sshfs user@host:/home/user/project/summary_logs ~/summary_logs
e quindi eseguire Tensorboard localmente.
"whats my ip"
o inserendo questo comando:wget http://ipinfo.io/ip -qO -
wget http://ipinfo.io/ip -qO -
nuovo anche da lì.6006
123.123.12.32:6006
Se il tuo server remoto è aperto al traffico dal tuo indirizzo IP locale, dovresti essere in grado di vedere il tuo Tensorboard remoto.
Attenzione : se tutto il traffico Internet può accedere al tuo sistema (se non hai specificato un singolo indirizzo IP che possa accedervi), chiunque potrebbe essere in grado di visualizzare i risultati di TensorBoard e fuggire con la creazione di SkyNet da solo.
Questa non è una risposta corretta ma uno strumento di risoluzione dei problemi, si spera che aiuti altri networker meno esperti come me.
Nel mio caso (firefox + ubuntu16) il browser si stava connettendo, ma mostrava una pagina vuota (con il logo tensorboard sulla scheda) e non veniva mostrata alcuna attività di registro. Non so ancora quale potrebbe essere la ragione (non ci ho esaminato molto ma se qualcuno lo sa, per favore fatemelo sapere!), Ma ho risolto il problema passando al browser predefinito di Ubuntu. Ecco i passaggi esatti, più o meno gli stessi della risposta di @Olivier Moindrot:
tensorboard --logdir=. --host=localhost --port=6006
ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
Browser
e visita localhost:16006
. La pagina del tensorboard dovrebbe caricarsi senza molto ritardo.Per verificare che il tunnel SSH funzioni efficacemente, un semplice server echo come questo script python può aiutare:
<ECHO>.py
file nel server ed eseguilo con python <ECHO>.py
. Ora il server avrà lo script echo in ascolto su 0.0.0.0:5555 .ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
si connetterà allo script echo in esecuzione nel server. Digitando hello
e premendo Invio dovrebbe hello
tornare indietro. Se questo è il caso, il tuo tunnel SSH funziona. Questo era il mio caso e mi ha portato alla conclusione che il problema riguardava il browser. Il tentativo di connessione da un terminale diverso ha causato il blocco del terminale.Come ho detto, spero che aiuti!
Saluti,
Andres
https://github.com/dmlc/tensorboard
solo per aggiungere più alternative al impostare. Saluti
Puoi eseguire direttamente il seguente comando sul terminale del tuo server remoto per eseguire tensorboard:
tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
Oppure puoi anche avviare il tensore all'interno del tuo notebook ipython:
%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
Devi creare una connessione ssh usando il port forwarding:
ssh -L 16006:127.0.0.1:6006 user@host
Quindi esegui il tensorboard
comando:
tensorboard --logdir=/path/to/logs
Quindi puoi accedere facilmente a tensorboard
nel tuo browser sotto:
localhost:16006/
Durante l'esecuzione della scheda tensoriale dare un'altra opzione --host = ip del tuo sistema e poi puoi accedervi da un altro sistema usando http: // ip del tuo sistema host : 6006
Un altro approccio consiste nell'utilizzare un proxy inverso , che consente di visualizzare Tensorboard da qualsiasi dispositivo connesso a Internet senza SSHing . Questo approccio può rendere molto più semplice / trattabile la visualizzazione di Tensorboard su dispositivi mobili, ad esempio.
passi:
1) Scarica il proxy inverso Ngrok sulla tua macchina remota che ospita Tensorboard. Vedere https://ngrok.com/download per le istruzioni (installazione di circa 5 minuti).
2) Esegui ngrok http 6006
(supponendo che tu stia ospitando Tensorboard sulla porta 6006)
3) Salva l'URL che ngrok restituisce:
4) Inseriscilo in qualsiasi browser per visualizzare TensorBoard:
Un ringraziamento speciale a Sam Kirkiles