[实验日志] VS Code 连接服务器上的 Python 解释器远程调试 (含 Pytorch 分布式 torch.distributed.launch 的调试.json配置)

目录

0. 前言

1. 环境

2. 准备工作

2.1 安装VS Code

2.2 安装插件

2.3 配置远程服务器

2.4 修改设置

2.5 打开远程调试窗口

3. 调试代码

3.1 输密码

​编辑

3.2 打开服务器文件夹

3.3 配置Python环境

3.4 调试Python代码

3.4.2 调试 pytorch 分布式 torch.distributed.launch 的 debug 配置

补充:使用调试控制台,查看变量tensor的形状

结语


0. 前言

我们跑大型项目的时候,数据和代码都在服务器上。然而,服务器往往是Linux系统,没有图形化界面,本文将以Python语言为示例,讲解一下如何通过VS Code这款免费且好用的IDE进行远程调试代码。

常用的JetBrains家族(IntelliJ IDEA、Pycharm等)的开发工具里已经实现了远程开发功能,选择VS Code 作为开发工具的原因有以下两点:
(1)JetBrains(如Pycharm)需要专业版才有远程调试的功能,而专业版收费高,大部分人平时还是使用社区版。VS Code是微软的一款免费IDE软件,又开源又支持远程调试。
(2)JetBrains工具远程开发时通过FTP、SFTP(File Transfer Protocol,文件传输协议)实现,它们的远程开发的原理是通过文件传输协议连接到远程服务器,通过上传和下载的方式进行远程项目和本地项目的同步,这样的缺点是:不能实时同步、操作繁琐,需要维护两份代码。而VS Code是通过SSH(Secure Shell)的方式连接到远程服务器,换句话说,VS Code在远程开发过程中扮演的角色更像是一款终端模拟工具,它不需要繁琐的上传和下载步骤,实时性更好,只需要在Windows上保存一下,就会瞬间同步到远程服务器,不用建立本地和远程映射,能直接查看和修改服务器上的文件。

1. 环境

本地环境:Windows 10
远程环境:Ubuntu 16.04(64bit)、ubuntu20.04) 亲测都可以
Python版本:3.6 - 3.8 亲测都可以
VS Code:1.43.2 - 1.96.4 亲测都可以

2. 准备工作

2.1 安装VS Code

官网:Download Visual Studio Code - Mac, Linux, Windows

需要安装VS Code,建议选择Syetem Installer。

2.2 安装插件

安装Remote Development这个插件,步骤如下图所示:

  • 点击扩展按钮
  • 搜索Remote Development
  • 安装

2.3 配置远程服务器

在 SSH TARGETS 配置远程服务器,具体步骤如下:

  • 点击(窗口左侧栏)远程资源管理器
  • 点击齿轮图标
  • 打开弹出的config文件,分别配置Host、Hostname、User

这里需要注意一个,Host是一个名称,自己可以随意命名。Hostname是远程服务器的IP,User是用于登录远程服务器的账户名称。

以AutoDL为例,找到自己租的远程服务器实例,SSH登录:

复制登录指令如下:(输入登录指令可以自动生成config)

ssh -p 26982 root@connect.yza1.seetacloud.com

对应到config文件中的Host、Hostname、User:

保存后左侧SSH栏就会出现服务器名称

2.4 修改设置

打开VS Code设置,搜索Show Login Terminal,把"Always reveal the SSH login terminal"勾选上,记得一定要操作这一步,不然会一直提示报错

2.5 打开远程调试窗口

把鼠标放在上一步配置的远程连接条目上,右键,有两个条目可以选择,推荐 Connect to Host in New Window。然后就会在窗口打开我们想要的远程连接。


3. 调试代码

3.1 输密码

密码会隐藏看不见,但实际上已经输入好了,粘贴上去直接回车


3.2 打开服务器文件夹

  • 点击Explorer
  • 点击Open Folder

  • 点击确定

3.3 配置Python环境

还得再输入一次密码才能进来

3.4 调试Python代码

选Python debugger

会显示和PyCharm类似的调试配置,前三种最为常用,2对应script,3对应module

我们以2为例,所需要执行的命令如下

python tools/train.py projects/configs/flashocc/flashocc-r50-M0.py

那么对应的调试参数-配置文件内容如下(这部分将运行命令对应到vs code调试参数可以问问GPT,又快又好):

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python 调试程序: tools/train.py",
            "type": "python",
            "request": "launch",
            "program": "${workspaceFolder}/tools/train.py",
            "args": [
                "${workspaceFolder}/projects/configs/flashocc/flashocc-r50-M0.py"
            ],
            "env": {
                "PYTHONUNBUFFERED": "1",
            },
            "console": "integratedTerminal",
            "cwd": "${workspaceFolder}"
        }
    ]
}

3.4.2 调试 pytorch 分布式 torch.distributed.launch 的 debug 配置

如果在pycharm里,是这样的配置:(参考这篇(pycharm远程调试)博客,是同一个项目SparseOcc项目,这是pycharm的分布式调试)

那么换成 VS Code,调试的配置文件.json 就应该是:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug SparseOcc Single GPU",
            "type": "debugpy",
            "request": "launch",
            "program": "${workspaceFolder}/tools/train.py",
            "cwd": "${workspaceFolder}",
            "args": [
                "projects/configs/sparseocc/sparseocc_nusc_pem_v2.py",
                "--seed", "0",
                "--launcher", "pytorch"
            ],
            "console": "integratedTerminal",
            "env": {
                "PYTHONPATH": "${workspaceFolder}",
                "MASTER_ADDR": "127.0.0.1",
                "MASTER_PORT": "29500",
                "RANK": "0",
                "WORLD_SIZE": "1",
                "LOCAL_RANK": "0"
            }
        }
    ]
}

最后亲测成功debug!

得右下角选择远程服务器上的python解释器

保存后点击左侧调试栏里的开始调试,就成功开始调试啦:

别忘了设置断点哦:

补充:使用调试控制台,查看变量tensor的形状

输入xxx.shape,或者:

[tensor.shape for tensor in xxx]

还有一些常用的命令:

# 查看x的类型

type(x)

# 如果x是list

for i in x: print(i.shape)

就能查看对应变量内部所有tensor的形状啦,别的调试方法和PyCharm类似,可参考:

[实验日志] 将pycharm(本地项目)连接到远程服务器(Linux)上跑起来

结语

OK啦,到这里我们就成功设置了VS Code进行Python的远程调试,接下来我们就可以愉快地写代码和debug了。

本文参考以下博客,并融入了自己的思考:
https://zhuanlan.zhihu.com/p/93239107
https://blog.csdn.net/Hreticent/article/details/82968466
https://www.oschina.net/question/3637446_2282455
https://zhuanlan.zhihu.com/p/43656542
VS Code进行Python远程调试_vscode 远程 python-CSDN博客(主要参考)

### 如何在 VSCode 中通过 SSH 连接远程服务器并正确配置 Python 解释器 #### 1. 安装 Remote-SSH 扩展 为了实现通过 SSH 连接远程服务器的功能,需先安装 Visual Studio Code 的 `Remote-SSH` 插件。此插件允许开发者直接访问远程机器上的资源,并能够利用该机器上已有的开发工具和解释器[^2]。 #### 2. 创建或修改 `.ssh/config` 文件 完成扩展安装后,在本地计算机中找到用户的 SSH 配置文件路径(通常位于 `~/.ssh/config`)。如果不存在,则可手动创建它。在此文件中添加目标服务器的相关信息: ```plaintext Host myserver HostName 192.168.1.109 User username Port 22 ``` 上述代码中的每一项分别代表主机别名、实际 IP 地址、登录用户名以及端口编号。这些参数可以根据实际情况调整[^3]。 #### 3. 建立与远程服务器连接 返回到 VSCode 界面,按下快捷键 Ctrl+Shift+P (Windows/Linux) 或 Command+Shift+P (Mac),调出命令面板,输入并选择 “Remote-SSH: Connect to Host...”。随后会显示之前定义好的所有主机条目列表供挑选;选中对应的服务器名称即可尝试建立链接[^4]。 一旦成功接入指定设备之后,左侧活动栏会出现一个新的图标表示当前处于远程工作模式下。 #### 4. 设置合适的 Python 解释器 进入远端环境后,默认可能不会自动识别正确的 Python 版本或者虚拟环境位置。因此需要手动设定项目使用的具体解析程序版本号。可以通过按住Ctrl+Shift+P唤起指令菜单后再搜寻“Python: Select Interpreter”选项执行切换操作。接着从弹出来的清单里找出匹配的目标解释器实例——一般情况下应该能看到诸如 `/home/username/miniconda/bin/python` 类似的路径指向 Conda 环境下的特定 Pyhton 可执行档。 另外值得注意的是,假如遇到某些依赖库缺失的情况,也可以借助 pip 工具在线安装所需的包文件于对应环境中去满足需求。 --- ### 提交后的最终效果展示样例: 以下是按照说明构建起来的一个简单例子用于验证整个流程是否顺畅无误: 假设我们有一个简单的 hello world 脚本存储在 ~/project/main.py 下面: ```python def main(): print("Hello, World!") if __name__ == "__main__": main() ``` 运行结果应当输出 Hello, World! 字符串内容证明一切正常运作良好[^1]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值