关于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实现代码统计工具(终极篇)
Jul 04 Python
Python正则表达式完全指南
May 25 Python
python email smtplib模块发送邮件代码实例
Apr 26 Python
Python登录系统界面实现详解
Jun 25 Python
python 随机生成10位数密码的实现代码
Jun 27 Python
Flask框架搭建虚拟环境的步骤分析
Dec 21 Python
Python timeit模块的使用实践
Jan 13 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
在Python中实现字典反转案例
Dec 05 Python
python文件路径操作方法总结
Dec 21 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 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 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
php post换行的方法
2020/02/03 PHP
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
jQuery深拷贝Json对象简单示例
2016/07/06 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
使用JS来动态操作css的几种方法
2019/12/18 Javascript
编写简单的Python程序来判断文本的语种
2015/04/07 Python
Python3读取zip文件信息的方法
2015/05/22 Python
Python OS模块常用函数说明
2015/05/23 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
大专生自我鉴定范文
2013/10/01 职场文书
廉政教育心得体会
2014/01/01 职场文书
董事长秘书职责
2014/01/31 职场文书
贷款承诺书范文
2014/05/19 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
社区敬老月活动总结
2015/05/07 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
反邪教观后感
2015/06/11 职场文书
无工作证明怎么写
2015/06/15 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
Django项目如何正确配置日志(logging)
2021/04/29 Python
Redis 哨兵集群的实现
2021/06/18 Redis