type
date
slug
summary
tags
category
icon
password
Publication Date
Link
Shot Title
Author/Team
Fields
Publication
Notes
Status
status
方式一:VScode Debug配置文件 调试多卡用 Pytorch 程序
现在深度学习框架大多是为了多卡并行训练而写的框架,对于新手来说,Debug代码是学习模型结构,了解基本输入输出流的最佳方式。但是多卡程序一般是。
确定环境变量
- 确定你所使用的conda环境,如环境为my_pytorch
- 找到你所使用环境对应的解释器,注意其中的python版本号需要根据你的环境更换。
.../conda/envs/my_pytorch/lib/python3.7/site-package/torch/distributed/launch.py修改 VScode Debug 配置文件
点击左侧Debug按钮,并再次点击齿轮打开
launch.json文件,并按照如下进行设置- program: 为第一步查到的解释路径
- args: 为你需要更改的参数
-nproc_per_node=1: 一般来说,debug选择单卡会方便-master_port=12098: 随便设置一个端口号用于通信,不要与之前使用的端口号相同train.py: 训练文件,或者接收参数的文件-config:config/*.yaml, train.py文件需要的参数-other_params:your_params, train.py文件需要的参数
- envs: 你需要选择在哪块GPU进行debug
VScode调试模型并不能成功的开启新进程,所以我们在数据加载时需要设置
num_worksers=0来避免调试程序卡住。方式 二:VS Code + debugpy 调试 PyTorch 多卡程序
在 VS Code 调试 PyTorch 多卡程序 中,我们介绍了如何使用 VS Code 调试 PyTorch 多卡程序,但使用该方法可能会遇到几个问题(或体验不佳):
- 需要把启动脚本接受的所有参数写在
~/.vscode/launch.json的args字段,而且当想要更改传入给脚本的参数时需要频繁修改~/.vscode/launch.json
- 使用 shell 脚本或者 srun 启动多卡程序,不清楚怎么配置
~/.vscode/launch.json
如果你也遇到上面的问题,可以考虑本文的调试工具 VS Code + debugpy,本文参考自 Python debugging in VS Code。
接下来,我们开始介绍如何使用 VS Code + debugpy 调试 PyTorch 多卡程序。
安装 debugpy
运行多卡程序
本文的示例代码来自 PyTorch 官方文档 initialize-ddp-with-torch-distributed-run-torchrun , 新建一个
ddp_demo.py
使用两卡运行程序:
如果程序正常结束,我们开始多卡程序的调试。
调试多卡程序
使用 VS Code 调试需先配置
~/.vscode/launch.json接下来在 VS Code 中设置断点,例如我们希望看一下
ToyModel的forward过程,我们可以在outputs = ddp_model(torch.randn(20, 10))处设置断点,然后点击下图中红色圈出来的Attach按钮:

最后运行下面的命令:
除了使用
python -m debugpy CLI 的方式,也可以在代码中插入 debugpy 代码,如下所示:然后使用运行多卡程序的命令:
不管使用哪种方式,都可以看到
ddp_demo.py中的代码停在了断点处:
点击 F11 可跳入
ToyModel的forward方法:
注意,在调试时,也需要进入到 Subprocess(下图红色圈处)执行代码,否则代码会卡在
optimizer.step()。