Tensorboard'u uzak bir sunucuda nasıl çalıştırabilirim?


116

Tensorflow'da yeniyim ve yaptığım şeyin bazı görselleştirmelerinden büyük ölçüde faydalanabilirim. Tensorboard'un yararlı bir görselleştirme aracı olduğunu anlıyorum, ancak onu uzak Ubuntu makinemde nasıl çalıştırabilirim?


Bazı olası çözümler: (1) Bunu doğrulamamış olsam da yerel bir makinede çalıştırmakla aynı olabilir: çalıştırdıktan sonra, yerel ağınızdaki tarayıcıdan erişebilmeniz için size bir bağlantı noktası numarası sağlar. makine. (2) RealVNC gibi uzak masaüstü yazılımlarını kullanabiliyor musunuz? (3) Aynı uzak makinede tensorflow hesaplamaları da çalıştırdığınızı varsayıyorum; ayrıca günlük dosyalarını yerel makinenize indirebilir ve yerel makinenizde tensorboard çalıştırabilirsiniz.
Yao Zhang

Yanıtlar:


186

Uzak sunucunun yerel harici IP'nizi kabul etmesini sağlamakla ilgili sorunları önlemek için şunları yapıyorum:

  • Makineye ssh girdiğimde , uzak sunucunun bağlantı noktasını makinemin bağlantı -Lnoktasına aktarma seçeneğini kullanıyorum (örneğin): 600616006 ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip

Ne yapar noktası üzerinde o her şeydir 6006(sunucunun 127.0.0.1:6006edilecektir) iletilen bağlantı noktasında benim makineye 16006.


  • Daha sonra tensorboard --logdir log, varsayılan 6006bağlantı noktasına sahip bir standart kullanarak uzak makinede tensorboard'u başlatabilirsiniz.
  • Yerel makinenizde http://127.0.0.1:16006 adresine gidin ve uzak TensorBoard'unuzun keyfini çıkarın.

1
Ayrıca Safari'de tensorboard grafiklerinin tamamen siyah olmasıyla ilgili bir sorun vardı, Chrome'da çalışıyor ( 4856 numaralı sorunla ilgili )
Olivier Moindrot

2
Küçük bir ipucu: 127.0.0.1İşte yerel makinenizin ip'i, bu yüzden onu olduğu gibi bırakmalısınız. Uzak ip'inizle değiştirmeyin. Bununla 10 dakikamı boşa harcadım. Ne kadar aptalım!
DarkZero

bu ve IPv4'ü -4ssh bayrağıyla zorlamak sorunu çözdü. Benzer soruları okurken, birçoğunun sunucularındaki IPv6 adresleriyle ilgili sorunları olmuştur.
Robert Parcus

Görünüşe göre ssh kabuğunda kalmam gerekiyor. Ssh kabuğunu kapatırsam, uzak tensorboard'dan yanıt gelmiyor. Ssh kabuğunu kapatırken tensorboard'a bağlı kalmanın bir yolu var mı?
Fan

@Fan: aşağıdaki diğer yanıtı kontrol edin . Temel olarak, -Nbir ssh kabuğunu açmamak için bayrak ekleyebilirsiniz . Eklemek -f, ssh bağlantısını arka plana koyar.
Olivier Moindrot

78

sshSunucuya nasıl bağlandığınıza bağlı olması gerekmeyen başka bir komutla bağlantı noktası iletebilirsiniz (diğer yanıta alternatif olarak). Bu nedenle, aşağıdaki adımların sıralaması keyfidir.

  1. senin dan yerel makinesi, kaçak

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

  2. üzerinde uzaktan makinesi, çalıştırın:

    tensorboard --logdir <path> --port 6006

  3. Ardından, yerel makinenizde (bu örnekte) http: // localhost: 16006 adresine gidin .

(ssh komutunun açıklaması:

-N : uzaktan komut yok

-f : ssh'yi arka plana koyun

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

ilet <machine2>:<portB>(uzak kapsam) <machine1>:<portA>(yerel kapsam)


@ 0xcaff tarafından belirtildiği gibi, bunun yerine diğer arayüzlerinizi dinlemelisiniz
mmohaveri

Belirli bir bağlantı noktası için, ssh -p PORTNUMBER -N -f -L localhost: 16006: localhost: 6006 <user @ remote>.
Wey Shi

63

Süslü bir şey yapmanıza gerek yok. Sadece koş:

tensorboard --host 0.0.0.0 <other args here>

ve sunucu url'niz ve bağlantı noktanızla bağlantı kurun. --host 0.0.0.0Yerel makinedeki tüm IPv4 adreslerini bağlantılarından dinlemek için tensorflow söyler.


Bu doğru cevap olmalı .. büyük olasılıkla tensorboard harici servisler tarafından görülebilen bir adrese bağlı değildir.
Duane

1
Uzak bir sunucu için benim için çalışmıyor ... Neyi kaçırıyorum?
Idan azuri

Yalnızca genel IP'nizde dinlemek istiyorsanız, şunları yapabilirsiniz: tensorboard --host $ (hostname -I) <diğer argümanlar burada> Ve sonra tensorboardun yazdırdığı URL'yi kopyalayıp yapıştırabilirsiniz: TensorBoard 1.12.2, 10.0 .50.42: 6006 (Çıkmak için CTRL + C'ye basın)
Morten

1
@Idanazuri Uzak makinenize http erişiminiz var mı, yoksa güvenlik duvarı var mı (örneğin: yalnızca bir ssh bağlantısıyla erişilebilir)? Yalnızca ssh ise, bu cevap sizin için işe yaramayacaktır.
drevicko

17

Herhangi bir nedenle çalışmasını sağlayamıyorsanız başka bir seçenek, dosya sisteminize sshfs ile bir logdir dizini eklemektir:

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

ve ardından Tensorboard'u yerel olarak çalıştırın.


10
  1. Googling yaparak veya bu komutu girerek yerel harici IP'nizi bulun "whats my ip":wget http://ipinfo.io/ip -qO -
  2. Uzak harici IP'nizi belirleyin . Uzak sunucuya ssh-girerken muhtemelen kullanıcı adınızdan sonra gelen budur. Ayrıca şunları da yapabilirsinizwget http://ipinfo.io/ip -qO -Oradan tekrar .
  3. Uzak sunucu trafiğinizi yalnızca yerel harici IP adresinizi kabul edecek şekilde güvence altına alın
  4. Tensorboard'u çalıştırın. Varsayılan olduğu bağlantı noktasını not edin:6006
  5. Senin girin uzaktan port ardından tarayıcınıza içine dış IP adresini:123.123.12.32:6006

Uzak sunucunuz yerel IP adresinizden gelen trafiğe açıksa, uzak Tensorboard'unuzu görebilmeniz gerekir.

Uyarı : Tüm internet trafiği sisteminize erişebiliyorsa (buna erişebilecek tek bir IP adresi belirtmediyseniz), herkes TensorBoard sonuçlarınızı görüntüleyebilir ve SkyNet'i kendileri oluşturarak kaçabilir.


7

Bu doğru bir cevap değil, bir sorun giderici, umarım benim gibi daha az tecrübeli diğer ağcılara yardımcı olur.

Benim durumumda (firefox + ubuntu16) tarayıcı bağlanıyordu, ancak boş bir sayfa gösteriyor (sekmede tensorboard logosu ile) ve hiç günlük etkinliği gösterilmiyordu. Hala bunun nedeninin ne olabileceğini bilmiyorum (çok fazla bakmadım ama bilen varsa lütfen bildirin!), Ama ubuntu'nun varsayılan tarayıcısına geçerek çözdüm. İşte tam adımlar, @Olivier Moindrot'un cevabındakiyle hemen hemen aynı:

  1. Sunucuda, tensorboard'u başlatın: tensorboard --logdir=. --host=localhost --port=6006
  2. İstemcide ssh tünelini açın ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
  3. Ubuntu'ları açın Browserve ziyaret edin localhost:16006. Tensorboard sayfası çok gecikmeden yüklenmelidir.

SSH tünelinin etkili bir şekilde çalışıp çalışmadığını kontrol etmek için, bu python betiği gibi basit bir yankı sunucusu yardımcı olabilir:

  1. Komut <ECHO>.pydosyasını sunucudaki bir dosyaya koyun ve çalıştırın python <ECHO>.py. Şimdi sunucuda yankı betiği 0.0.0.0:5555'i dinleyecektir .
  2. İstemcide ssh tünelini açın ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
  3. İstemcide, tüneli açmak için kullanılan aynı terminalde (adım 2.), yayınlama telnet localhost 12345, sunucuda çalışan yankı betiğine bağlanacaktır. Yazmak hellove enter tuşuna basmak hellogeri yazdırmalıdır . Durum buysa, SSH tüneliniz çalışıyor demektir. Bu benim durumumdu ve beni sorunun tarayıcıyla ilgili olduğu sonucuna götürdü. Farklı bir terminalden bağlanmaya çalışmak terminalin donmasına neden oldu.

Dediğim gibi, umarım yardımcı olur!
Şerefe,
Andres


Chromium + ubuntu14'te tam olarak aynı sorunu yaşıyorum, daha da kötüsü, bir bilgisayardan iletilen bağlantı noktası için mükemmel çalışıyor, ancak bir başkası için aynı boş sayfayı (doğru favicon ile) gösteriyor. Firefox gayet iyi çalışıyor. Hala çözemedim, şimdi sadece Firefox kullanarak.
LucasB

Evet, birçok faktör dahil ama işe yaradığı sürece ... Dikkat edilmesi gereken bir diğer nokta da, TF ile birlikte gelen TB versiyonunun, burada bulunabilen TB-bağımsız versiyondan farklı olmasıdır ... https://github.com/dmlc/tensorboardsadece daha fazla alternatif eklemek için kurmak. Şerefe
fr_andres

7

Tensorboard'u çalıştırmak için uzak sunucunuzun terminalinde aşağıdaki komutu doğrudan çalıştırabilirsiniz:

tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006

Veya tensorboard'u ipython dizüstü bilgisayarınızdan da başlatabilirsiniz:

%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006

4

Bağlantı noktası yönlendirmeyi kullanarak bir ssh bağlantısı oluşturmanız gerekir:

ssh -L 16006:127.0.0.1:6006 user@host

Ardından şu tensorboardkomutu çalıştırırsınız :

tensorboard --logdir=/path/to/logs

Ardından tensorboardtarayıcınızda şu adresten kolayca erişebilirsiniz :

localhost:16006/

3

--bind_all seçeneği kullanışlıdır.

$ tensorboard --logdir runs --bind_all

Bağlantı noktası, artımlı olarak 6006'dan otomatik olarak seçilecektir. (6006, 6007, 6008 ...)


1

Ssh anahtarlarını kullanması gereken herkes için (kurumsal bir sunucu için).

Sadece -i /.ssh/id_rsasonuna ekleyin .

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


0

Tensorboard'u çalıştırırken bir seçenek daha verin --host = ip sisteminize ve ardından ana sisteminizin http: // ip'ini kullanarak başka bir sistemden ona erişebilirsiniz : 6006


0

Diğer bir yaklaşım, Tensorboard'u SSHing olmadan internete bağlı herhangi bir cihazdan görüntülemenize izin veren bir ters proxy kullanmaktır . Bu yaklaşım, örneğin Tensorboard'u mobil cihazlarda görüntülemeyi çok daha kolay / izlenebilir hale getirebilir.

Adımlar:

1) Tensorboard'u barındıran uzak makinenizde ters proxy Ngrok'u indirin. Talimatlar için https://ngrok.com/download adresine bakın (~ 5 dakikalık kurulum).

2) Çalıştır ngrok http 6006(6006 numaralı bağlantı noktasında Tensorboard'u barındırdığınızı varsayarak)

3) ngrok'un çıkardığı URL'yi kaydedin:

görüntü açıklamasını buraya girin

4) TensorBoard'u görüntülemek için bunu herhangi bir tarayıcıya girin:

görüntü açıklamasını buraya girin

Sam Kirkiles'e özel teşekkürler

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.