整理一下怎么用pycharm来调试(debug) 分布式模式下(torch.distributed.launch) 的代码。
我在服务器用的是sh ./train.sh,但是我需要在pycharm中查看变量,调试我的程序。
我的train.sh内容如下:
#!/bin/bash
PORT=${PORT:-29530}
python3 -m torch.distributed.launch --nproc_per_node=4 --master_port=$PORT\
train.py --model DDRNet --out_stride 8 \
--max_epochs 600 --val_epochs 10 --batch_size 64 --lr 0.01 --optim sgd --loss ProbOhemCrossEntropy2d \
--base_size 512 --crop_size 512 --tile_hw_size 512,512 \
--root '../../datasets' --dataset ChestLine --gpus_id 0,1,2,3 \
--lab_name 'AdaptiveMin_inp512e600'
问题转化为:我需要debug模式运行train.py ,一般情况下,参数添加在pycharm的运行配置中,这很简单,但是这里train.py前面还有 torch.distributed.launch --nproc_per_node=4 --master_port=$PORT这些东西,查了一下相关问题,亲测后,整理解决方案如下文。
- Script path改成【服务器】虚拟环境中的launch.py (先确保本地能够连通服务器端)
- Parameters的输入对应我的train.sh。
上述操作后,能够以torch.distributed的模式运行了,但是此时会出现一直显示collecting data并报错Timeout waiting for response。 参考后 解决如下:
参考:
pycharm终止运行_Pycharm 下如何 debug torch.distributed_祁圆圆的博客-CSDN博客
解决PyCharm调试查看变量时一直显示collecting data并报错Timeout waiting for response且看不到任何内容_越野者的博客-CSDN博客_pycharm调试显示变量
python - Debugger times out at "Collecting data..." - Stack Overflow