范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Pytorch分布式训练极简体验

  1 任务介绍
  通过实现一个线性变换模型
  的单机2卡分布式训练任务,来初步体验pytorch中DistributeDataparallel的使用。本文主要参考pytorch tutorial中的介绍。
  2 整体流程
  代码编写流程如下:初始化pytorch分布式训练通信模块;创建模型(这里包括本地模型和分布式模型)创建损失函数和优化器计算(forward 和backward)和梯度更新多任务启动
  3 初始化通信模块
  pytorch中分布式通信模块为torch.distributed
  本例中初始化代码为:通过环境变量MASTER_ADDR和MASTER_PORT设置rank0的IP和PORT信息,rank0的作用相当于是协调节点,需要其他所有节点知道其访问地址;本例中后端选择的是nccl,通过设置NCCL_DEBUG环境变量为INFO,输出NCCL的调试信息;init_process_group:执行网络通信模块的初始化工作backend:设置后端网络通信的实现库,可选的为gloo、nccl和mpi;rank:为当前rank的index,用于标记当前是第几个rank,取值为0到work_size - 1之间的值;world_size: 有多少个进程参与到分布式训练中;    # set env信息     os.environ["MASTER_ADDR"] = "127.0.0.1"     os.environ["MASTER_PORT"] = "29500"     os.environ["NCCL_DEBUG"] = "INFO"          # create default process group     dist.init_process_group(backend="nccl", rank=rank, world_size=world_size)
  4 创建模型
  通过下面的代码分别创建本地模型和分布式模型:nn.Linear(10, 10).to(rank): 创建线性变换模型,input size和out put size都是10,并且将模型copy到gpu上(通过rank来标识gpu 的id)DDP(model, device_ids=[rank]): 创建分布式模型;该模型会将local model 复制到所有副本上,并对数据进行切分,然后使得每个local model都按照mini batch进行训练。    # create local model     model = nn.Linear(10, 10).to(rank)      # construct DDP model     ddp_model = DDP(model, device_ids=[rank])
  5 创建Loss和optimizer    # define loss function and optimizer     loss_fn = nn.MSELoss()     optimizer = optim.SGD(ddp_model.parameters(), lr=0.001)
  6 计算和梯度更新
  通过ddp_model执行forward和backward计算,这样才能够达到分布式计算的效果;    # forward pass     outputs = ddp_model(torch.randn(20, 10).to(rank))     labels = torch.randn(20, 10).to(rank)      # backward pass     loss_fn(outputs, labels).backward()          # update parameters     optimizer.step()
  7 任务启动
  启动一个有两个process组成的分布式任务:run_worker:子进程执行的function,会以fn(i, *args)的形式被调用,i为process的id(0,1,2...),*args为spawn的args参数args:执行进程的参数nprocs:进程的个数join:是否等待子进程执行完成def main():     worker_size = 2     mp.spawn(run_worker,         args=(worker_size,),         nprocs=worker_size,         join=True)
  8 完整代码import os import torch 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 DDP   def run_worker(rank, world_size):     os.environ["MASTER_ADDR"] = "127.0.0.1"     os.environ["MASTER_PORT"] = "29500"     os.environ["NCCL_DEBUG"] = "INFO"     # create default process group     dist.init_process_group(backend="nccl", rank=rank, world_size=world_size)      # create local model     model = nn.Linear(10, 10).to(rank)      # construct DDP model     ddp_model = DDP(model, device_ids=[rank])      # define loss function and optimizer     loss_fn = nn.MSELoss()     optimizer = optim.SGD(ddp_model.parameters(), lr=0.001)      # forward pass     outputs = ddp_model(torch.randn(20, 10).to(rank))     labels = torch.randn(20, 10).to(rank)      # backward pass     loss_fn(outputs, labels).backward()      # update parameters     optimizer.step()  def main():     worker_size = 2     mp.spawn(run_worker,         args=(worker_size,),         nprocs=worker_size,         join=True)  if __name__=="__main__":     main()
  代码执行如下:root@g48r13:/workspace/DDP# python linear-ddp.py g48r13:350:350 [0] NCCL INFO Bootstrap : Using [0]bond0:11.139.84.88<0> g48r13:350:350 [0] NCCL INFO NET/Plugin : No plugin found (libnccl-net.so), using internal implementation  g48r13:350:350 [0] misc/ibvwrap.cc:63 NCCL WARN Failed to open libibverbs.so[.1] g48r13:350:350 [0] NCCL INFO NET/Socket : Using [0]bond0:11.139.84.88<0> g48r13:350:350 [0] NCCL INFO Using network Socket NCCL version 2.7.8+cuda10.2 g48r13:351:351 [1] NCCL INFO Bootstrap : Using [0]bond0:11.139.84.88<0> g48r13:351:351 [1] NCCL INFO NET/Plugin : No plugin found (libnccl-net.so), using internal implementation  g48r13:351:351 [1] misc/ibvwrap.cc:63 NCCL WARN Failed to open libibverbs.so[.1] g48r13:351:351 [1] NCCL INFO NET/Socket : Using [0]bond0:11.139.84.88<0> g48r13:351:351 [1] NCCL INFO Using network Socket g48r13:350:366 [0] NCCL INFO Channel 00/02 :    0   1 g48r13:351:367 [1] NCCL INFO threadThresholds 8/8/64 | 16/8/64 | 8/8/64 g48r13:350:366 [0] NCCL INFO Channel 01/02 :    0   1 g48r13:351:367 [1] NCCL INFO Trees [0] -1/-1/-1->1->0|0->1->-1/-1/-1 [1] -1/-1/-1->1->0|0->1->-1/-1/-1 g48r13:351:367 [1] NCCL INFO Setting affinity for GPU 1 to ffffffff,ffffffff g48r13:350:366 [0] NCCL INFO threadThresholds 8/8/64 | 16/8/64 | 8/8/64 g48r13:350:366 [0] NCCL INFO Trees [0] 1/-1/-1->0->-1|-1->0->1/-1/-1 [1] 1/-1/-1->0->-1|-1->0->1/-1/-1 g48r13:350:366 [0] NCCL INFO Setting affinity for GPU 0 to ffffffff,ffffffff g48r13:351:367 [1] NCCL INFO Channel 00 : 1[5000] -> 0[4000] via P2P/IPC g48r13:350:366 [0] NCCL INFO Channel 00 : 0[4000] -> 1[5000] via P2P/IPC g48r13:351:367 [1] NCCL INFO Channel 01 : 1[5000] -> 0[4000] via P2P/IPC g48r13:350:366 [0] NCCL INFO Channel 01 : 0[4000] -> 1[5000] via P2P/IPC g48r13:351:367 [1] NCCL INFO 2 coll channels, 2 p2p channels, 2 p2p channels per peer g48r13:351:367 [1] NCCL INFO comm 0x7fb0b4001060 rank 1 nranks 2 cudaDev 1 busId 5000 - Init COMPLETE g48r13:350:366 [0] NCCL INFO 2 coll channels, 2 p2p channels, 2 p2p channels per peer g48r13:350:366 [0] NCCL INFO comm 0x7fc7a8001060 rank 0 nranks 2 cudaDev 0 busId 4000 - Init COMPLETE g48r13:350:350 [0] NCCL INFO Launch mode Parallel

姆巴佩被选为第二队长引发争议原队副不满,媒体为梅西打抱不平巴黎圣日耳曼的队长是巴西人马尔基尼奥斯,他是一名中后卫,他在巴黎已经10年了。此前球队副队长是金彭贝,这是一名27岁的后卫,从俱乐部的青年队成长起来的。但法国人在社交媒体上宣布,副杨迪爱情需要势均力敌近期,著名搞笑主持人,演员杨迪与相爱12年女友分手一事闹得沸沸扬扬,引起了不小的争议。其实,作为一个男士,从男性角度看杨迪分手事件,其实很简单,分手更是必然。一句话就可以解释爱情,预见金兔景顺投资刘徽2023年A股有较大机会迎来转折看好医疗风电和光伏产劫波渡尽,拨云见日。在一片忐忑与期许交织彷徨与寄望互融中,我们告别了2022年,迎来了崭新的2023年。在这辞旧迎新的重要时点,券商中国券中社APP现邀请各大金融机构代表,以真人出过年串亲戚拎什么酒合适?过来人推荐这4款,100纯粮,好喝有面过年串亲戚拎什么酒合适?过来人推荐这4款,100纯粮,好喝有面新年如期而至,这对于国人来说,是很高兴的事,也是期待了整整一年的事。自古以来,新年对于国人都有着深远意义。它意味着终而中经评论践行光盘新风尚让节俭年饭香喷喷来源中国经济网幸福最是团圆时。对中国人来说,过年时,与家人亲朋共享美味共庆佳节,是必不可少的仪式。特别是那一桌精心烹饪的年夜饭,更承载着浓浓的年味和亲情,恨不得十八般武艺全上,越丰最新排名丁俊晖168万第22,奥沙利文第1,赵心童第9,颜丙涛16北京时间1月24日消息,随着赛事1号种子小钢炮马克艾伦,以109险胜贾德特鲁姆普夺得冠军,2023斯诺克大奖赛圆满落幕。大奖赛结束之后,世界排名随即更新,中国一哥丁俊晖依旧排第22年味儿浓尤溪这场村晚你去了吗?2023HAPPYNEWYEAR如今,演村晚看村晚已经成为村民每年春节的期待和习惯,年味乡味文化味,装点了新年里新农村喜人向上的年俗新风采。在半山村新知青艺社的传统民宿内遇见半山首为什么神探狄仁杰2是该系列中最好看的?作为国产高分悬疑剧,神探狄仁杰的热度不一般。这个系列一共有五部电影,但其实大家公认的是前三部。不过,在五位神探狄仁杰中,观众对每一位的口碑都不一样。第一个最吓人,第二第三个最好,第春晚为什么不好看春晚作为中华民族重要的传统IE日,可以说是中国人所有节日中无法取代的,也是让很多在外的游子,翻山越岭,跨过江海和家人团聚的重要节日。亲朋好友团聚一桌,互相吐槽一年中的酸甜苦辣,也互英超0富勒姆北京时间1月24日凌晨4点15分,202223赛季英超联赛第21轮,托特纳姆热刺客场挑战同城的富勒姆。本场比赛是凯恩在热刺的第300场英超比赛,他在上半场补时阶段打进了全场唯一进球再见姆巴佩!金球先生续约2年,愿终老皇马,哈兰德25年无缝接班皇马方面在和金球先生本泽马的续约问题上一直都是相当主动的,目前主持人Pacojo也报道了本泽马和皇马方面达成续约的消息本泽马将会和皇马续约2年,并且在本泽马退出法国国家队之后,将会
北京现代三季度销量持续攀升开启智能电动化转型中证网讯(记者金一丹)近日,中国证券报记者从北京现代了解到,北京现代迎来成立二十周年,相关负责人表示,以今年初中韩双方股东联合增资为契机,北京现代将向智能化电动化全面转型。据介绍,雪铁龙汽车标志的真实含义趁换标之际,我们一起看看雪铁龙背后的故事和汽车标识的演化。近日,雪铁龙汽车发布了其全新标志。实际上,Stellantis集团旗下雷诺汽车和标致汽车均已完成换标,这三家汽车公司均不约2022年新兴技术成熟度曲线发布,这三大趋势值得关注小海按高德纳咨询公司新公布的2022年新兴技术成熟度曲线包含了25项推动差异化竞争与效率提升必须知晓的创新。其中部分技术需要10年或更长时间才能被接受,而技术处于萌芽态也意味着部署鞭牛晚报马斯克以2510亿美元身价成为美国首富奔驰客服回应导航时弹窗广告iPhone14Pro被曝充电时随机重启编者按鞭牛士将以晚报形式盘点一天内发生的重要事件,内容涵盖国际国内科技互联网,为科技行业从业者用户传递行业信息。国内动态1网传58到家阿姨被雇主辞退后,上门殴打雇主家人和孩子一张网2022年,该买房还是该卖房?专家信号已经很明显了点击右上方关注,带你寻找楼市真相。自2021年上半年开始,为了控制房价过快地上涨,全国楼市调控政策不断。不仅银行贷款审批越发严格,下款周期拉长,就连房贷利率也一路突破6。到了下半年启用六周年中国天眼交出怎样的成绩单?央视网消息被誉为中国天眼的500米口径球面射电望远镜FAST,2016年9月25日在贵州平塘落成启用。中国天眼六周年,交出了一份怎样的成绩单呢?在大家印象中,望远镜通常是一个圆筒,实拍哪吒S纯电版临近交付还把座椅改了,这是要闹哪样?新能源汽车有个非常特别的地方,上市不等于交付,尤其是造车新势力品牌。这当然是有利有弊,等车的感觉让人很不爽,但反过来看,从新车上市到交付,也算给了厂家一段缓冲时间,能把新车再精雕细电动汽车1000公里续航是真实的吗?楔子里程焦虑充电时间电池刺客电动汽车发展势头迅猛,但是困扰消费者的还是10年前的老问题。今天来说说续航问题,1000公里续航能解决消费者顾虑吗,是真实的吗?早在2021年1月9日,东南亚成新目标新能源汽车品牌争相出海北京日报客户端记者赵语涵东南亚成新目标新能源汽车品牌争相出海哪吒U国际版首次登陆东南亚,在老挝上市比亚迪签约泰国WHA工业园,将建设首个海外乘用车工厂蔚来在匈牙利投资建设的蔚来能源10月起,农民养老金和医保要注意3件事,建议及时转发给亲朋好友点击上方蓝色按钮,可同步收听全文精彩内容国庆将至,全国将进入7天小长假,这也是非常惬意的休假时光。对于我们农民来说,10月起,养老金和医保要注意3件事,建议及时转发给亲朋好友看看,蒸发800亿,教主回归也难救,股份被冻结的国美,还能撑多久黄光裕重回国美2年时间内,国美股价从2。55港元股跌至0。19港元,其跌幅超90。而在公司业绩斗转直下的背景下,黄光裕夫妇却疯狂套现,咋回事?文话谈财料黄光裕的前半生可谓是传奇,1