Як я можу запустити Tensorboard на віддаленому сервері?


116

Я новачок у Tensorflow і отримав би велику користь від деяких уявлень про те, що я роблю. Я розумію, що Tensorboard - це корисний інструмент візуалізації, але як запустити його на моїй віддаленій машині Ubuntu?


Деякі можливі рішення: (1) Це може бути те саме, що працювати на локальній машині, хоча я цього не перевірив: після запуску він надає вам номер порту, завдяки якому ви отримуєте доступ до нього з браузера на вашому локальному сервері машина. (2) Чи можете ви використовувати програмне забезпечення віддаленого робочого столу, наприклад RealVNC? (3) Я припускаю, що ви також виконуєте обчислення tensorflow на одній віддаленій машині; Ви також можете завантажити файли журналів на свою локальну машину та запустити тензор на своїй локальній машині.
Яо Чжан

Відповіді:


185

Ось що я роблю, щоб уникнути проблем змушення віддаленого сервера прийняти ваш локальний зовнішній 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портом за замовчуванням
  • На локальній машині перейдіть на сторінку http://127.0.0.1:16006 і насолоджуйтесь віддаленою TensorBoard.

1
Також виникла проблема з тим, що на Safari сюжети з тензорної дошки повністю чорні, він працює на Chrome (пов’язаний з номером № 4856 )
Олів'є Моїндрот

2
Невеликий натяк: 127.0.0.1ось ваш ip локальної машини, тому вам слід залишити його таким, яким він є. Не змінюйте його на віддалений ip. Я витратив на це 10 хвилин. Який я дурний!
DarkZero

це і застосування IPv4 за допомогою -4прапора ssh вирішило це. Читаючи подібні запитання, у багатьох виникли проблеми з IPv6 адресами на їх серверах.
Роберт Паркус

Здається, я повинен залишитися в обороті ssh. Якщо я закрию оболонку ssh, з віддаленої тензорної плати не буде відповіді. Чи є спосіб все-таки бути підключеним до тензорної дошки під час відключення оболонки ssh?
Вболівальник

@Fan: перевірте іншу відповідь нижче . В основному ви можете додати -Nпрапор, щоб уникнути відкриття оболонки ssh. Додавання -fвиводить ssh-з'єднання на задній план.
Олів’є Мойндро

78

Ви можете переслати порт з іншою sshкомандою, яка не повинна прив'язуватися до того, як ви підключаєтесь до сервера (як альтернатива іншій відповіді). Таким чином, упорядкування наведених нижче кроків є довільним.

  1. з локальної машини, запустіть

    ssh -N -f -L localhost:16006:localhost:6006 <user@remote>

  2. на віддаленій машині запустіть:

    tensorboard --logdir <path> --port 6006

  3. Потім перейдіть до (у цьому прикладі) http: // localhost: 16006 на вашій локальній машині.

(пояснення команди ssh:

-N : немає віддалених команд

-f : покласти ssh на задній план

-L <machine1>:<portA>:<machine2>:<portB> :

переслати <machine2>:<portB>(віддалений обсяг) на <machine1>:<portA>(локальний обсяг)


як згадує @ 0xcaff, вам слід слухати інші інтерфейси
mmohaveri

Для конкретного порту, ssh -p PORTNUMBER -N -f -L localhost: 16006: localhost: 6006 <user @ remote>.
Вей Ши

63

Вам не потрібно робити нічого фантазійного. Просто запустіть:

tensorboard --host 0.0.0.0 <other args here>

і з'єднатись із URL-адресою та портом свого сервера. --host 0.0.0.0Каже tensorflow слухати від з'єднань на всіх IPv4 - адрес на локальному комп'ютері.


Це має бути правильна відповідь. Здебільшого тензорна дошка просто не пов'язана з адресою, видимою для зовнішніх служб.
Дуейн

1
Він не працює для мене на віддаленому сервері ... Що мені не вистачає?
Ідан азурі

Якщо ви хочете слухати на загальнодоступному IP, ви можете зробити: tensorboard --host $ (ім'я хоста) -I <інші арг тут> А потім ви можете скопіювати і вставити URL - адреса , який tensorboard друкує: TensorBoard 1.12.2 на 10,0 .50.42: 6006 (Натисніть CTRL + C, щоб вийти)
Morten

1
@Idanazuri У вас є http-доступ до віддаленої машини, або він доступний через firewalled (наприклад: доступний лише через ssh-з'єднання)? Якщо це лише ssh, то ця відповідь не підійде для вас.
drevicko

17

Інший варіант, якщо ви не можете змусити його працювати з якихось причин, це просто встановити каталог logdir у вашу файлову систему за допомогою sshfs:

sshfs user@host:/home/user/project/summary_logs ~/summary_logs

а потім запустити Tensorboard локально.


10
  1. Знайдіть свій локальний зовнішній IP-адрес за допомогою googling "whats my ip"або введення цієї команди:wget http://ipinfo.io/ip -qO -
  2. Визначте свій віддалений зовнішній IP. Це, мабуть, те, що з’являється після вашого імені користувача, коли ssh-ing виходить на віддалений сервер. Ви також можете wget http://ipinfo.io/ip -qO -знову звідти.
  3. Забезпечте трафік віддаленого сервера, щоб просто прийняти вашу локальну зовнішню IP-адресу
  4. Виконати тензорну дошку. Зверніть увагу на порт, яким він за замовчуванням:6006
  5. Введіть у браузері свою віддалену зовнішню IP-адресу, а потім порт:123.123.12.32:6006

Якщо ваш віддалений сервер відкритий для руху з вашої локальної IP-адреси, ви зможете побачити ваш віддалений Tensorboard.

Попередження : якщо весь інтернет-трафік може отримати доступ до вашої системи (якщо ви не вказали єдиної IP-адреси, яка може отримати доступ до неї), будь-хто може мати можливість переглядати ваші результати TensorBoard і тікати, створюючи SkyNet самостійно.


7

Це не правильна відповідь, а усунення несправностей, сподіваємось, допомагає іншим менш досвідченим мережам, як я.

У моєму випадку (firefox + ubuntu16) браузер підключався, але показував порожню сторінку (з логотипом тензорної дошки на вкладці), і активність журналу взагалі не відображалася. Я до сих пір не знаю, що може бути причиною цього (я не дуже заглядав, але якщо хтось знає, будь ласка, повідомте!), Але я вирішив це, перейшовши на браузер за замовчуванням ubuntu. Ось точні кроки, майже такі ж, як у відповіді @Olivier Moindrot:

  1. На сервері запустіть тензорну плату: tensorboard --logdir=. --host=localhost --port=6006
  2. На клієнті відкрийте тунель ssh ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
  3. Відкрийте ubuntu Browserі відвідайте localhost:16006. Сторінка тензорної дошки повинна завантажуватися без особливих затримок.

Щоб переконатися, що тунель SSH ефективно працює, може допомогти простий ехо-сервер на зразок цього сценарію python :

  1. Помістіть скрипт у <ECHO>.pyфайл на сервері та запустіть його python <ECHO>.py. Тепер сервер матиме сценарій ехо-прослуховування на 0.0.0.0what555 .
  2. На клієнті відкрийте тунель ssh ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
  3. На клієнті, в тому ж терміналі, який використовується для відкриття тунелю (крок 2.), видача telnet localhost 12345підключиться до сценарію ехо, що працює на сервері. Введення helloта натискання клавіші Enter має надрукувати helloназад. Якщо це так, ваш тунель SSH працює. Це був мій випадок і привів мене до висновку, що проблема стосувалася браузера. Спроба підключитися з іншого терміналу призвела до замерзання терміналу.

Як я вже сказав, сподіваюся, що це допоможе!
Ура,
Андрес


У мене точно однакова проблема щодо chromium + ubuntu14, ще гірше, він прекрасно працює для порту, який пересилається з одного комп’ютера, але показує ту ж порожню сторінку (з правильним фавіконом) для іншого. Firefox працює чудово. Ще не з'ясував, просто зараз використовує firefox.
LucasB

Так, багато факторів, але якщо це працює ... інша річ, що слід зазначити, що версія протитуберкульозної системи, яка постачається з TF, відрізняється від окремої ТБ, яку можна знайти тут ... https://github.com/dmlc/tensorboardпросто для додавання більше альтернатив до налаштування. Ура
фр_андрес

7

Ви можете безпосередньо запустити наступну команду на терміналі віддаленого сервера для запуску тензорної плати:

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

4

Ви повинні створити ssh-з'єднання за допомогою переадресації портів:

ssh -L 16006:127.0.0.1:6006 user@host

Потім ви запускаєте tensorboardкоманду:

tensorboard --logdir=/path/to/logs

Тоді ви можете легко отримати доступ до tensorboardсвого браузера в розділі:

localhost:16006/

3

--bind_all варіант корисний.

$ tensorboard --logdir runs --bind_all

Порт автоматично вибирається з 6006. Поступово (6006, 6007, 6008 ...)


1

Для всіх, хто повинен використовувати клавіші ssh (для корпоративного сервера).

Просто додайте -i /.ssh/id_rsaв кінці.

$ ssh -N -f -L localhost:8211:localhost:6007 myname@servername -i /.ssh/id_rsa


0

Під час роботи тензорної плати дайте ще один варіант --host = ip вашої системи, і тоді ви можете отримати доступ до неї з іншої системи, використовуючи http: // ip вашої хост-системи : 6006


0

Інший підхід полягає у використанні зворотного проксі-сервера , який дозволяє переглядати Tensorboard з будь-якого пристрою, підключеного до Інтернету, без SSHing . Такий підхід може, наприклад, значно полегшити / простежити перегляд Tensorboard на мобільних пристроях.

Кроки:

1) Завантажте зворотний проксі Ngrok на віддалений комп'ютер, на якому розміщено Tensorboard. Інструкції див. На веб-сторінці https://ngrok.com/download (~ 5 хвилин).

2) Запустити ngrok http 6006(припустимо, що ви розміщуєте Tensorboard на порту 6006)

3) Збережіть URL-адресу, яку виводить ngrok:

введіть тут опис зображення

4) Введіть це в будь-який браузер, щоб переглянути TensorBoard:

введіть тут опис зображення

Особлива подяка Сему Кіркілес

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.