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

如何了解和掌握一个网站的权重网站开发更新记录

如何了解和掌握一个网站的权重,网站开发更新记录,做网站什么语言,北京网站优化效果目录 一、几个比较常见的概念#xff1a;二、踩坑记录2.1 dist.init_process_group初始化2.2 spawn启动#xff08;rank怎么来的#xff09;2.3 loss backward2.4 model cuda设置2.5 数据加载 一、几个比较常见的概念#xff1a; rank: 多机多卡时代表某一台机器#xff… 目录 一、几个比较常见的概念二、踩坑记录2.1 dist.init_process_group初始化2.2 spawn启动rank怎么来的2.3 loss backward2.4 model cuda设置2.5 数据加载 一、几个比较常见的概念 rank: 多机多卡时代表某一台机器单机多卡时代表某一块GPUworld_size: 多机多卡时代表有几台机器单机多卡时代表有几块GPUworld_size torch.cuda.device_count()local_rank: 多机多卡时代表某一块GPU 单机多卡时代表某一块GPU 单机多卡的情况要比多机多卡的情况常见的多。DP适用于单机多卡多进程训练。算是旧版本的DDPDDP适用于单机多卡训练、多机多卡。 二、踩坑记录 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(backendnccl, #nccl Gloo #nvidia显卡的选择ncclworld_sizeworld_size, init_methodenv://,rankrank) #初始化默认的分布进程组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), nprocsargs.world_size)注意调用spawn的时候没有输入main的其中一个参数rankrank由代码自动分配。将代码复制两份在两张卡上同时跑你可以print(rank)会发现输出 0 1。两份代码并行跑。 另外nprocsargs.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_buffersFalse, find_unused_parametersTrue)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_buffersFalse,find_unused_parametersTrue)2.5 数据加载 使用distributed加载数据集需要使用DistributedSampler自动为每个gpu分配数据但需要注意的是sampler和shuffleTrue不能并存。 train_sampler DistributedSampler(trainset) train_loader torch.utils.data.DataLoader(trainset,batch_sizeargs.train_batch_size,num_workersargs.train_workers,samplertrain_sampler)
http://wiki.neutronadmin.com/news/436768/

相关文章:

  • 小学生做网站步骤网络教育全程托管
  • 资兴网站设计今天安阳最新消息
  • 高端网站开发 金蝶南山公司网站建设
  • 在本地做改版如何替换旧网站会影响百度收录吗友情链接交换
  • 做公司网站思路如何用自己电脑做网站服务器
  • 如何策划一个网站云南云南省建设厅网站
  • 九江 网站建设公司乐陵seo快速排名
  • 模板网站与 定制网站的 对比所有代刷平台推广
  • 设计网站免费的怎么做美食团购网站
  • 建设了网站后怎么用谷歌引流问鼎电子娱乐下载官方网站
  • 太仓网站建设平台如何在局域网建立网站
  • wordpress主题zip除了seo还可以做哪些推广呢
  • 长宁网站推广公司甘肃兰州事件
  • 柳编网站建设意义如何制作网页链接
  • 福州建网站 做网页个人网站备案不通过
  • 母婴门户网站模板怎么做网址导航网站
  • 1000套网站源码安徽网站推广优化
  • 中国建设银行贵州省分行网站网站建设多少钱一个平台
  • 免费开源电商系统搜索引擎优化的方法
  • 网站单个页面做301书画网站的建设目标
  • 论坛网站有哪些仿做网站
  • 双体系建设网站豆浆怎么制作教程
  • 网页版微信二维码扫描北京百度网站排名优化
  • 平台网站模板素材网站开发的在线支付功能
  • 安徽网站制作东莞网站的制作
  • 不会编程能做网站吗电商类网站开发方案
  • 代刷开通建设网站网址查询ip地址方法
  • python怎么做抢课网站西安知名网络推广公司
  • 一个网站用两个域名网页设计师联盟
  • 东莞高端网站设计新闻摘抄大全