【分布式训练 debug】VS Code Debug 技巧:launch.json实用参数
VS Code Debug技巧:launch.json实用参数
在使用Visual Studio Code (VS Code)进行调试时,launch.json
文件是一个强大的工具,它允许你自定义调试会话。以下是一些实用的参数,可以帮助你更有效地调试Python代码。
1. 调试第三方库代码
如果你需要调试第三方库中的代码,可以使用"justMyCode": false
参数来禁用仅我的代码功能。这样,你就可以在库代码中设置断点。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: tutorial_train.py",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/tutorial_train.py",
"justMyCode": false,
"console": "integratedTerminal"
}
]
}
2. 指定CUDA环境
在进行深度学习开发时,你可能需要指定CUDA设备。通过设置"env"
中的"CUDA_VISIBLE_DEVICES"
,你可以控制哪些GPU设备对当前调试会话可见。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: tutorial_train.py",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/tutorial_train.py",
"env": {
"CUDA_VISIBLE_DEVICES": "1"
},
"justMyCode": false,
"console": "integratedTerminal"
}
]
}
3. 指定Conda环境
如果你的项目依赖于特定的Conda环境,可以通过"python"
参数指定Conda环境的Python解释器路径。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python 调试程序: 当前文件",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": false,
"python": "/root/miniconda3/envs/xxx/bin/python"
}
]
}
4. 使用accelerate.launch替代
accelerate
库提供了一个命令行工具来启动分布式训练。在launch.json
中,你可以使用"module"
参数来指定accelerate.commands.launch
模块,并通过"args"
参数传递必要的命令行参数。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python 调试程序: 训练脚本",
"type": "debugpy",
"request": "launch",
"module": "accelerate.commands.launch",
"args": [
"--config_file", "/path/accelerate/default_config.yaml",
"/path/train_xxx_deepspeed.py",
"--config", "/path/test_xxx.yaml"
],
"console": "integratedTerminal",
"env": {
"CUDA_VISIBLE_DEVICES": "4,5,6,7"
},
"justMyCode": false
}
]
}
5. 设置当前工作目录
使用"cwd"
参数,你可以为调试会话设置当前工作目录。这对于需要在特定目录下运行脚本的情况非常有用。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python 调试程序: 当前文件",
"type": "debugpy",
"request": "launch",
"program": "/root/TensorRT/demo/Diffusion/demo.py",
"console": "integratedTerminal",
"cwd": "/root/TensorRT/demo/Diffusion",
"env": {
"PYTHONPATH": "/root/TensorRT/demo/Diffusion"
}
}
]
}
通过这些launch.json
参数,你可以更灵活地控制VS Code的调试环境,无论是调试第三方库、管理CUDA设备、使用特定Conda环境,还是进行分布式训练。