【Pytorch】利用SSH查看远程服务器上的tensorboard可视化界面

现在有个使用场景,本人使用的本地环境是Win10+VSCode,模型训练是在一台Linux服务器上。我想在本地浏览器中直接访问远程服务器上tensorboard的监控界面,而不是通过TeamViewer或者向日葵等远程控制软件先连上服务器再在服务器上查看。
关于如何在pytorch下使用tensorboard可以参照pytorch官网文档(本人使用的版本pytorch1.6.0,再只需安装上tensorboard包即可使用)。


先注明下设备环境:
本地PC机:Windows,编辑器VSCode
远程服务器:Linux,IP地址假设为123.123.123.123,端口号port假设为23456。服务器上的个人账户名假设为xiaoming。

需要说明一点:我这里服务器的端口号是23456而不是ssh端口号22,是因为服务器实际是在另一个局域网内,本地PC机不能直接访问,做了另一个端口转发将123.123.123.123::23456和局域网ip:22映射起来。现在可以理解为这个远程服务器就是由123.123.123.123和23456端口号确定,且可以被本地PC机访问到。


这里我找到了3种方法来实现。

方法1

我自己使用VSCode以及其提供的Remote - SSH插件通过ssh登录远程服务器。
首先,登录到远程服务器上:

ssh xiaoming@123.123.123.123 -p 23456

之后输入账户xiaoming对应的密码,即可登录成功。(Remote - SSH插件的使用可以参考其他博客,或者官方文档
在VSCode中登录成功后,点击文件 > 打开文件夹,选择代码工程文件夹加载到VSCode中。再点击终端 > 新终端创建一个bash终端出来。假如现在我们要启动tensorboard了,就在这个bash终端中执行:

tensorboard --logdir='path-to-the-log'

启动成功后会在bash终端中显示:
在这里插入图片描述
(默认tensorboard会在6006端口开启,若改到其他端口则加上--port选项。注意这里的localhost以及6006端口号是在远程服务器上。)
到这一步就可以直接在本地浏览器访问http://localhost:6006/就打开了远程服务器上的tensorboard。这是因为VSCode自动进行了端口转发,将本地PC机的6006端口转发给了远程服务器端的6006端口。见下图VSCode中的展示信息:
在这里插入图片描述
当然也是支持修改本地端口号的,如改成16006。
总结:如果也是用VSCode的话,这个方法很简单,也不需要操作太多。普通SSH登录方式,标准的tensorboard启动方式,PC端直接就可以访问到远程服务器上的tensorboard了。

方法2

借助Xshell等专用远程连接工具来实现。首先设置下Xshell的会话属性页:
连接设置:
在这里插入图片描述
用户身份验证:
在这里插入图片描述
设置SSH转发规则:
在这里插入图片描述
(上图中源主机即本地PC机,目标主机即远程服务器。本地端口设置成了16006,远程服务器端口还是设置默认的tensorboard端口6006)
完成上述步骤后,在Xshell里进行启动tensorboard,再在本地浏览器中访问http://localhost:16006/就可以了。

方法3

这个方法需要手动输入命令来完成SSH的本地端口转发。
Windows下的命令行工具可以使用cmd或者git bash。在PC机端输入下面命令完成SSH本地端口转发以及登录操作:

ssh -L 16006:127.0.0.1:6006 xiaoming@123.123.123.123 -p 23456

该命令作用是登录远程服务器账户,并将服务器端的6006端口和PC机端的16006端口映射起来。这里利用的是SSH本地端口转发功能-L。那么我们在PC机访问本地16006端口就相当于访问服务器端的6006端口。
执行完该命令也就完成了。之后启动tensorboard,在本地PC机浏览器中访问http://localhost:16006/即可。


以上就是我整理的3种方法。都是可以实现文首所提到的场景需求的。更多关于ssh使用以及端口转发功能,可以参考[1][2]


在这也简单记一下[1]中的内容吧,做个笔记。

SSH端口转发

SSH有三种端口转发模式,本地端口转发(Local Port Forwarding)远程端口转发(Local Port Forwarding)以及动态端口转发(Dynamic Port Forwarding)

本地端口转发

所谓本地端口转发,就是将发送到本地端口的请求,转发到目标端口。这样,就可以通过访问本地端口,来访问目标端口的服务。使-L属性,就可以指定需要转发的端口,语法为:

-L 本地网卡地址:本地端口:目标地址:目标端口

本地网卡地址可以省略不写,那它默认值就是localhost(127.0.0.1),即只能本机访问。如果想允许其他地址也能借助本地端口转发,则将本地网卡地址设置为0.0.0.0。

远程端口转发

所谓远程端口转发,就是将发送到远程端口的请求,转发到目标端口。这样,就可以通过访问远程端口,来访问目标端口的服务。使用-R属性,就可以指定需要转发的端口,语法为:

-R 远程网卡地址:远程端口:目标地址:目标端口

远程端口转发在内网穿透中很有用。
比如有个公网服务器jumpbox作为跳板机,有一台处于内网的机器A和另一个内网的机器B。A和B间不能够直接通讯,这时就借助公网服务器jumpbox作跳板来实现内网穿透。
假设:
jumpbox:ip为123.123.123.123 端口为2000 用户名为root
机器A:ip为192.168.1.1
机器B:ip为192.168.2.2 端口为3000
我们在机器B上执行远程端口转发命令,将机器B上的3000端口暴露给跳板机:

ssh -R 0.0.0.0:2000:localhost:3000 root@123.123.123.123

这样机器A访问跳板机的2000端口即可访问到机器B的3000端口。(首先确保跳板机允许2000端口转发,像阿里云服务器默认是不开启)
博客[3]中有更详细介绍。


参考文献

[1] 玩转SSH端口转发 - Fundebug的文章 - 知乎
[2] SSH 基本用法 - 陈乐群的文章 - 知乎
[3] 利用ssh反向代理以及autossh实现从外网连接内网服务器

  • 20
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
使用PyTorch可视化TensorBoard的步骤如下: 1. 安装TensorBoard ``` pip install tensorboard ``` 2. 在PyTorch中创建SummaryWriter对象 ```python from torch.utils.tensorboard import SummaryWriter # 创建SummaryWriter对象 writer = SummaryWriter('runs/experiment_name') ``` 其中,`experiment_name`为实验名称,可以自定义。这里通过`runs`目录来存储实验数据。 3. 在训练或验证的过程中添加可视化代码 在代码中使用`writer.add_scalar()`方法来添加可视化代码,方法的参数包括要可视化的变量名、变量值和步数。例如: ```python # 添加训练损失 writer.add_scalar('Train/Loss', loss.item(), step) # 添加验证准确率 writer.add_scalar('Validation/Accuracy', accuracy, step) ``` 4. 启动TensorBoard 在命令行中使用以下命令启动TensorBoard: ``` tensorboard --logdir runs ``` 其中,`--logdir`参数指定实验数据所在的目录。在上面的代码中,我们将实验数据保存在`runs`目录下。 5. 在浏览器中查看可视化结果 在浏览器中输入以下地址查看TensorBoard可视化结果: ``` http://localhost:6006/ ``` 这里是一个可视化变量曲线的代码示例: ```python import torch from torch.utils.tensorboard import SummaryWriter # 创建SummaryWriter对象 writer = SummaryWriter('runs/experiment_name') # 创建模拟数据 x = torch.linspace(-5, 5, 100) y = torch.sin(x) # 可视化曲线 for i in range(100): writer.add_scalar('Sin(x)', y[i], i) # 关闭SummaryWriter对象 writer.close() ``` 这段代码将生成一条正弦曲线,并将其可视化TensorBoard中。在TensorBoard中,我们可以选择`Scalars`选项卡来查看变量曲线。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值