VSCode中配置命令行参数
在跑程序调试的时候,可以直接使用脚本运行程序,这个时候调试代码只能用pdb ,我觉得不太习惯,而且感觉不是很好,所以想这能不能将运行程序的脚本中的命令直接配置到vscode上,就有了这篇记录。
正常vscode Debug程序
这个好像没什么值得说的。打开程序文件,点击f5。一般第一次使用f5跑代码会弹出是否配置lanuch,默认选择就好。这个要求是程序不需要从命令行输入参数,直接就能运行了。
唯一可能有问题的是,f5有时没有反应,这个时候我们就需要检查vscode 中装的python扩展,版本低于2022.8.1就可以了。装好记得重新打开vscode,基本就没有问题了。
我下面的截图有额外增加的部分。第一个红框框起来的就是默认的配置。这个代码不需要输入参数,所以没有额外的设置。
后面可能需要改的是"justMycode",和在库的代码中设置断点有没有效果有关系。
命配置命令参数输入
这个比之前的多的一点是,在输入脚本测试代码时,我们可能会需要提供额外的信息。
这个就是我们的脚本文件train.sh 。把最后一行改成:
python
python -m torch.distributed.launch --nproc_per_node=1 train.py --launcher pytorch --cfg_file cfgs/kitti_models/IA-SSD.yaml
可以直接拿着到vscode的终端里跑,只要文件地址正确。下面的两个框就是配置命令行的参数。我之前常用的时蓝色框里的,就是一般就跟着train.py(我的代码)后面的直接用这样的方式就可以了。
torch.distribut 配置
主要时参考下面的文章
VS Code中如何调试pytorch分布式训练脚本torch.distributed
这里和简单的 train.py 后面跟参数不一样,这个时会在train.py的前面加参数。还是下面的例子
python
python -m torch.distributed.launch --nproc_per_node=1 train.py --launcher pytorch --cfg_file cfgs/kitti_models/IA-SSD.yaml
-m torch.distributed.launch --nproc_per_node=1是在train.py前面的,要是直接安装上面的方法会报错。
然后重点来了,主要还是参考的上面的那片文章。
python
"program": "/home/cyd/miniconda3/envs/IASSD/lib/python3.8/site-packages/torch/distributed/launch.py",
上面那篇文章介绍的很详细,但是没说launch.py这个文件怎么找。我这里就是补充一下,
没有办法的时候,我们直接使用命令行参数运行程序,这个时候,就会有调用信息显示出来,里面就会有这个launch.py文件地址,我们直接copy 过来就好。
就是这个路径
然后其他参数照着写道"args"里面就可以了。
还有一个就是环境cuda的设置问题,放在"env"后面就好了。
python
"env": {"CUDA_VISIBLE_DEVICES":"0"},
还有一个就是"cwd",你想点f5后程序是从哪个路劲开始,就把这个值设置为对应的路劲就好,不然会默认跑到根目录,这个时候路径有问题就会出别的错误。