ฉันยังใหม่กับ 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 เครื่องในพื้นที่ของคุณดังนั้นคุณควรปล่อยไว้ตามที่เป็นอยู่ อย่าเปลี่ยนเป็นไอพีระยะไกลของคุณ ฉันเสียเวลาไป 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 tunnel ทำงานได้อย่างมีประสิทธิภาพเซิร์ฟเวอร์ echo แบบธรรมดาเช่นสคริปต์ pythonสามารถช่วยได้:
<ECHO>.py
ไฟล์ในเซิร์ฟเวอร์และเรียกใช้ด้วยpython <ECHO>.py
. ตอนนี้เซิร์ฟเวอร์จะมีการฟังสคริปต์ echo ใน0.0.0.0:5555 0.0.0.0:5555ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
จะเชื่อมต่อกับสคริปต์ก้องที่ทำงานในเซิร์ฟเวอร์ การพิมพ์hello
และกด Enter ควรพิมพ์hello
กลับ หากเป็นเช่นนั้นแสดงว่าอุโมงค์ SSH ของคุณใช้งานได้ นี่เป็นกรณีของฉันและนำฉันไปสู่ข้อสรุปว่าปัญหาเกี่ยวข้องกับเบราว์เซอร์ การพยายามเชื่อมต่อจากเทอร์มินัลอื่นทำให้เทอร์มินัลค้างอย่างที่บอกหวังว่ามันจะช่วยได้!
ไชโย
Andres
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/
--bind_all
ตัวเลือกมีประโยชน์
$ tensorboard --logdir runs --bind_all
พอร์ตจะถูกเลือกโดยอัตโนมัติจาก 6006 ทีละน้อย (6006, 6007, 6008 ... )
สำหรับใครก็ตามที่ต้องใช้คีย์ ssh (สำหรับเซิร์ฟเวอร์ขององค์กร)
เพียงเพิ่ม-i /.ssh/id_rsa
ในตอนท้าย
$ ssh -N -f -L localhost:8211:localhost:6007 myname@servername -i /.ssh/id_rsa
ในขณะที่เรียกใช้ tensorboard ให้เพิ่มอีกหนึ่งตัวเลือก --host = ip ของระบบของคุณจากนั้นคุณสามารถเข้าถึงได้จากระบบอื่นโดยใช้ http: // ip ของระบบโฮสต์ของคุณ : 6006
อีกวิธีหนึ่งคือการใช้reverse proxyซึ่งช่วยให้คุณดู Tensorboard จากอุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ตโดยไม่ต้องใช้ SSHingSSHing วิธีนี้ช่วยให้ดู Tensorboard บนอุปกรณ์มือถือได้ง่ายขึ้น / เข้าถึงได้ง่ายขึ้น
ขั้นตอน:
1) ดาวน์โหลด reverse proxy Ngrok บนเครื่องระยะไกลที่โฮสต์ Tensorboard ดูhttps://ngrok.com/downloadสำหรับคำแนะนำ (ตั้งค่าประมาณ 5 นาที)
2) เรียกใช้ ngrok http 6006
(สมมติว่าคุณกำลังโฮสต์ Tensorboard บนพอร์ต 6006)
3) บันทึก URL ที่เอาท์พุท ngrok:
4) ป้อนลงในเบราว์เซอร์ใดก็ได้เพื่อดู TensorBoard:
ขอขอบคุณเป็นพิเศษสำหรับSam Kirkiles