pycharm pytorch_Pycharm 下如何 debug torch.distributed

前言

关于 torch.distributed 的用法,请参考:

Todd:PyTorch Parallel Training(单机多卡并行、混合精度、同步BN训练指南文档)

纵横:当代研究生应当掌握的并行训练方法(单机多卡)

https://github.com/tczhangzhi/pytorch-distributed

里面的内容大同小异,看过一个就够了,这里不作赘述。

上述文章给出的代码调用方式,都是在命令行输入如下命令:

CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch --nproc_per_node=4 main.py

我只有两个卡,所以相应的命令就是:

CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.launch --nproc_per_node=2 main.py

但是这样运行代码 debug 起来很不方便,能不能用 pycharm 运行代码呢?谷歌了一下,有这种想法的人很多,但大多数都踩到了不同的坑里面,甚至有人认为 pycharm 不支持分布式训练。但本人经过尝试,终于找到了在 pycharm 下 debug torch.distributed 的方法,在此记录,以方便之后遇到这个问题的同学。

对我帮助最大的是这个链接中的内容:how to run 'python-m' command in pycharm

方法

方法说起来很简单,只需要在 Pycharm 的 Configuration 中作一些设置即可。

  • 打开 Run -> Edit Configurations...
  • Script path 不再是你自己代码的路径,而是 launch.py 文件的保存路径,例如我的是:
/home/xn/miniconda3/envs/deeplearning/lib/python3.6/site-packages/torch/distributed/launch.py
  • 设置 Parameters:
--nproc_per_node=2 main.py
  • 在 Environment variables 中添加 CUDA_VISIBLE_DEVICES=0,1
  • 剩下的 Python interpreter 和 Working directory 就按照通常情况来设置即可。

经过这些步骤,就可以在 Pycharm 中 debug 分布式训练的代码了。

附一张图:

v2-b4a0a3ad449f5ce3d1581c6c0248ce41_b.jpg
我的主函数为 main_dist.py 故作相应修改

需要引起注意的是,如果强制终止 debug,经常会造成某个卡的显存不能正常释放,此时可以在 nvidia-smi 中查看没有终止的进程,手动将其 kill 掉。

错误做法

下图为错误的 configuration,这样设置可以正常运行代码,但是 debug 时会出现 ValueError: Unexpected option: --local_rank=1 。具体原因未知。

v2-231a9fceca2d7da3bd0b9f283404755e_b.jpg
  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值