使用vscode debug远程项目(以vLLM为例)

本机上需要准备的事项

  1. 安装 vscode;下载远程连接插件:Remote - SSH,汉化插件:Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code
  2. 配置文件中写入远程服务器相关信息
    1. 点击右侧靠边栏“远程资源管理器”
    2. 点击“SSH配置文件”
    3. 选择要写入的SSH配置文件(Windows11上,目录文件在C:\Users\你的用户名.ssh\config)
    4. 在文件中添加如下内容
Host 连接74远程服务器
  HostName 10.20.152.74
  Port 8222
  User root

alt text

通过插件连接服务器

然后就可以,在vscode中连接相应服务器,在连接过程中需要选择服务器操作系统(本文中为Linux)、密码(本文中为root),
1747877977460

首次连接以及本机vscode版本变动后,都会在服务器上下载相应的vscode-server

在服务器上调试:以debug vllm为例

由于vllm是python项目,假设服务器上已配置项目所需conda环境

切换到项目所在目录

code /workspace/projects/vllm_0.7.3_0521/vllm

在右下角选择python环境
1747879665613

准备调试工具

为服务器上vscode配置插件:Python Debugger。注意服务器上和本机上的插件不共享,但是可以通过微软账号/github账号进行同步。

创建调试所需的 .vscode/launch.json 文件,用于指定自己运行时的参数、环境变量

1747878874613
1747879052249

launch.json内容按需设置,这里以vllm为例

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: 启动服务器",
            "type": "debugpy",
            "request": "launch",
            "program": "/workspace/projects/vllm_0.7.3_0521/vllm/vllm/entrypoints/openai/api_server.py",
            "console": "integratedTerminal",
            "args": [
                "--model",
                "/workspace/llm_models/HengNao-2_5-7b-chat",
                "--tensor-parallel-size",
                "1",
                "--enforce-eager",
                "--enable-prefix-caching",
                "--max-model-len",
                "32000",
                "--served_model_name",
                "HengNao-r1",
                "--token-pool-size",
                "80000",
                "--port",
                "6001",
                "--guided-decoding-backend",
                "outlines",
                "--gpu-memory-utilization",
                "0.6"
            ],
            "justMyCode": false,
            "cwd": "${workspaceFolder}",
            "env": {
                "PYTHONPATH": "/workspace/projects/vllm_0.7.3_0521/vllm",
                "CUDA_VISIBLE_DEVICES": "1",
                "VLLM_USE_V1": "0",
                "LOGGING_LEVEL": "debug"
            }
        }
    ]
}

开始调试

然后,就可以在项目需要检查的地方设置断点,并运行程序,当程序触发断点所在行时,vscode会自动暂停程序运行,并在左侧的变量窗口中显示当前变量的值,用户也可以在调试控制台上执行python语句

alt text

如果要调试的是远程服务器上的Docker容器

如果我们要远程调试的对象实际上一个服务器上的Docker容器,在远程调试前,需要提前确认一件事:容器开放的端口与宿主机上端口的映射关系:

docker ps

还是以本文为例:

6eabf09cf985   docker.das-security.cn/hb/dev:20250424              "bash /root/run.sh t…"   3 weeks ago     Up 24 hours             0.0.0.0:8222->22/tcp, :::8222->22/tcp, 0.0.0.0:8201->6001/tcp, :::8201->6001/tcp, 0.0.0.0:8202->6002/tcp, :::8202->6002/tcp, 0.0.0.0:8200->8000/tcp, :::8200->8000/tcp   hb_dev_lq

在最后一部分,就是“容器端口->宿主机端口”的映射关系

0.0.0.0:8222->22/tcp, :::8222->22/tcp, 0.0.0.0:8201->6001/tcp, :::8201->6001/tcp, 0.0.0.0:8202->6002/tcp, :::8202->6002/tcp, 0.0.0.0:8200->8000/tcp, :::8200->8000/tcp

由于映射关系“0.0.0.0:8222->22/tcp”。因此,在一开始,容器ssh端口是22,但是想要外部连接容器需要指定ssh端口为8222。同理,我在vllm中指定的端口6001,实际上是映射到宿主机的8201端口上,如果想用Postman请求,访问的地址为:

https://10.20.152.74:8201/v1/chat/completions
posted @ 2025-05-22 12:01  片刻的自由  阅读(638)  评论(0)    收藏  举报