将计算节点设置为VS Code远程Python解释器

文章介绍了如何通过SSH连接到服务器的登录节点,再跳转到计算节点进行深度学习任务,特别是当GPU资源有限时的调试策略。在本地调试模型后,通过SFTP或Git将代码和数据上传到服务器,在交互式计算节点上进行训练。虽然PyCharm不支持SSH的ProxyJump配置,但VSCode表现更佳,可以直接作为远程IDE。通过配置SSH的config文件,可以实现VSCode对计算节点的直接连接,从而在远程环境中实时调试CUDA代码。
摘要由CSDN通过智能技术生成

问题背景

跑深度学习任务,需要SSH到服务器的登录节点,在登录节点里申请计算节点,申请成功后Terminal界面会自动跳转(即SSH)到所申请的计算节点。
登录节点算力有限且不能用GPU,所以涉及cuda的debug环节需要在计算节点里完成。

如果不具备条件(比如显卡机时极其有限或者申请用卡特别麻烦),平时开发模型很多人的做法是:

1)先在本地机器或登录节点的CPU环境里面调试模型。用CPU测试模型的前向传播当然是可行的——只是反向传播速度比较慢,用它来训练大模型不现实而已。把涉及cuda的部分都用torch.cuda.is_available()括起来,也不会有没GPU运行不了的问题。
2)CPU环境测试通过后,把代码、数据集和所有其他文件上传到服务器(用SFTP手工上传,或者在github上用git push, git pull命令中转一下),在服务器申请一个交互式计算节点(interactive session,交互式即允许print()),在Terminal端用指令的形式训练几个epoch,结合屏幕输出情况观察训练是否能正常进行
3)确定模型训练没问题后,在计算节点申请长时间的任务。用指令提交任务和程序入口。跑完后查看以文件形式输出的运行结果。

这样做当然是有些麻烦的,所以对于计算机时比较充分的选手们来说,能不能直接用交互式计算节点作为本地IDE的Python远程解释器,实现cuda相关代码的实时调试呢?这有时候是个比较玄学的问题,但在一些情况下完全是可行的,其关键就是在本地机器SSH的config文件中使用ProxyJump关键字将登录节点作为跳板实现转发功能。

操作步骤

  1. SSH登录公共节点
    ssh [YOUR_ID]@[login node address]

  2. 在登录节点中申请计算节点,并获取其SSH地址
    申请算力这部分不同提供商采用的命令不同,就不放命令了。
    自动进入计算节点后,输入echo $SSH_CONNECTION,复制屏幕输出的第二个IP地址,再敲入nslookup xxx.xxx.xxx.xxx命令获取其域名,下文记为[compute node address]。
    *注:如果输入echo $SSH_CONNECTION后输出为空白,说明计算节点的网络连接有问题,这种情况目前博主暂无解决办法。

  3. 将模型代码上传到服务器端

  4. 本地计算机上启动 VS Code,安装SSH插件, 点击左下角绿色的SSH标签, 依次点击 ‘Connect to Host’ - ‘Configure SSH Hosts’. 如果本地机器是Windows, 就选择 ‘C:\Users[YOUR_USER_NAME]\ .ssh\config’. 输入如下配置:

Host login_node
  HostName [login node address]
  User [YOUR_ID]
  
Host compute_node
  HostName [compute node address]
  ProxyJump login_node
  User [YOUR_ID]

(注:这里的 login_node 和 compute_node 都可以改为你喜欢的名字)
保存关闭。

  1. 再次点击左下角绿色的SSH标签,按屏幕提示连接到 compute_node 即可。

IDE适配性

经博主测试,PyCharm貌似不支持根据系统SSH的config内容来自定义SSH连接,所以应该是不支持这种跳板。VS Code的表现就相对好很多。而且在文件同步方面,VS Code是直接在服务器端操作,PyCharm是本地操作后要同步一下才会上传到服务器端,文件多的时候就比较慢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值