分布式深度神经网络代码复现 未完待续

一、配置代码环境

根据文档配置环境

二、遇见问题

2.1 win 系统运行 sh 文件:用conda 配环境,pytorch配置参数运行sh文件

  1. 缺少的库和包直接在conda 里配。
  1. pytorch运行
2.1 查看run.sh 查看主函数在哪

可知主程序为 dbs.py 文件

2.2 打开dbs.py 文件

dbs.py中规定,超参(如batch_size、world_size)都来自args

而args又调用parseA.py中的函数get_parse

2.3 打开parserA.py

parseA.py中的函数get_parse中规定了一些超参的写法

如world_size对应-ws,对应集群数量,由于我的电脑只有一个cpu,因此设为1。按照论文,此处应该设置为4。

这里注意debug对应-d,为true时使用cpu运行,false时使用gpu。由于我的电脑只有cpu,所以这里应设置为true,后期用服务器的时候再调整为false。

2.4 运行dbs.py

在dbs.py的 configuration 中执行超参配置

  1. 出现问题
3.1 AttributeError: module ‘torch.distributed‘ has no attribute ‘init_process_group‘

报错原因:

torch1.7 以下版本不支持Windows下的分布式训练,在Linux内核才不会报这个错。

解决办法:

方法1:

换成Linux系统运行代码

方法2:

1)将Windows下的 torch 换成 1.7.0及以上的版本。(1.5~1.8 版本的 torch 代码基本都兼容)

温馨提示:建议离线下载 torch1.7.1 版本,torchvision0.8.2 版本。

下载链接如下:

https://download.pytorch.org/whl/

2)使用conda更换torch和torchvision版本

3)之后,将 init_process_group 函数的参数更改为以下内容:

torch.distributed.init_process_group( backend="gloo", 
                                      init_method=r"file:///{your model path}", 
                                      world_size=args.world_size,   # 本机gpu的数目 
                                      rank=args.rank    )   # rank是本机gpu的编号列表,如2个gpu即为 [0,1]

3.2 RuntimeError: No rendezvous handler for env://错误(dbs.py文件中)

出问题代码如下:

import torch.distributed as dist
dist.init_process_group(backend="gloo",
                        world_size=args.world_size,
                        rank=args.local_rank)

在上述代码中,我们没有对init_process_group函数的参数init_method进行设置,所以参数init_method使用了默认值env://,但是在windows上并不支持env://,所以我们需要增加init_method参数:

import torch.distributed as dist
dist.init_process_group(backend="gloo",
                                world_size=args.world_size,
                                rank=args.local_rank,
                                init_method="file:///sharefile")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值