当前位置: 首页 > news >正文

沧州网站制作教程就业seo好还是sem

沧州网站制作教程,就业seo好还是sem,wordpress完全静态,网站提速怎么做目录 一、几个比较常见的概念:二、踩坑记录2.1 dist.init_process_group初始化2.2 spawn启动(rank怎么来的)2.3 loss backward2.4 model cuda设置2.5 数据加载 一、几个比较常见的概念: rank: 多机多卡时代表某一台机器&#xff…

目录

    • 一、几个比较常见的概念:
    • 二、踩坑记录
      • 2.1 dist.init_process_group初始化
      • 2.2 spawn启动(rank怎么来的)
      • 2.3 loss backward
      • 2.4 model cuda设置
      • 2.5 数据加载

一、几个比较常见的概念:

  • rank: 多机多卡时代表某一台机器,单机多卡时代表某一块GPU
  • world_size: 多机多卡时代表有几台机器,单机多卡时代表有几块GPU
    world_size = torch.cuda.device_count()
    
  • local_rank: 多机多卡时代表某一块GPU, 单机多卡时代表某一块GPU
    单机多卡的情况要比多机多卡的情况常见的多。
  • DP:适用于单机多卡(=多进程)训练。算是旧版本的DDP
  • DDP:适用于单机多卡训练、多机多卡。

二、踩坑记录

2.1 dist.init_process_group初始化

这一步就是设定一个组,这个组里面设定你有几个进程(world_size),现在是卡几(rank)。让pycharm知道你要跑几个进程,包装在组内,进行通讯这样模型参数会自己同步,不需要额外操作了。

import os
import torch.distributed as distdef ddp_setup(rank,world_size):os.environ['MASTER_ADDR'] = 'localhost' #rank0 对应的地址os.environ['MASTER_PORT'] = '6666' #任何空闲的端口dist.init_process_group(backend='nccl',  #nccl Gloo #nvidia显卡的选择ncclworld_size=world_size, init_method='env://',rank=rank) #初始化默认的分布进程组dist.barrier() #等到每块GPU运行到这再继续往下走

2.2 spawn启动(rank怎么来的)

rank是自动分配的。怎么分配呢?这里用的是spawn也就一行代码。

import torch.multiprocessing as mp
def main (rank:int,world_size:int,args):pass#训练代码 主函数mp.spawn(main,args=(args.world_size,args), nprocs=args.world_size)

注意,调用spawn的时候,没有输入main的其中一个参数rank,rank由代码自动分配。将代码复制两份在两张卡上同时跑,你可以print(rank),会发现输出 0 1。两份代码并行跑。

另外,nprocs=args.world_size。如果不这么写,代码会卡死在这,既不报错,也不停止。

2.3 loss backward

one of the variables needed for gradient computation has been modified by an inplace operationRuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [2048]] is at version 4; expected version 3 instead. Hint: enable anomaly detection to find the operation that failed to compute its gradient, with torch.autograd.set_detect_anomaly(True).

经过调试发现,当使用nn.DataParallel并行训练或者单卡训练均可正常运行;另外如果将两次模型调用集成到model中,即通过out1, out2 = model(input0, input1) 的方式在分布式训练下也不会报错。

在分布式训练中,如果对同一模型进行多次调用则会触发以上报错,即nn.parallel.DistributedDataParallel方法封装的模型,forword()函数和backward()函数必须交替执行,如果执行多个(次)forward()然后执行一次backward()则会报错。

解决此问题可以聚焦到nn.parallel.DistributedDataParallel接口上,通过查询PyTorch官方文档发现此接口下的两个参数:

  • find_unused_parameters: 如果模型的输出有不需要进行反向传播的,此参数需要设置为True;若你的代码运行后卡住不动,基本上就是该参数的问题。
  • broadcast_buffers: 该参数默认为True,设置为True时,在模型执行forward之前,gpu0会把buffer中的参数值全部覆盖到别的gpu上。
model = nn.parallel.DistributedDataParallel(model, device_ids=[args.local_rank], broadcast_buffers=False, find_unused_parameters=True)

2.4 model cuda设置

RuntimeError: NCCL error in: ../torch/lib/c10d/ProcessGroupNCCL.cpp:859, invalid usage, NCCL version 21.1.1
ncclInvalidUsage: This usually reflects invalid usage of NCCL library (such as too many async ops, too many collectives at once, mixing streams in a group, etc).

*这是因为model和local_rank所指定device不一致引起的错误。

model.cuda(args.local_rank)
model = torch.nn.parallel.DistributedDataParallel(model, device_ids=[args.local_rank],broadcast_buffers=False,find_unused_parameters=True)

2.5 数据加载

使用distributed加载数据集,需要使用DistributedSampler自动为每个gpu分配数据,但需要注意的是sampler和shuffle=True不能并存。

train_sampler = DistributedSampler(trainset)
train_loader = torch.utils.data.DataLoader(trainset,batch_size=args.train_batch_size,num_workers=args.train_workers,sampler=train_sampler)
http://www.15wanjia.com/news/28944.html

相关文章:

  • 做电棍网站网站在线制作
  • 湖南大型网站建设浏览器打开是2345网址导航
  • 网站建设 铭阳传媒广州seo网络培训课程
  • 手机网站建设策划书登录百度账号
  • 利用c 做网站搜索引擎优化缩写
  • 呼和浩特网站建设费用seo编辑的工作内容
  • 布吉做棋牌网站建设哪家技术好中国最新领导班子
  • 网站上线需要哪些步骤seo海外
  • 上海有名的做网站的公司有哪些厦门关键词排名提升
  • 英国跨境电商平台有哪些郑州网站关键词优化外包
  • 网站空间 支持什么程序竞价网络推广培训
  • 高端的饰品行业网站开发汽车软文广告
  • 铁岭 建筑公司网站 中企动力建设天津百度seo排名优化软件
  • 龙岩网站设计找哪家好北京云无限优化
  • 文库网站怎么做seo广州seo网站排名
  • 旅游网站模板库网络营销方式包括哪些
  • 腾讯域名怎么做网站南京谷歌优化
  • 地产公司网站建设方案求个网站
  • 找个人做网站优化大师是干什么的
  • 成人编程培训机构seo推广效果怎么样
  • 会员管理系统功能seo推广哪家好
  • 云南省建设系统网站网络舆情应急预案
  • wordpress插入视频湖南靠谱seo优化报价
  • flash中国官网苏州seo培训
  • 网站做电子链接标识申请好吗关键词优化排名用什么软件比较好
  • 泰州企业网站建站模板关键词优化的五个步骤
  • 深圳公司网站制作企业外链购买平台
  • 网站好处电商网站图片
  • 现在推广网站最好的方式郑州百度推广代理公司
  • wordpress网站如何播放视频播放器近期出现的病毒叫什么