当我们使用vscode登录远程服务器时,总会遇到一个问题,python程序难以像Pycharm那样方便地进行调试,只能使用print大法查看中间变量值。但其实vscode已经提供了调试python程序的方法,那就是launch.json文件。
打开vscode,在上方菜单栏中选择“运行 - 添加配置”,就能够打开launch.json文件,设置调试参数,如下方格式所示。version代表json文件的版本号,不需要理会;configurations代表具体的调试配置项。
1 2 3 4 5 6 7 8 9 10 11
| { "version": "0.2.0", configurations: [ { }, { } ] }
|
下面来看看具体的调试配置项如何编写。
1 2
| # 运行程序时使用的命令行 CUDA_VISIBLE_DEVICES=0,1,2,3 python example.py --config example_config.txt --dir example_dir --data example_data.csv
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| { "name": "someName", "type": "python", "request": "launch", "program": "/home/someone/example.py", "console": "integratedTerminal", "python": "/home/someone/anaconda3/envs/someEnv/bin/python", "justMyCode": true, "args": [ "--config", "/home/someone/example_config.txt", "--dir", "/home/someone/example_dir", "--data", "/home/someone/example_data.csv" ], "env": { "CUDA_VISIBLE_DEVICES": "0,1,2,3" } }
|
还需要注意的是,在调试环境下,所有的文件名和文件夹名都需要使用完整的绝对路径,否则将会报错:文件/文件夹未找到/无法打开。
当需要运行分布式程序时,可能会使用到形如下述命令行。
1
| python -m torch.distributed.launch --nproc_per_node 8 train.py
|
这时需要将program项更换为torch/distributed/launch.py的绝对路径,不需要python项,如下。
1 2 3 4 5 6 7 8 9 10 11 12 13
| { "name": "someName", "type": "python", "request": "launch", "program": "/home/someone/anaconda3/envs/someEnv/lib/python3.7/site-packages/torch/distributed/launch.py", "console": "integratedTerminal", "justMyCode": true, "args": [ "--nproc_per_node", "8", "train.py" ] }
|