如果在远端服务器上运行 TensorBoard 并且希望在本地机器上查看,可以使用 SSH 隧道将远程服务器的 TensorBoard 端口转发到本地机器。
使用 SSH 隧道
1. 在远端服务器上启动 TensorBoard
tensorboard --logdir=./runs --host 0.0.0.0 --port 6006
注意,这一步需要进入到对应文件夹或者使用绝对路径
这样,TensorBoard 将会监听所有 IP 地址,并在端口 6006 上运行。
2. 在本地机器上设置 SSH 隧道
假设远端服务器地址为 remote_server_address
,用户名为 username
,在本地机器的终端中运行以下命令:
ssh -L 6006:localhost:6006 username@remote_server_address
这将把远端服务器的 6006 端口映射到本地机器的 6006 端口。
3. 在本地浏览器中查看 TensorBoard
在本地机器的浏览器中打开 http://localhost:6006
,应该能够看到远端服务器上的 TensorBoard 界面。
端口 6006 被占用的解决
1. 本地机器上的 6006 端口被占用
可以使用不同的本地端口。例如,将远程的 6006 端口映射到本地的 7007 端口:
ssh -L 7007:localhost:6006 user@123.45.67.89
2. 服务器6006端口被占用——TensorBoard could not bind to port 6006, it was already in use
-
可以通过使用其他端口的方式解决
tensorboard --logdir=./runs --host 0.0.0.0 --port 7007
-
也可以找到占用6006端口的进程并将其停止
找出占用 6006 端口的进程
sudo lsof -i :6006
会看到类似如下的输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python3 1234 user 13u IPv4 23456 0t0 TCP *:6006 (LISTEN)
这里,PID
列表示进程 ID。
kill -9 1234
杀死占用该端口的进程