关于pytorch多GPU训练实例与性能对比分析


Posted in Python onAugust 19, 2019

以下实验是我在百度公司实习的时候做的,记录下来留个小经验。

多GPU训练

cifar10_97.23 使用 run.sh 文件开始训练

cifar10_97.50 使用 run.4GPU.sh 开始训练

在集群中改变GPU调用个数修改 run.sh 文件

nohup srun --job-name=cf23 $pt --gres=gpu:2 -n1 bash cluster_run.sh $cmd 2>&1 1>>log.cf50_2GPU &

修改 ?gres=gpu:2 即可

Python 文件代码修改

parser.add_argument('--batch_size', type=int, default=96*2, help='batch size')

修改对应 batch size 大小,保证每块GPU获得等量的训练数据,因为batch_size的改变会影响训练精度

最容易实现的单GPU训练改为多GPU训练代码

单GPU:logits, logits_aux = model(input)

多GPU:

if torch.cuda.device_count()>1:#判断是否能够有大于一的GPU资源可以调用

   logits, logits_aux =nn.parallel.data_parallel(model,input)

  else:

   logits, logits_aux = model(input)

缺点:不是性能最好的实现方式

优点:代码嵌入适应性强,不容易报错

性能分析

该图为1到8GPU训练cifar10——97.23网络的实验对比

关于pytorch多GPU训练实例与性能对比分析

可以看到单核训练600轮需要53小时、双核训练600轮需要26小时、四核16、六核14、八核13。

在可运行7小时的GPU上的对比实验:单核跑完83轮、双核跑完163轮、四核跑完266轮

结论:性价比较高的是使用4~6核GPU进行训练,但是多GPU训练对于单GPU训练有所差异,训练的准确率提升会有所波动,目前发现的是负面的影响。

以上这篇关于pytorch多GPU训练实例与性能对比分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现将数据库一键导出为Excel表格的实例
Dec 30 Python
Python实现针对含中文字符串的截取功能示例
Sep 22 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
Jan 10 Python
python中的json总结
Oct 11 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
python三引号输出方法
Feb 27 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
python性能测量工具cProfile使用解析
Sep 26 Python
关于Keras Dense层整理
May 21 Python
pandas之分组groupby()的使用整理与总结
Jun 18 Python
Selenium Webdriver元素定位的八种常用方式(小结)
Jan 13 Python
python超详细实现完整学生成绩管理系统
Mar 17 Python
pytorch 更改预训练模型网络结构的方法
Aug 19 #Python
pytorch打印网络结构的实例
Aug 19 #Python
pytorch索引查找 index_select的例子
Aug 18 #Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 #Python
PyTorch中Tensor的维度变换实现
Aug 18 #Python
PyTorch中Tensor的拼接与拆分的实现
Aug 18 #Python
详解PyTorch中Tensor的高阶操作
Aug 18 #Python
You might like
深入PHP数据缓存的使用说明
2013/05/10 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
python列表操作实例
2015/01/14 Python
Python脚本实现格式化css文件
2015/04/08 Python
python中函数默认值使用注意点详解
2016/06/01 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
Python实现生成随机日期字符串的方法示例
2017/12/25 Python
python使用udp实现聊天器功能
2018/12/10 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
python字符串中匹配数字的正则表达式
2019/07/03 Python
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
薇姿法国官网:Vichy法国
2021/01/28 全球购物
linux下进程间通信的方式
2014/12/23 面试题
小学毕业典礼演讲稿
2014/09/09 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers
Golang入门之计时器
2022/05/04 Golang