关于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 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
python多线程threading.Lock锁用法实例
Nov 01 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
用Python获取摄像头并实时控制人脸的实现示例
Jul 11 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
Python 使用多属性来进行排序
Sep 01 Python
python序列类型种类详解
Feb 26 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
pandas apply多线程实现代码
Aug 17 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
解决IDEA翻译插件Translation报错更新TTK失败不能使用
Apr 24 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中常用数组处理方法实例分析
2008/08/30 PHP
php 动态多文件上传
2009/01/18 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
Node.js+ELK日志规范的实现
2019/05/23 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Django stark组件使用及原理详解
2019/08/22 Python
python Cartopy的基础使用详解
2020/11/01 Python
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
新闻学专业应届生求职信
2013/11/08 职场文书
人大代表选举标语
2014/10/07 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
汶川大地震感悟
2015/08/10 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
Nginx内网单机反向代理的实现
2021/11/07 Servers
工厂无线对讲系统解决方案
2022/02/18 无线电
Python matplotlib多个子图绘制整合
2022/04/13 Python