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

如何解决VSCode调试SGE集群计算节点时跳转至登录节点的问题

解决SGE集群中VSCode调试会话跳回登录节点的问题

以下是几个针对SGE集群的实用解决方案,无需依赖固定计算节点主机名:

方案1:反向SSH隧道+动态调试附着

核心是通过反向隧道把计算节点的调试端口转发到登录节点,让VSCode能直接连接到计算节点的调试进程:

  1. 登录集群登录节点后,申请GPU计算节点并记录当前节点名:
    # 替换gpu.q为你的GPU队列名称
    qrsh -q gpu.q -V -cwd
    # 进入计算节点后执行,保存节点名到环境变量
    export NODE_NAME=$(hostname)
    
  2. 在计算节点上建立反向SSH隧道,将调试端口(默认5678)转发到登录节点:
    # 替换login-node-hostname为你的登录节点主机名
    ssh -R 5678:localhost:5678 $USER@login-node-hostname
    
  3. 修改VSCode的launch.json配置为远程附着模式:
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Python: Attach to Compute Node",
                "type": "python",
                "request": "attach",
                "connect": {
                    "host": "localhost",
                    "port": 5678
                },
                "pathMappings": [
                    {
                        "localRoot": "${workspaceFolder}",
                        "remoteRoot": "/your/cluster/workspace/path"
                    }
                ],
                "justMyCode": false
            }
        ]
    }
    
  4. 在计算节点上启动带调试参数的Python程序:
    python -m debugpy --listen 0.0.0.0:5678 --wait-for-client your_script.py
    
    最后点击VSCode调试按钮即可连接到计算节点的会话。

方案2:在计算节点直接启动VSCode Server

如果集群允许,直接在计算节点启动VSCode Server,让调试会话全程在计算节点运行:

  1. 申请计算节点后,启动VSCode Server(若节点无code-server,可从登录节点复制二进制文件):
    code-server --port 8080 --host 0.0.0.0
    
  2. 在本地新终端中,通过登录节点转发计算节点的8080端口到本地:
    # 替换login-node-hostname和NODE_NAME为实际值
    ssh -L 8080:$NODE_NAME:8080 $USER@login-node-hostname
    
  3. 本地浏览器访问http://localhost:8080,即可直接操作计算节点上的VSCode,调试会话不会跳转回登录节点。

方案3:强制调试命令在计算节点执行

修改VSCode调试配置,让调试启动命令自动通过qrsh申请节点并执行:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: SGE Direct Debug",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "command": "qrsh -q gpu.q -V -cwd python -m debugpy --listen 0.0.0.0:5678 --wait-for-client ${file}",
            "console": "integratedTerminal",
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}",
                    "remoteRoot": "/your/cluster/workspace/path"
                }
            ]
        }
    ]
}

点击调试按钮后,VSCode会自动通过qrsh申请节点并启动调试进程,无需手动切换节点。

通用注意事项

  • 确保计算节点已安装debugpy:pip install --user debugpy
  • 路径映射需严格对应本地与集群的工作目录
  • 反向隧道或端口转发断开时,需重新执行对应命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:50:27