Как я могу запустить Tensorboard на удаленном сервере?

117

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

пользователь
источник
Некоторые возможные решения: (1) Это может быть то же самое, что и запуск на локальном компьютере, хотя я не проверял это: после запуска он предоставляет вам номер порта, и вы получаете доступ к нему из браузера на своем локальном компьютере. машина. (2) Можете ли вы использовать программное обеспечение для удаленного рабочего стола, такое как RealVNC? (3) Я предполагаю, что вы также выполняете вычисления тензорного потока на том же удаленном компьютере; вы также можете загрузить файлы журнала на свой локальный компьютер и запустить тензорборд на своем локальном компьютере.
Яо Чжан

Ответы:

186

Вот что я делаю, чтобы избежать проблем с принятием удаленным сервером вашего локального внешнего IP-адреса:

  • когда я подключаюсь к машине по ssh, я использую возможность -Lпереноса порта 6006удаленного сервера в порт16006 моей машины (например): ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip

Что он делает, так это то, что все на порте 6006сервера (входящего 127.0.0.1:6006) будет перенаправлено на мою машину через порт 16006.


  • Затем вы можете запустить tenorboard на удаленном компьютере, используя стандарт 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
@Fan: проверьте другой ответ ниже . По сути, вы можете добавить -Nфлаг, чтобы не открывать оболочку ssh. Добавление -fставит ssh-соединение в фоновый режим.
Olivier Moindrot 02
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>(локальная область)

eqzx
источник
как упомянуто @ 0xcaff, вместо этого вы должны слушать на других своих интерфейсах
mmohaveri
Для конкретного порта ssh -p НОМЕР ПОРТА -N -f -L localhost: 16006: localhost: 6006 <user @ remote>.
Wey Shi
63

Не нужно делать ничего особенного. Просто беги:

tensorboard --host 0.0.0.0 <other args here>

и подключитесь с помощью URL-адреса и порта вашего сервера. Он --host 0.0.0.0сообщает тензорному потоку, что нужно прослушивать соединения на всех IPv4-адресах на локальном компьютере.

0xcaff
источник
Это должен быть правильный ответ .. скорее всего, тензорборд просто не привязан к адресу, видимому для внешних служб.
Duane
1
У меня не работает для удаленного сервера ... Что мне не хватает?
Идан Азури
Если вы хотите прослушивать только свой общедоступный IP-адрес, вы можете сделать: tenorboard --host $ (hostname -I) <other args here> А затем вы можете скопировать и вставить URL-адрес, который выводит tenorboard: TensorBoard 1.12.2 в 10.0 .50.42: 6006 (Для выхода нажмите CTRL + C)
Мортен
1
@Idanazuri У вас есть http-доступ к вашему удаленному компьютеру или он защищен брандмауэром (например: доступен только через ssh-соединение)? Если это только ssh, то этот ответ вам не подойдет.
drevicko
17

Другой вариант, если вы не можете заставить его работать по какой-либо причине, - просто смонтировать каталог logdir в вашей файловой системе с помощью sshfs:

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

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

Ученый1642
источник
10
  1. Найдите свой локальный внешний IP-адрес, выполнив поиск в Google "whats my ip"или введя следующую команду:wget http://ipinfo.io/ip -qO -
  2. Определите ваш удаленный внешний IP-адрес. Вероятно, это то, что идет после вашего имени пользователя при подключении ssh к удаленному серверу. Вы также можетеwget http://ipinfo.io/ip -qO - снова оттуда.
  3. Защитите трафик вашего удаленного сервера, чтобы просто принять ваш локальный внешний IP-адрес
  4. Запустите Tensorboard. Обратите внимание на порт по умолчанию:6006
  5. Введите удаленный внешний IP-адрес в браузере и укажите порт:123.123.12.32:6006

Если ваш удаленный сервер открыт для трафика с вашего локального IP-адреса, вы должны увидеть свою удаленную Tensorboard.

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

Джон Аллен
источник
7

Это неправильный ответ, но средство устранения неполадок, надеюсь, поможет другим менее опытным сетевым специалистам, таким как я.

В моем случае (firefox + ubuntu16) браузер подключался, но показывал пустую страницу (с логотипом tenorboard на вкладке), и никаких действий журнала не отображалось. Я до сих пор не знаю, в чем может быть причина этого (особо не разбирался, но если кто-нибудь знает, дайте знать!), Но я решил, что переключился на браузер Ubuntu по умолчанию. Вот точные шаги, почти такие же, как в ответе @Olivier Moindrot:

  1. На сервере запускаем tenorboard: 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.0:5555 .
  2. На клиенте откройте туннель ssh ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
  3. На клиенте, в том же терминале, который использовался для открытия туннеля (шаг 2), выдача telnet localhost 12345будет подключаться к эхо-сценарию, запущенному на сервере. Ввод helloи нажатие Enter должны распечатать helloобратно. Если это так, ваш туннель SSH работает. Это был мой случай, и я пришел к выводу, что проблема связана с браузером. Попытка подключиться с другого терминала привела к зависанию терминала.

Как я уже сказал, надеюсь, это поможет!
Привет,
Андрес

fr_andres
источник
У меня точно такая же проблема с chromium + ubuntu14, даже хуже, он отлично работает для порта, перенаправленного с одного компьютера, но показывает ту же пустую страницу (с правильным значком) для другого. Firefox работает нормально. Все еще не понял, просто использовал firefox сейчас.
LucasB
Да, задействовано много факторов, но пока это работает ... еще одна вещь, которую следует отметить, это то, что версия TB, которая поставляется с TF, отличается от автономной версии TB, которую можно найти здесь ... https://github.com/dmlc/tensorboardпросто чтобы добавить больше альтернатив к настроить. Cheers
fr_andres
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 ...)

plhn
источник
1

Для всех, кому необходимо использовать ssh-ключи (для корпоративного сервера).

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

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

Aerin
источник
0

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

user2973566
источник
0

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

Шаги:

1) Загрузите обратный прокси-сервер Ngrok на удаленный компьютер, на котором размещен Tensorboard. См. Https://ngrok.com/download для инструкций (установка ~ 5 минут).

2) Беги ngrok http 6006 (при условии, что вы размещаете Tensorboard на порту 6006)

3) Сохраните URL-адрес, который выводит ngrok:

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

4) Введите это в любой браузер, чтобы просмотреть TensorBoard:

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

Особая благодарность Сэму Киркилсу

Эндрю Шрайбер
источник