Làm cách nào để chạy Tensorboard trên máy chủ từ xa?


116

Tôi mới sử dụng Tensorflow và sẽ được hưởng lợi rất nhiều từ một số hình dung về những gì tôi đang làm. Tôi hiểu rằng Tensorboard là một công cụ trực quan hữu ích, nhưng làm cách nào để chạy nó trên máy Ubuntu từ xa của mình?


Một số giải pháp khả thi: (1) Nó có thể giống như chạy trên máy cục bộ, mặc dù tôi chưa xác minh điều này: sau khi bạn chạy nó, nó cung cấp cho bạn một số cổng để bạn truy cập nó từ trình duyệt trên máy cục bộ của bạn máy móc. (2) Bạn có thể sử dụng phần mềm máy tính từ xa như RealVNC không? (3) Tôi giả sử bạn cũng chạy tính toán tensorflow trên cùng một máy từ xa; bạn cũng có thể tải các tệp nhật ký xuống máy cục bộ và chạy tensorboard trên máy cục bộ của mình.
Yao Zhang

Câu trả lời:


185

Đây là những gì tôi làm để tránh các sự cố khiến máy chủ từ xa chấp nhận IP bên ngoài cục bộ của bạn:

  • khi tôi ssh vào máy, tôi sử dụng tùy chọn -Lđể chuyển cổng 6006của máy chủ từ xa vào cổng 16006của máy của tôi (ví dụ): ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip

Những gì nó làm là mọi thứ trên cổng 6006của máy chủ (trong 127.0.0.1:6006) sẽ được chuyển tiếp đến máy của tôi trên cổng 16006.


  • Sau đó, bạn có thể khởi chạy tensorboard trên máy từ xa bằng cách sử dụng tiêu chuẩn tensorboard --logdir logvới 6006cổng mặc định
  • Trên máy cục bộ của bạn, hãy truy cập http://127.0.0.1:16006 và tận hưởng TensorBoard từ xa của bạn.

1
Cũng gặp sự cố với lô tensorboard là tất cả màu đen trên Safari, nó hoạt động trên Chrome (liên quan đến phát hành # 4856 )
Olivier Moindrot

2
Gợi ý nhỏ: 127.0.0.1đây là ip máy cục bộ của bạn , vì vậy bạn nên để nguyên như vậy. Không thay đổi nó thành ip từ xa của bạn. Tôi đã lãng phí 10 phút cho việc này. Tôi thật ngu ngốc!
DarkZero

điều này và việc thực thi IPv4 với -4cờ ssh đã giải quyết được nó. Đọc xung quanh các câu hỏi tương tự, nhiều người đã gặp sự cố với địa chỉ IPv6 trong máy chủ của họ.
Robert Parcus

Có vẻ như tôi phải ở trong trình bao ssh. Nếu tôi đóng trình bao ssh, không có phản hồi từ bảng điều khiển từ xa. Có cách nào để vẫn được kết nối với tensorboard trong khi tắt trình bao ssh?
Người hâm mộ

@Fan: kiểm tra câu trả lời khác bên dưới . Về cơ bản, bạn có thể thêm -Ncờ để tránh mở một trình bao ssh. Việc thêm -fsẽ đặt kết nối ssh ở chế độ nền.
Olivier Moindrot

78

Bạn có thể chuyển tiếp bằng một sshlệnh khác mà không cần ràng buộc với cách bạn đang kết nối với máy chủ (thay thế cho câu trả lời khác). Do đó, thứ tự của các bước dưới đây là tùy ý.

  1. từ máy cục bộ của bạn , chạy

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

  2. trên máy từ xa , chạy:

    tensorboard --logdir <path> --port 6006

  3. Sau đó, điều hướng đến (trong ví dụ này) http: // localhost: 16006 trên máy cục bộ của bạn.

(giải thích về lệnh ssh:

-N : không có lệnh từ xa

-f : đặt ssh trong nền

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

chuyển tiếp <machine2>:<portB>(phạm vi từ xa) tới <machine1>:<portA>(phạm vi cục bộ)


như đã đề cập bởi @ 0xcaff, bạn nên lắng nghe trên các giao diện khác của bạn thay vì
mmohaveri

Đối với cổng cụ thể, ssh -p PORTNUMBER -N -f -L localhost: 16006: localhost: 6006 <user @ remote>.
Wey Shi

63

Bạn không cần phải làm bất cứ điều gì cầu kỳ. Chỉ cần chạy:

tensorboard --host 0.0.0.0 <other args here>

và kết nối với url và cổng máy chủ của bạn. Lệnh --host 0.0.0.0tensorflow lắng nghe từ các kết nối trên tất cả các địa chỉ IPv4 trên máy cục bộ.


Đây phải là câu trả lời chính xác .. hầu hết có khả năng là tensorboard không bị ràng buộc với một địa chỉ mà các dịch vụ bên ngoài nhìn thấy.
Duane

1
Nó không hoạt động đối với tôi đối với một máy chủ từ xa ... Tôi đang thiếu gì?
Idan azuri

Nếu bạn chỉ muốn nghe trên IP công cộng của mình, bạn có thể thực hiện: tensorboard --host $ (hostname -I) <các args khác tại đây> Và sau đó bạn có thể sao chép-dán URL mà tensorboard in ra: TensorBoard 1.12.2 tại 10.0 .50,42: 6006 (Nhấn CTRL + C để thoát)
Morten

1
@Idanazuri Bạn có quyền truy cập http vào máy tính từ xa của mình hay máy tính này có tường lửa (ví dụ: chỉ có thể truy cập thông qua kết nối ssh)? Nếu nó chỉ là ssh, thì câu trả lời này sẽ không phù hợp với bạn.
drevicko

17

Một tùy chọn khác nếu bạn không thể làm cho nó hoạt động vì một số lý do là chỉ cần gắn một thư mục logdir trên hệ thống tệp của bạn bằng sshfs:

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

và sau đó chạy Tensorboard cục bộ.


10
  1. Tìm IP bên ngoài cục bộ của bạn bằng cách truy cập vào googling "whats my ip"hoặc nhập lệnh sau:wget http://ipinfo.io/ip -qO -
  2. Xác định IP bên ngoài từ xa của bạn . Đây có thể là những gì xuất hiện sau tên người dùng của bạn khi ssh-ing vào máy chủ từ xa. Bạn cũng có thể làm wget http://ipinfo.io/ip -qO -lại từ đó.
  3. Bảo mật lưu lượng máy chủ từ xa của bạn để chỉ chấp nhận địa chỉ IP bên ngoài cục bộ của bạn
  4. Chạy Tensorboard. Lưu ý cổng mà nó mặc định là:6006
  5. Nhập địa chỉ IP bên ngoài từ xa của bạn vào trình duyệt của bạn, sau đó là cổng:123.123.12.32:6006

Nếu máy chủ từ xa của bạn đang mở cho lưu lượng truy cập từ địa chỉ IP cục bộ của bạn, bạn sẽ có thể thấy Tensorboard từ xa của mình.

Cảnh báo : nếu tất cả lưu lượng truy cập internet có thể truy cập vào hệ thống của bạn (nếu bạn chưa chỉ định một địa chỉ IP duy nhất có thể truy cập nó), bất kỳ ai cũng có thể xem kết quả TensorBoard của bạn và chạy tự tạo SkyNet.


7

Đây không phải là một câu trả lời thích hợp nhưng là một trình gỡ rối, hy vọng sẽ giúp ích cho những người dùng mạng ít kinh nghiệm hơn như tôi.

Trong trường hợp của tôi (firefox + ubuntu16), trình duyệt đang kết nối, nhưng hiển thị một trang trống (với biểu tượng tensorboard trên tab) và không có hoạt động nhật ký nào được hiển thị. Tôi vẫn không biết điều gì có thể là lý do cho điều đó (không tìm hiểu nhiều về nó nhưng nếu ai biết hãy cho biết!), Nhưng tôi đã giải quyết được nó khi chuyển sang trình duyệt mặc định của ubuntu. Đây là các bước chính xác, khá giống với câu trả lời của @Olivier Moindrot:

  1. Trên máy chủ, bắt đầu tensorboard: tensorboard --logdir=. --host=localhost --port=6006
  2. Trên máy khách, mở đường hầm ssh ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
  3. Mở ubuntu's Browservà truy cập localhost:16006. Trang tensorboard sẽ tải mà không có nhiều độ trễ.

Để kiểm tra xem đường hầm SSH có hoạt động hiệu quả hay không, một máy chủ phản hồi đơn giản như tập lệnh python này có thể giúp:

  1. Đặt tập lệnh vào một <ECHO>.pytệp trong máy chủ và chạy nó với python <ECHO>.py. Bây giờ máy chủ sẽ nghe tập lệnh echo trên 0.0.0.0:5555 .
  2. Trên máy khách, mở đường hầm ssh ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
  3. Trên máy khách, trong cùng một thiết bị đầu cuối được sử dụng để mở đường hầm (bước 2), việc phát hành telnet localhost 12345sẽ kết nối với tập lệnh echo đang chạy trong máy chủ. Nhập hellovà nhấn enter sẽ in hellotrở lại. Nếu đúng như vậy, đường hầm SSH của bạn đang hoạt động. Đây là trường hợp của tôi và dẫn tôi đến kết luận rằng vấn đề liên quan đến trình duyệt. Việc cố gắng kết nối từ một thiết bị đầu cuối khác đã khiến thiết bị đầu cuối bị đóng băng.

Như tôi đã nói, hy vọng nó sẽ giúp!
Chúc mừng,
Andres


Tôi gặp vấn đề tương tự chính xác trên chromium + ubuntu14, thậm chí tệ hơn, nó hoạt động hoàn toàn tốt cho cổng được chuyển tiếp từ một máy tính nhưng lại hiển thị cùng một trang trống (với biểu tượng yêu thích chính xác) cho một máy tính khác. Firefox hoạt động tốt. Vẫn không tìm ra nó, chỉ sử dụng firefox bây giờ.
LucasB

Vâng, nhiều yếu tố liên quan nhưng miễn là nó hoạt động ... một điều khác cần lưu ý là phiên bản TB đi kèm với TF khác với phiên bản độc lập TB có thể tìm thấy ở đây ... https://github.com/dmlc/tensorboardchỉ để thêm nhiều lựa chọn thay thế hơn cho thiết lập. Chúc mừng
fr_andres

7

Bạn có thể chạy trực tiếp lệnh sau trên thiết bị đầu cuối của máy chủ từ xa để chạy tensorboard:

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

Hoặc bạn cũng có thể khởi động bảng căng trong máy tính xách tay ipython của mình:

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

4

Bạn phải tạo kết nối ssh bằng cách sử dụng chuyển tiếp cổng:

ssh -L 16006:127.0.0.1:6006 user@host

Sau đó, bạn chạy tensorboardlệnh:

tensorboard --logdir=/path/to/logs

Sau đó, bạn có thể dễ dàng truy cập tensorboardvào trình duyệt của mình theo:

localhost:16006/

3

--bind_all tùy chọn hữu ích.

$ tensorboard --logdir runs --bind_all

Cổng sẽ được tự động chọn tăng dần từ 6006. (6006, 6007, 6008 ...)


1

Đối với bất kỳ ai phải sử dụng khóa ssh (đối với máy chủ công ty).

Chỉ cần thêm -i /.ssh/id_rsavào cuối.

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


0

Trong khi chạy tensorboard, cung cấp thêm một tùy chọn --host = ip của hệ thống của bạn và sau đó bạn có thể truy cập nó từ hệ thống khác bằng cách sử dụng http: // ip của hệ thống máy chủ của bạn : 6006


0

Một cách tiếp cận khác là sử dụng proxy ngược , cho phép bạn xem Tensorboard từ bất kỳ thiết bị được kết nối internet nào mà không có SSHing . Cách tiếp cận này có thể làm cho việc xem Tensorboard trên thiết bị di động trở nên dễ dàng / dễ dàng hơn nhiều.

Các bước:

1) Tải xuống proxy ngược Ngrok trên máy từ xa lưu trữ Tensorboard của bạn. Xem https://ngrok.com/download để biết hướng dẫn (thiết lập khoảng 5 phút).

2) Chạy ngrok http 6006 (giả sử bạn đang lưu trữ Tensorboard trên cổng 6006)

3) Lưu URL mà ngrok xuất ra:

nhập mô tả hình ảnh ở đây

4) Nhập nó vào bất kỳ trình duyệt nào để xem TensorBoard:

nhập mô tả hình ảnh ở đây

Đặc biệt cảm ơn Sam Kirkiles

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.