本机上想用浏览器看tensorboard画的图,一开始想的好复杂,一台本机A,一台跳板B,一台目标服务器C,我是不是要先把docker容器的6006端口转到目标服务器C的端口c_port,再把c_port转到本机的某个端口local_port…
后来想了想,反正画图考的就是tensorboard logdir下的log文件吗,我在费什么劲…
最后就把装了tensorboard的跳板机端口转发下就可以啦
ssh连接本机和跳板(端口转发)
ssh -L 12345:127.0.0.1:6766 serverip
12345是本机的端口,随便开一个,127.0.0.1:6766是服务器上的端口,一会儿本机的12345端口要监听服务器这个端口,所以tensorboard启动也要指定这个端口(默认是6006,当然经常会被占)。
服务器启动tensorboard
tensorboard --logdir='/**/**/' --port 6766
logdir里是你想分析的模型保存的log文件events.out.tfevents.23blabla的所在目录
浏览器打开tensorboard给的地址
也就是
http://localhost:12345/
docker里开tensorboard
直接在服务器里开tensorboard可能有些问题,比如今天晚上打开tensorboard发现版本竟然被改了,毕竟服务器是共用设备…
如果要在docker里开tensorboard,要先把目标服务器的端口转发到本地:
- 本地端口通过跳板映射到其他机器
HostA 上启动一个 PortA 端口,通过 HostB 转发到 HostC:PortC上,在 HostA 上运行:
HostA$ ssh -L PortA:HostC:PortC user@HostB
这条命令后跳到了jump服务器,然后再ssh连到目标server,在目标server打卡docker(docker需要把tensorboard端口转发到目标server,然后这个端口又会被转发到本地)
docker run --name tensorboard -it -p 6799:6006 --shm-size 64G --rm --gpus all -v 挂载目录 docker名 bash
- 【docker内部】打开
tensorboard --logdir='***' -port=6006 --bind_all
!!! 必须加上–bind_all,不然连接失败。
- 最后在浏览器打开http://localhost:$PortA.