关于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实现将文本转换成语音的方法
May 28 Python
python实现rsa加密实例详解
Jul 19 Python
django 解决manage.py migrate无效的问题
May 27 Python
解决Django加载静态资源失败的问题
Jul 28 Python
对python中的装包与解包实例详解
Aug 24 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
python numpy数组中的复制知识解析
Feb 03 Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 Python
python初步实现word2vec操作
Jun 09 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
python实现最短路径的实例方法
Jul 19 Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 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
Email+URL的判断和自动转换函数
2006/10/09 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
php从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
JavaScript中的闭包
2016/02/24 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
wxPython中文教程入门实例
2014/06/09 Python
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
python 数据清洗之数据合并、转换、过滤、排序
2017/02/12 Python
python如何定义带参数的装饰器
2018/03/20 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
行政介绍信范文
2015/05/04 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
SpringBoot详解执行过程
2022/07/15 Java/Android