pytorch 分布式调试debug torch.distributed.launch_pytorch 调试

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


文章目录


一. pytorch 分布式调试debug torch.distributed.launch 三种方式

1. 方式1ipdb调试建议

参考之前的博客python调试器 ipdb
注意pytorch 分布式调试只能使用侵入式调试也即是在你需要打断点的地方或者在主程序的第一行添加下面的代码

import pdb
pdb.set_trace()

当进入pdb调试后跟原先使用pdb调试命令一样可以在线打断点再使用pdb命令添加多个断点也可以逐行执行代码也能查看变量。唯一缺点是分布式调试需要在代码前手动加上pdb.set_trace()这一行代码手动打第一个断点。

命令行使用pdb未解决

命令行进行添加pdb:

python -m pdb -m torch.distributed.launch .....

命令行添加pdb后进入调试的代码在launch.py中打断点到主程序后无法进入到住程序里面------暂时未解决

2. 方式2使用pycharm进行分布式调试侵入式代码

在主函数开头添加如下代码

    if args.world_size == 0:
        os.environ['MASTER_ADDR'] = 'localhost' #master节点的ip地址os.environ['MASTER_PORT'] = '56220'  #master节点的端口号os.environ["RANK"] = "0"os.environ['WORLD_SIZE'] = '1' #debug时没有world_size=8参数,只有一个gputorch.distributed.init_process_group(backend="nccl") #分布式后端初始化

注意一定要在初始化分布式后端nccl之前添加master节点的ip地址和端口号等信息如下图

调试

然后在pycharm Edit configurations…中配置环境Script path为主程序.py文件位置Parameters程序需要运行的参数Environment variables增加环境变量配置好后点击Apply–>OK即可。

注意Parameters参数里面不能配置 ‘’–world_size’’ 参数程序world_size默认为0因为主程序需要在这一行if args.world_size == 0代码的 if 判断语句里面 需要手动配置master节点的ip和端口号以及world_size和rank等配置

调试

此方式也就是相当于在分布式代码上面使用一张卡进行代码调试。

3. 方式3使用pycharm进行分布式调试另外一种方式非侵入代码

参考链接
【PyTorch】PyCharm远程连接服务器调试torch.distributed.launch分布式程序
Pycharm运行、调试pytorch分布式训练代码

注意Parameters参数的详细设置中所有参数涉及需要路径的地方如文件路径保存路径数据集路径等就必须使用绝对路径不然会报错找不到文件如下图

调试

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6