目录
使用 VSCode 调试单机多卡分布式训练脚本的详细步骤:
1. 找到控制分布式训练的启动脚本
- 分布式训练的启动脚本位于你的虚拟环境目录中,具体路径为:
/lib/python3.9/site-packages/torch/distributed/launch.py
- 这个
launch.py
文件是 PyTorch 用于控制分布式训练的脚本。你需要通过这个脚本启动多卡训练,因此在调试过程中,它是关键所在。
2. 配置 VSCode 的 launch.json
文件
-
进入你的项目目录,在
.vscode
文件夹中找到或创建launch.json
文件,这个文件用于配置调试的启动参数。 -
关键点是正确配置
args
参数,包括分布式训练所需的参数和训练脚本本身所需的参数。参数的顺序必须与命令行执行的顺序一致。 -
一个示例的
launch.json
配置如下:{ "version": "0.2.0", "configurations": [ { "name": "Debug Distributed Training", "type": "python", "request": "launch", "program": "${workspaceFolder}/lib/python3.9/site-packages/torch/distributed/launch.py", "console": "integratedTerminal", "args": [ "--nproc_per_node=4", // 分布式训练参数,指定每个节点的 GPU 数量 "--use_env", // 指定使用环境变量传递配置 "path/to/your/train_script.py", // 你的训练脚本路径 "--batch_size=32", // 训练脚本的参数,如 batch size "--lr=0.001", // 训练脚本的参数,如学习率 // 其他训练脚本所需的参数 ], "justMyCode": false // 为了调试库代码,可以将这个设置为 false } ] }
-
注意:
program
是指向分布式训练启动脚本launch.py
的路径。args
是调试过程中需要传递的参数,参数顺序应按照命令行执行的顺序。首先是分布式训练的参数(如--nproc_per_node
和--use_env
),接下来是训练脚本的路径及其所需的参数(如--batch_size
等)。- 你可以参考命令行的执行顺序来确定
args
的顺序,以确保和实际的运行方式保持一致。
3. 选择启动配置并开始 Debug
-
在 VSCode 中,点击左侧的 运行和调试 面板,选择你刚刚创建的
launch.json
配置项(如 "Debug Distributed Training"),然后点击运行按钮。 -
此时,VSCode 会自动启动多 GPU 训练并进入调试模式。
-
在调试时,你可以设置断点、单步执行,检查变量和日志输出等功能,帮助你排查分布式训练过程中的问题。
总结:
- 找到 PyTorch 的分布式训练启动脚本,路径通常在虚拟环境的
/lib/python3.9/site-packages/torch/distributed/launch.py
下。 - 配置 VSCode 的
launch.json
文件,确保args
参数按正确的顺序传递,分布式训练的参数和训练脚本的参数要区分清楚,顺序保持一致。 - 选择调试配置并开始 Debug,VSCode 将帮助你进入多 GPU 的调试模式,方便追踪代码的执行流程并排查分布式训练中的问题。
这样,你就可以在单机多卡的分布式训练中使用 VSCode 进行调试了。