Deep Learning | Tensorboard 相关

远程访问Tensorboard

该问题与远程访问Ray Dashboard类似,但是问题是:在开启了tensorboard之后,无论是用–bind_all参数,还是用–host=0.0.0.0,始使无法在netstat -l | grep 6006中看到6006端口的监听信息。然而,lsof发现该端口确实占用中。

				
					# netstat do not find 6006
(pytorch_latest_p37) ubuntu@ip-172-31-27-39:~/cw/pose-estimate-python/Object_detection$ netstat -l | grep 6006

# but lsof find 6006
(pytorch_latest_p37) ubuntu@ip-172-31-27-39:~/cw/pose-estimate-python/Object_detection$ lsof -i:6006
COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
tensorboa 3489 ubuntu    9u  IPv4  35122      0t0  TCP localhost:x11-6 (LISTEN)

				
			

为什么会出现这种情况?有人说是lsof中出现但netstat中不出现的端口属于非TCP/IP协议,但我也不知道。总之,在这种情况下,虽然服务器安全组放行了6006端口,也可以在本地wget到,但是远程一直无法访问。

于是只能转换思路,参考这篇文章的方法,做一个端口映射,通过SSH将远程的6006端口映射到本地的6006端口上。由于AWS的EC2实例需要密钥,所以相对麻烦一些。打开Ubuntu,运行如下命令完成端口映射。其中,-i还是指定私钥,-L就是端口映射的关键,格式为portA:remoteHost:portB,其意义是使本地的端口A映射到远程服务器remoteHost的端口B,这里使用的“6006:localhost:6006”,就相当于远程的6006端口映射到本地的6006端口。最后面的长串是远程服务器地址和用户名。该命令运行后,直接挂起,没有输出,也没有返回,就让它这样连接着。会不会断掉?不清楚。

				
					canwang@DESKTOP-NMGV54U:~/key/aws$ ssh -i "canwang.pem" -NL 6006:localhost:6006 ubuntu@ec2-18-222-172-153.us-east-2.compute.amazonaws.com
				
			

下面就简单了。在远程服务器上正常运行tensorboard,不用指定host和端口后,默认方式指定–logdir即可。

				
					tensorboard --logdir=your_log_dir
				
			

然后,在本地电脑上打开浏览器,输入:localhost:6006,即可访问远程tensorboard了。

发表评论

Close Menu