Я новачок у Tensorflow і отримав би велику користь від деяких уявлень про те, що я роблю. Я розумію, що Tensorboard - це корисний інструмент візуалізації, але як запустити його на моїй віддаленій машині Ubuntu?
Я новачок у Tensorflow і отримав би велику користь від деяких уявлень про те, що я роблю. Я розумію, що Tensorboard - це корисний інструмент візуалізації, але як запустити його на моїй віддаленій машині Ubuntu?
Відповіді:
Ось що я роблю, щоб уникнути проблем змушення віддаленого сервера прийняти ваш локальний зовнішній IP:
-L
для перенесення порту 6006
віддаленого сервера в порт 16006
моєї машини (наприклад):
ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip
Це означає, що все, що знаходиться на порту 6006
сервера (в 127.0.0.1:6006
), буде перенаправлено на мою машину на порт 16006
.
tensorboard --logdir log
із 6006
портом за замовчуванням127.0.0.1
ось ваш ip локальної машини, тому вам слід залишити його таким, яким він є. Не змінюйте його на віддалений ip. Я витратив на це 10 хвилин. Який я дурний!
-4
прапора ssh вирішило це. Читаючи подібні запитання, у багатьох виникли проблеми з IPv6 адресами на їх серверах.
-N
прапор, щоб уникнути відкриття оболонки ssh. Додавання -f
виводить ssh-з'єднання на задній план.
Ви можете переслати порт з іншою ssh
командою, яка не повинна прив'язуватися до того, як ви підключаєтесь до сервера (як альтернатива іншій відповіді). Таким чином, упорядкування наведених нижче кроків є довільним.
з локальної машини, запустіть
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
на віддаленій машині запустіть:
tensorboard --logdir <path> --port 6006
Потім перейдіть до (у цьому прикладі) http: // localhost: 16006 на вашій локальній машині.
(пояснення команди ssh:
-N
: немає віддалених команд
-f
: покласти ssh на задній план
-L <machine1>:<portA>:<machine2>:<portB>
:
переслати <machine2>:<portB>
(віддалений обсяг) на <machine1>:<portA>
(локальний обсяг)
Вам не потрібно робити нічого фантазійного. Просто запустіть:
tensorboard --host 0.0.0.0 <other args here>
і з'єднатись із URL-адресою та портом свого сервера. --host 0.0.0.0
Каже tensorflow слухати від з'єднань на всіх IPv4 - адрес на локальному комп'ютері.
Інший варіант, якщо ви не можете змусити його працювати з якихось причин, це просто встановити каталог logdir у вашу файлову систему за допомогою sshfs:
sshfs user@host:/home/user/project/summary_logs ~/summary_logs
а потім запустити Tensorboard локально.
"whats my ip"
або введення цієї команди:wget http://ipinfo.io/ip -qO -
wget http://ipinfo.io/ip -qO -
знову звідти.6006
123.123.12.32:6006
Якщо ваш віддалений сервер відкритий для руху з вашої локальної IP-адреси, ви зможете побачити ваш віддалений Tensorboard.
Попередження : якщо весь інтернет-трафік може отримати доступ до вашої системи (якщо ви не вказали єдиної IP-адреси, яка може отримати доступ до неї), будь-хто може мати можливість переглядати ваші результати TensorBoard і тікати, створюючи SkyNet самостійно.
Це не правильна відповідь, а усунення несправностей, сподіваємось, допомагає іншим менш досвідченим мережам, як я.
У моєму випадку (firefox + ubuntu16) браузер підключався, але показував порожню сторінку (з логотипом тензорної дошки на вкладці), і активність журналу взагалі не відображалася. Я до сих пір не знаю, що може бути причиною цього (я не дуже заглядав, але якщо хтось знає, будь ласка, повідомте!), Але я вирішив це, перейшовши на браузер за замовчуванням ubuntu. Ось точні кроки, майже такі ж, як у відповіді @Olivier Moindrot:
tensorboard --logdir=. --host=localhost --port=6006
ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
Browser
і відвідайте localhost:16006
. Сторінка тензорної дошки повинна завантажуватися без особливих затримок.Щоб переконатися, що тунель SSH ефективно працює, може допомогти простий ехо-сервер на зразок цього сценарію python :
<ECHO>.py
файл на сервері та запустіть його python <ECHO>.py
. Тепер сервер матиме сценарій ехо-прослуховування на 0.0.0.0what555 .ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
підключиться до сценарію ехо, що працює на сервері. Введення hello
та натискання клавіші Enter має надрукувати hello
назад. Якщо це так, ваш тунель SSH працює. Це був мій випадок і привів мене до висновку, що проблема стосувалася браузера. Спроба підключитися з іншого терміналу призвела до замерзання терміналу.Як я вже сказав, сподіваюся, що це допоможе!
Ура,
Андрес
https://github.com/dmlc/tensorboard
просто для додавання більше альтернатив до налаштування. Ура
Ви можете безпосередньо запустити наступну команду на терміналі віддаленого сервера для запуску тензорної плати:
tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
Або ви також можете запустити тензор у вашому ноутбуці ipython:
%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
Ви повинні створити ssh-з'єднання за допомогою переадресації портів:
ssh -L 16006:127.0.0.1:6006 user@host
Потім ви запускаєте tensorboard
команду:
tensorboard --logdir=/path/to/logs
Тоді ви можете легко отримати доступ до tensorboard
свого браузера в розділі:
localhost:16006/
Під час роботи тензорної плати дайте ще один варіант --host = ip вашої системи, і тоді ви можете отримати доступ до неї з іншої системи, використовуючи http: // ip вашої хост-системи : 6006
Інший підхід полягає у використанні зворотного проксі-сервера , який дозволяє переглядати Tensorboard з будь-якого пристрою, підключеного до Інтернету, без SSHing . Такий підхід може, наприклад, значно полегшити / простежити перегляд Tensorboard на мобільних пристроях.
Кроки:
1) Завантажте зворотний проксі Ngrok на віддалений комп'ютер, на якому розміщено Tensorboard. Інструкції див. На веб-сторінці https://ngrok.com/download (~ 5 хвилин).
2) Запустити ngrok http 6006
(припустимо, що ви розміщуєте Tensorboard на порту 6006)
3) Збережіть URL-адресу, яку виводить ngrok:
4) Введіть це в будь-який браузер, щоб переглянути TensorBoard:
Особлива подяка Сему Кіркілес