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

郑州网站建设 云极网站企业业务员怎么做

郑州网站建设 云极,网站企业业务员怎么做,百度官网,管理系统首页PyTorch 通过两种方式可以进行多GPU训练: DataParallel, DistributedDataParallel. 当使用DataParallel的时候, 梯度的计算结果和在单卡上跑是一样的, 对每个数据计算出来的梯度进行累加. 当使用DistributedDataParallel的时候, 每个卡单独计算梯度, 然后多卡的梯度再进行平均.…

PyTorch 通过两种方式可以进行多GPU训练: DataParallel, DistributedDataParallel. 当使用DataParallel的时候, 梯度的计算结果和在单卡上跑是一样的, 对每个数据计算出来的梯度进行累加. 当使用DistributedDataParallel的时候, 每个卡单独计算梯度, 然后多卡的梯度再进行平均.
下面是实验验证:

DataParallel

import torch
import os
import torch.nn as nndef main():model = nn.Linear(2, 3).cuda()model = torch.nn.DataParallel(model, device_ids=[0, 1])input = torch.rand(2, 2)labels = torch.tensor([[1, 0, 0], [0, 1, 0]]).cuda()(model(input) * labels).sum().backward()print('input', input)print([p.grad for p in model.parameters()])if __name__=="__main__":main()

执行CUDA_VISIBLE_DEVICES=0,1 python t.py可以看到输出, 代码中对两个样本分别求梯度, 梯度等于样本的值, DataParallel把两个样本的梯度累加起来在不同GPU中同步.

input tensor([[0.4362, 0.4574],[0.2052, 0.2362]])
[tensor([[0.4363, 0.4573],[0.2052, 0.2362],[0.0000, 0.0000]], device='cuda:0'), tensor([1., 1., 0.], device='cuda:0')]

DistributedDataParallel

import torch
import os
import torch.distributed as dist
import torch.multiprocessing as mp
import torch.nn as nn
import torch.optim as optim
from torch.nn.parallel import DistributedDataParallel as DDPdef example(rank, world_size):# create default process groupdist.init_process_group("gloo", rank=rank, world_size=world_size)# create local modelmodel = nn.Linear(2, 3).to(rank)print('model param', 'rank', rank, [p for p in model.parameters()])# construct DDP modelddp_model = DDP(model, device_ids=[rank])print('ddp model param', 'rank', rank, [p for p in ddp_model.parameters()])# forward passinput = torch.randn(1, 2).to(rank)outputs = ddp_model(input)labels = torch.randn(1, 3).to(rank) * 0labels[0, rank] = 1# backward pass(outputs * labels).sum().backward()print('rank', rank, 'grad', [p.grad for p in ddp_model.parameters()])print('rank', rank, 'input', input, 'outputs', outputs)print('rank', rank, 'labels', labels)# update parametersoptimizer.step()def main():world_size = 2mp.spawn(example,args=(world_size,),nprocs=world_size,join=True)if __name__=="__main__":# Environment variables which need to be# set when using c10d's default "env"# initialization mode.os.environ["MASTER_ADDR"] = "localhost"os.environ["MASTER_PORT"] = "29504"main()

执行CUDA_VISIBLE_DEVICES=0,1 python t1.py可以看到输出, 代码中对两个样本分别求梯度, 梯度等于样本的值, 最终的梯度是各个GPU的梯度的平均.

model param rank 0 [Parameter containing:
tensor([[-0.4819,  0.0253],[ 0.0858,  0.2256],[ 0.5614,  0.2702]], device='cuda:0', requires_grad=True), Parameter containing:
tensor([-0.0090,  0.4461, -0.3493], device='cuda:0', requires_grad=True)]
model param rank 1 [Parameter containing:
tensor([[-0.3737,  0.3062],[ 0.6450,  0.2930],[-0.2422,  0.2089]], device='cuda:1', requires_grad=True), Parameter containing:
tensor([-0.5868,  0.2106, -0.4461], device='cuda:1', requires_grad=True)]
ddp model param rank 1 [Parameter containing:
tensor([[-0.4819,  0.0253],[ 0.0858,  0.2256],[ 0.5614,  0.2702]], device='cuda:1', requires_grad=True), Parameter containing:
tensor([-0.0090,  0.4461, -0.3493], device='cuda:1', requires_grad=True)]
ddp model param rank 0 [Parameter containing:
tensor([[-0.4819,  0.0253],[ 0.0858,  0.2256],[ 0.5614,  0.2702]], device='cuda:0', requires_grad=True), Parameter containing:
tensor([-0.0090,  0.4461, -0.3493], device='cuda:0', requires_grad=True)]
rank 1 grad [tensor([[ 0.2605,  0.1631],[-0.0934, -0.5308],[ 0.0000,  0.0000]], device='cuda:1'), tensor([0.5000, 0.5000, 0.0000], device='cuda:1')]
rank 0 grad [tensor([[ 0.2605,  0.1631],[-0.0934, -0.5308],[ 0.0000,  0.0000]], device='cuda:0'), tensor([0.5000, 0.5000, 0.0000], device='cuda:0')]
rank 1 input tensor([[-0.1868, -1.0617]], device='cuda:1') outputs tensor([[ 0.0542,  0.1906, -0.7411]], device='cuda:1',grad_fn=<AddmmBackward0>)
rank 0 input tensor([[0.5209, 0.3261]], device='cuda:0') outputs tensor([[-0.2518,  0.5644,  0.0314]], device='cuda:0',grad_fn=<AddmmBackward0>)
rank 1 labels tensor([[-0., 1., -0.]], device='cuda:1')
rank 0 labels tensor([[1., 0., -0.]], device='cuda:0')
http://www.yayakq.cn/news/647652/

相关文章:

  • 个人建站网站专业的seo搜索引擎优化培训
  • 官方网站下载水印相机如何做好网络推广
  • 获得网站源文件网站开发技术招聘
  • 镇江百度网站湛江市律师网站建设品牌
  • 个人备案网站 内容济南建站公司模板
  • 门户网站系统开发跨境电商自己做网站引流
  • 有哪些做简历的好网站c 做网站教程
  • 网站建设和风险分析陕西恒业建设集团网站
  • 哈尔滨 网站建设公司免费空间说说点赞
  • 湘潭网站建设 皆来磐石网络网站开发用什么系统比较好
  • 肇庆做网站的有网站解析后显示建设中
  • 网站权重接口公司注册地址变更需要多久
  • 如何做收费影视资源网站wordpress页面编辑教程视频
  • 吴忠门户网站建设江苏省建筑人才网
  • 山东德州最大的网站建设教学店招搜索栏在那个网站上可以做
  • 网站用什么东西做wordpress是否可以排版
  • 个人网站备案需要哪些资料asp企业网站设计
  • 建设一个企业网站要多少钱微信小程序设计网站
  • wordpress添加赏seo排名工具哪个好
  • 如何让网站快速收录你免费发布信息网有哪些网站
  • 昆山网站建设苦瓜网络辽宁建设厅证件查询网站
  • 天河企业网站建设上海移动端网站建设
  • 怎么给自己建网站全网整合营销推广
  • 泰州整站优化文创产品设计案例及理念
  • 字体在线设计网站wordpress自定义工具栏
  • 图片网站 seo长尾关键词搜索网站
  • 网站建设中 源码如何做网站首页关键词
  • 珠海网站建设小小网络几百块钱可以做网站吗
  • 网站建设应注意哪些事项高大上的网站欣赏
  • 建设项目环境影响登记网站天津东阳便宜自适应网站建设优惠