Jestem nowy w Tensorflow i bardzo skorzystam na wizualizacjach tego, co robię. Rozumiem, że Tensorboard jest przydatnym narzędziem do wizualizacji, ale jak uruchomić go na moim zdalnym komputerze Ubuntu?
Jestem nowy w Tensorflow i bardzo skorzystam na wizualizacjach tego, co robię. Rozumiem, że Tensorboard jest przydatnym narzędziem do wizualizacji, ale jak uruchomić go na moim zdalnym komputerze Ubuntu?
Odpowiedzi:
Oto, co robię, aby uniknąć problemów polegających na zmuszaniu zdalnego serwera do akceptowania lokalnego zewnętrznego adresu IP:
-L
przeniesienia portu 6006
zdalnego serwera do portu 16006
mojej maszyny (na przykład):
ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip
To, co robi, to to, że wszystko na porcie 6006
serwera (in 127.0.0.1:6006
) zostanie przekazane do mojego komputera na porcie 16006
.
tensorboard --logdir log
z domyślnym 6006
portem127.0.0.1
tutaj jest twój lokalny adres IP, więc powinieneś zostawić go tak, jak jest. Nie zmieniaj go na zdalny adres IP. Zmarnowałem na to 10 minut. Jaki ja jestem głupi!
-4
flagą ssh rozwiązało problem. Czytając podobne pytania, wielu miało problemy z adresami IPv6 na swoich serwerach.
-N
flagę, aby uniknąć otwierania powłoki ssh. Dodanie -f
umieszcza połączenie ssh w tle.
Możesz przekierować port za pomocą innego ssh
polecenia, które nie musi być związane ze sposobem łączenia się z serwerem (jako alternatywa dla innej odpowiedzi). Zatem kolejność poniższych kroków jest dowolna.
z komputera lokalnego , uruchom
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
na zdalnym komputerze uruchom:
tensorboard --logdir <path> --port 6006
Następnie przejdź do (w tym przykładzie) http: // localhost: 16006 na komputerze lokalnym.
(wyjaśnienie polecenia ssh:
-N
: brak poleceń zdalnych
-f
: umieść ssh w tle
-L <machine1>:<portA>:<machine2>:<portB>
:
forward <machine2>:<portB>
(zakres zdalny) do <machine1>:<portA>
(zakres lokalny)
Nie musisz robić nic wymyślnego. Po prostu biegnij:
tensorboard --host 0.0.0.0 <other args here>
i połącz się z adresem URL i portem serwera. --host 0.0.0.0
Mówi tensorflow słuchać od połączeń na wszystkich adresów IPv4 na lokalnym komputerze.
Inną opcją, jeśli z jakiegoś powodu nie możesz go uruchomić, jest po prostu zamontowanie katalogu logdir w systemie plików za pomocą sshfs:
sshfs user@host:/home/user/project/summary_logs ~/summary_logs
a następnie uruchom Tensorboard lokalnie.
"whats my ip"
wpisując w Google lub wprowadzając to polecenie:wget http://ipinfo.io/ip -qO -
wget http://ipinfo.io/ip -qO -
stamtąd ponownie.6006
123.123.12.32:6006
Jeśli twój zdalny serwer jest otwarty dla ruchu z twojego lokalnego adresu IP, powinieneś być w stanie zobaczyć twój zdalny Tensorboard.
Ostrzeżenie : jeśli cały ruch internetowy ma dostęp do twojego systemu (jeśli nie określiłeś ani jednego adresu IP, który może uzyskać do niego dostęp), każdy może być w stanie wyświetlić wyniki TensorBoard i niekoniecznie tworzyć SkyNet.
To nie jest właściwa odpowiedź, ale narzędzie do rozwiązywania problemów, miejmy nadzieję, że pomoże innym mniej doświadczonym networkerom, takim jak ja.
W moim przypadku (firefox + ubuntu16) przeglądarka łączyła się, ale wyświetlała pustą stronę (z logo tensorboard na karcie) i nie było żadnej aktywności dziennika. Nadal nie wiem, co może być tego przyczyną (nie zaglądałem zbytnio do tego, ale jeśli ktoś wie, daj znać!), Ale rozwiązałem to, przełączając się na domyślną przeglądarkę Ubuntu. Oto dokładne kroki, prawie takie same jak w odpowiedzi @Olivier Moindrot:
tensorboard --logdir=. --host=localhost --port=6006
ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
Browser
i odwiedź localhost:16006
. Strona tensorboard powinna załadować się bez większego opóźnienia.Aby sprawdzić, czy tunel SSH działa skutecznie, może pomóc prosty serwer echa, taki jak ten skrypt w Pythonie :
<ECHO>.py
pliku na serwerze i uruchom go za pomocą python <ECHO>.py
. Teraz serwer będzie miał skrypt echa nasłuchujący na 0.0.0.0:5555 .ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
połączy się ze skryptem echo działającym na serwerze. Wpisanie hello
i naciśnięcie klawisza Enter powinno zostać wydrukowane z hello
powrotem. Jeśli tak jest, Twój tunel SSH działa. Tak było w moim przypadku i doprowadziło mnie do wniosku, że problem dotyczył przeglądarki. Próba połączenia z innego terminala spowodowała zawieszenie się terminala.Jak powiedziałem, mam nadzieję, że to pomoże!
Pozdrawiam,
Andres
https://github.com/dmlc/tensorboard
tylko po to, aby dodać więcej alternatyw do Ustawiać. Pozdrawiam
Możesz bezpośrednio uruchomić następujące polecenie na terminalu zdalnego serwera, aby uruchomić tensorboard:
tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
Możesz też uruchomić tensorboard w swoim notebooku ipython:
%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
Musisz utworzyć połączenie ssh za pomocą przekierowania portów:
ssh -L 16006:127.0.0.1:6006 user@host
Następnie uruchamiasz tensorboard
polecenie:
tensorboard --logdir=/path/to/logs
Następnie możesz łatwo uzyskać dostęp do tensorboard
w swojej przeglądarce pod:
localhost:16006/
Podczas uruchamiania tensorboard podaj jeszcze jedną opcję --host = ip swojego systemu, a następnie możesz uzyskać do niego dostęp z innego systemu za pomocą http: // ip swojego systemu hosta : 6006
Innym podejściem jest użycie odwrotnego proxy , które umożliwia przeglądanie Tensorboard z dowolnego urządzenia podłączonego do Internetu bez SSHing . Takie podejście może na przykład znacznie ułatwić przeglądanie Tensorboard na urządzeniach mobilnych.
Kroki:
1) Pobierz odwrotne proxy Ngrok na zdalną maszynę obsługującą Tensorboard. Zobacz https://ngrok.com/download, aby uzyskać instrukcje (~ 5 minut konfiguracji).
2) Uruchom ngrok http 6006
(zakładając, że hostujesz Tensorboard na porcie 6006)
3) Zapisz adres URL generowany przez ngrok:
4) Wpisz to w dowolnej przeglądarce, aby wyświetlić TensorBoard:
Specjalne podziękowania dla Sama Kirkilesa