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

个人做网站接装修活哪个网站好外贸网站主机选择

个人做网站接装修活哪个网站好,外贸网站主机选择,影视传媒网站设计,wordpress 旅游网站Pytorch单机多卡分布式训练 数据并行#xff1a; DP和DDP 这两个都是pytorch下实现多GPU训练的库#xff0c;DP是pytorch以前实现的库#xff0c;现在官方更推荐使用DDP#xff0c;即使是单机训练也比DP快。 DataParallel#xff08;DP#xff09; 只支持单进程多线程…Pytorch单机多卡分布式训练 数据并行 DP和DDP 这两个都是pytorch下实现多GPU训练的库DP是pytorch以前实现的库现在官方更推荐使用DDP即使是单机训练也比DP快。 DataParallelDP 只支持单进程多线程单一机器上进行训练。模型训练开始的时候先把模型复制到四个GPU上面然后把数据分配给四个GPU进行前向传播前向传播之后再汇总到卡0上面然后在卡0上进行反向传播参数更新再将更新好的模型复制到其他几张卡上。 DistributedDataParallelDDP 支持多线程多进程单一或者多个机器上进行训练。通常DDP比DP要快。 先把模型载入到四张卡上每个GPU上都分配一些小批量的数据再进行前向传播反向传播计算完梯度之后再把所有卡上的梯度汇聚到卡0上面卡0算完梯度的平均值之后广播给所有的卡所有的卡更新自己的模型这样传输的数据量会少很多。 DDP代码写法 初始化 import torch.distributed as dist import torch.utils.data.distributed# 进行初始化backend表示通信方式可选择的有nccl英伟达的GPU2GPU的通信库适用于具有英伟达GPU的分布式训练、gloo基于tcp/ip的后端可在不同机器之间进行通信通常适用于不具备英伟达GPU的环境、mpi适用于支持mpi集群的环境 # init_method: 告知每个进程如何发现彼此默认使用env:// dist.init_process_group(backendnccl, init_methodenv://)设置device device torch.device(fcuda:{args.local_rank}) # 设置devicelocal_rank表示当前机器的进程号该方式为每个显卡一个进程 torch.cuda.set_device(device) # 设定device创建dataloader之前要加一个sampler trans transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (1.0,))]) data_set torchvision.datasets.MNIST(./, trainTrue, transformtrans, target_transformNone, downloadTrue) train_sampler torch.utils.data.distributed.DistributedSampler(data_set) # 加一个sampler data_loader_train torch.utils.data.DataLoader(datasetdata_set, batch_size256, samplertrain_sampler)torch.nn.parallel.DistributedDataParallel包裹模型先to(device)再包裹模型 net torchvision.models.resnet101(num_classes10) net.conv1 torch.nn.Conv2d(1, 64, (7, 7), (2, 2), (3, 3), biasFalse) net net.to(device) net torch.nn.parallel.DistributedDataParallel(net, device_ids[device], output_device[device]) # 包裹模型真正训练之前要set_epoch()否则将不会shuffer数据 for epoch in range(10):train_sampler.set_epoch(epoch) # set_epochfor step, data in enumerate(data_loader_train):images, labels dataimages, labels images.to(device), labels.to(device)opt.zero_grad()outputs net(images)loss criterion(outputs, labels)loss.backward()opt.step()if step % 10 0:print(loss: {}.format(loss.item()))模型保存 if args.local_rank 0: # local_rank为0表示master进程torch.save(net, my_net.pth)运行 if __name__ __main__:parser argparse.ArgumentParser()# local_rank参数是必须的运行的时候不必自己指定DDP会自行提供parser.add_argument(--local_rank, typeint, default0)args parser.parse_args()main(args)运行命令 python -m torch.distributed.launch --nproc_per_node2 多卡训练.py # --nproc_per_node2表示当前机器上有两个GPU可以使用完整代码 import os import argparse import torch import torchvision import torch.distributed as dist import torch.utils.data.distributedfrom torchvision import transforms from torch.multiprocessing import Processdef main(args):# nccl: 后端基于NVIDIA的GPU-to-GPU通信库适用于具有NVIDIA GPU的分布式训练# gloo: 后端是一个基于TCP/IP的后端可在不同机器之间进行通信通常适用于不具备NVIDIA GPU的环境。# mpi 后端使用MPI实现适用于具备MPI支持的集群环境。# init_method: 告知每个进程如何发现彼此如何使用通信后端初始化和验证进程组。 默认情况下如果未指定 init_methodPyTorch 将使用环境变量初始化方法 (env://)。dist.init_process_group(backendnccl, init_methodenv://) # nccl比较推荐device torch.device(fcuda:{args.local_rank})torch.cuda.set_device(device)trans transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (1.0,))])data_set torchvision.datasets.MNIST(./, trainTrue, transformtrans, target_transformNone, downloadTrue)train_sampler torch.utils.data.distributed.DistributedSampler(data_set)data_loader_train torch.utils.data.DataLoader(datasetdata_set, batch_size256, samplertrain_sampler)net torchvision.models.resnet101(num_classes10)net.conv1 torch.nn.Conv2d(1, 64, (7, 7), (2, 2), (3, 3), biasFalse)net net.to(device)net torch.nn.parallel.DistributedDataParallel(net, device_ids[device], output_device[device])criterion torch.nn.CrossEntropyLoss()opt torch.optim.Adam(paramsnet.parameters(), lr0.001)for epoch in range(10):train_sampler.set_epoch(epoch)for step, data in enumerate(data_loader_train):images, labels dataimages, labels images.to(device), labels.to(device)opt.zero_grad()outputs net(images)loss criterion(outputs, labels)loss.backward()opt.step()if step % 10 0:print(loss: {}.format(loss.item()))if args.local_rank 0:torch.save(net, my_net.pth)if __name__ __main__:parser argparse.ArgumentParser()# must parse the command-line argument: --local_rankLOCAL_PROCESS_RANK, which will be provided by DDPparser.add_argument(--local_rank, typeint, default0)args parser.parse_args()main(args) 参考 https://zhuanlan.zhihu.com/p/594046884 https://zhuanlan.zhihu.com/p/358974461
http://www.dnsts.com.cn/news/199014.html

相关文章:

  • 昆明制作网站公司h5游戏源码
  • 有效的网络编址方案有沈阳seo建站
  • 帝国网站怎么仿站wordpress中文论坛
  • 响应式网站导航栏专门做高端网站设计的云华设计
  • 广州企业500强名单广州seo推广运营专员
  • 免费软件怎么盈利谷歌wordpress优化
  • 台州专业网站建设framer网页界面设计
  • 做网站好处瓦房店网站制作
  • 礼品网站制作湖南建设教育网站
  • 廊坊网站建设方案开发软文推广案例500字
  • 网站建设 好牛网站建设申请书
  • 新万网西安seo王尘宇
  • 网站开发及维护费用网站建设服务协议
  • 凤城网站建设哈尔滨可以做网站的公司
  • 网站图片加载 优化网站备案和服务器备案
  • 做俄语网站建设WordPress用户认证中心
  • 商户如何做h5商城网站是什么意思怎样批量做全国网站
  • 网站后台报表统计系统新乡网站建设多少钱
  • 上海自适应网站制作灯光设计师培训
  • 佛山高端网站设计外贸在哪个网站做
  • 医院 网站建设 中企动力深圳市建业公司
  • 网站开发做原型吗搭建平台的成语
  • 做采集的网站有流量吗石家庄市住房和建设局网站
  • 紫金银行网站医疗网站建设咨询
  • 购物类型网站建设服务器安wordpress
  • it网站模板四种营销策略
  • 网站备案与icp备案华耀建设网站
  • 佛山响应式网站公司南京高端网站建设公司
  • 生物网站建设查一下红之易道学做的什么网站
  • 做企业网站需要准备什么行业门户网站建设费用