Как я могу запустить 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>(локальная область)


как упомянуто @ 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-адресах на локальном компьютере.


Это должен быть правильный ответ .. скорее всего, тензорборд просто не привязан к адресу, видимому для внешних служб.
— 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 локально.


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 работает. Это был мой случай, и я пришел к выводу, что проблема связана с браузером. Попытка подключиться с другого терминала привела к зависанию терминала.

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


У меня точно такая же проблема с 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 ...)


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.