关于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多线程用法实例详解
Jan 15 Python
编写Python脚本来获取Google搜索结果的示例
May 04 Python
Python 读写文件和file对象的方法(推荐)
Sep 12 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
Python选择网卡发包及接收数据包
Apr 04 Python
使用OpenCV实现仿射变换—平移功能
Aug 29 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
Feb 17 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 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实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
php实现文章评论系统
2019/02/18 PHP
onpropertypchange
2006/07/01 Javascript
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
Jquery选择子控件"大于号"和" "区别介绍及使用示例
2013/06/25 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
移动端界面的适配
2017/01/11 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
Python 文件操作实现代码
2009/10/07 Python
python图像常规操作
2017/11/11 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
Python使用python-docx读写word文档
2019/08/26 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
Jmeter调用Python脚本实现参数互相传递的实现
2021/01/22 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
大学生实习期自我评价范文
2013/10/03 职场文书
节约粮食标语
2014/06/18 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
要账委托书范本
2014/09/15 职场文书
机动车登记业务委托书
2014/10/08 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
老乡会致辞
2015/07/28 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python
Springboot中如何自动转JSON输出
2022/06/16 Java/Android