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?
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?
Câu trả lời:
Đâ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:
-L
để chuyển cổng 6006
của máy chủ từ xa vào cổng 16006
củ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 6006
củ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
.
tensorboard --logdir log
với 6006
cổng mặc định127.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!
-4
cờ 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ọ.
-N
cờ để tránh mở một trình bao ssh. Việc thêm -f
sẽ đặt kết nối ssh ở chế độ nền.
Bạn có thể chuyển tiếp bằng một ssh
lệ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 ý.
từ máy cục bộ của bạn , chạy
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
trên máy từ xa , chạy:
tensorboard --logdir <path> --port 6006
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ộ)
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.0
tensorflow 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ộ.
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ộ.
"whats my ip"
hoặc nhập lệnh sau:wget http://ipinfo.io/ip -qO -
wget http://ipinfo.io/ip -qO -
lại từ đó.6006
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.
Đâ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:
tensorboard --logdir=. --host=localhost --port=6006
ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
Browser
và 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:
<ECHO>.py
tệ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 .ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
sẽ kết nối với tập lệnh echo đang chạy trong máy chủ. Nhập hello
và nhấn enter sẽ in hello
trở 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
https://github.com/dmlc/tensorboard
chỉ để thêm nhiều lựa chọn thay thế hơn cho thiết lập. Chúc mừng
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
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 tensorboard
lệnh:
tensorboard --logdir=/path/to/logs
Sau đó, bạn có thể dễ dàng truy cập tensorboard
vào trình duyệt của mình theo:
localhost:16006/
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
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:
4) Nhập nó vào bất kỳ trình duyệt nào để xem TensorBoard:
Đặc biệt cảm ơn Sam Kirkiles