You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode远程SSH配置srun分配GPU调试Python脚本故障咨询

VSCode直连Slurm GPU节点调试Python配置方案

原有操作流程

目标是优化手动操作链路,实现直接在VSCode中调用GPU资源完成代码调试与sanity测试,原有手动流程如下:

  • 连接SSH代理服务器
  • 连接目标SSH登录节点
  • 调用conda激活对应虚拟环境
  • 执行srun命令申请GPU计算资源,执行命令为:
srun -p normal.q --mem=20GB --cpus-per-task=2 --gres=gpu:quadro_rtx_6000:1 /bin/bash -i
  • 运行目标Python脚本

已完成基础配置

  • 已编写自定义SSH配置文件,完成SSH免密密钥、proxyCommand代理跳转规则配置,配置内容如下:
Host runningHostWithoutGPU
  HostName host
  User myuser
  ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -x ProxyHost -W %h:22
  IdentityFile ~/.ssh/id_rsa
  RemoteCommand srun -p normal.q --mem=20GB --cpus-per-task=2 --gres=gpu:quadro_rtx_6000:1 /bin/bash -i
  • VSCode Server已成功在目标登录节点部署,代理链路连接正常,支持在远端主机编辑、保存文件
  • VSCode Python解释器设置中可正常识别目标conda虚拟环境

现存问题

配置后srun命令未实际执行,SSH连接仅停留在登录节点未跳转至GPU计算节点,启动Python文件运行时无法调用GPU资源。

已尝试的无效方案

  • 为调试器配置preRunning前置任务,编写shell脚本执行srun资源申请命令,未产生效果
  • 在SSH配置中添加remoteCommand参数:原生Windows ssh.exe可通过该配置成功跳转至GPU节点,但VSCode无法通过该配置建立正常连接。

可行配置方案

方案1:适配Remote-SSH机制直连计算节点(推荐,支持断点调试、代码补全全功能)

之前加remoteCommand连不上的核心原因很简单:VSCode Remote-SSH默认会把服务端程序部署在SSH连接落地的第一台机器(也就是登录节点),直接配RemoteCommand跳srun到计算节点时,节点上没有运行对应的VSCode Server进程,连接必然失败。

  1. 先用不带RemoteCommand的SSH配置正常连到登录节点,在登录节点用户家目录下创建脚本srun_gpu.sh,内容填入资源申请命令:
#!/bin/bash
srun -p normal.q --mem=20GB --cpus-per-task=2 --gres=gpu:quadro_rtx_6000:1 --pty $SHELL -l

写完给脚本加执行权限:chmod +x ~/srun_gpu.sh
2. 打开本地VSCode的设置,搜索Remote.SSH: Remote Command,找到runningHostWithoutGPU主机对应的配置项,填入远程执行命令:bash -i -c "~/srun_gpu.sh"
3. 关键配置,绝大多数连接失败都是漏了这步:继续搜索Remote.SSH: Use Local Server,勾选对应主机的配置项。开启后VSCode会把服务端进程直接启动在RemoteCommand最终跳转的目标机器(也就是GPU计算节点)上,不会再默认部署到登录节点。
4. 断开现有SSH连接重连,等VSCode在计算节点完成Server部署后,选择提前识别到的conda虚拟环境作为Python解释器即可,此时不管是直接运行代码还是打断点调试,都会在GPU节点上执行,可正常调用显卡资源。

方案2:自定义终端跳转(适合轻量sanity测试,无需修改SSH核心配置)

如果不需要复杂断点调试,只是改完代码快速跑通验证逻辑,用这个方案更灵活,不会因为srun资源排队卡住整个VSCode连接:

  1. 删除SSH配置里的RemoteCommand项,保持现有能正常连接登录节点的配置即可,保证VSCode可以正常打开远端目录、编辑保存文件。
  2. 连接到登录节点后,打开VSCode远端用户设置,搜索Terminal > Integrated > Profiles: Linux,新增一个名为「GPU计算节点终端」的配置项,内容如下:
{
  "GPU计算节点终端": {
    "path": "/bin/bash",
    "args": ["-i", "-c", "srun -p normal.q --mem=20GB --cpus-per-task=2 --gres=gpu:quadro_rtx_6000:1 /bin/bash -i"]
  }
}
  1. 后续需要运行脚本时,在VSCode终端下拉菜单选择新建的GPU节点终端,等srun申请到资源、终端跳转到计算节点后,手动激活conda环境执行Python脚本即可。

注意事项:如果集群srun申请资源需要排队,使用方案1时整个VSCode连接会等待资源分配完成后才加载完成,排队期间显示连接中属于正常现象,不是程序卡死。如果排队时间较长建议优先用方案2,编辑文件不受登录节点限制,需要跑代码时再单独开终端申请资源。


内容的提问来源于stack exchange,提问作者Tankwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:21:37