关于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编写网页爬虫脚本并实现APScheduler调度
Jul 28 Python
Python通过递归遍历出集合中所有元素的方法
Feb 25 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
Python实现的多线程同步与互斥锁功能示例
Nov 30 Python
Python 经典面试题 21 道【不可错过】
Sep 21 Python
Python函数定义及传参方式详解(4种)
Mar 18 Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
dpn网络的pytorch实现方式
Jan 14 Python
python集成开发环境配置(pycharm)
Feb 14 Python
python Tkinter的简单入门教程
Apr 11 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内存溢出优化代码详解
2021/02/26 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
验证javascript中Object和Function的关系的三段简单代码
2010/06/27 Javascript
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
初探Vue3.0 中的一大亮点Proxy的使用
2018/12/06 Javascript
Vue 实现简易多行滚动"弹幕"效果
2020/01/02 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
python制作企业邮箱的爆破脚本
2016/10/05 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
django实现前后台交互实例
2017/08/07 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
Python制作词云图代码实例
2019/09/09 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
电气自动化大学生求职信
2013/10/16 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
企业精神口号
2014/06/11 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
2015年大学生实习评语
2015/03/25 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python