关于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之有容乃大的list(2)
Sep 15 Python
python和shell实现的校验IP地址合法性脚本分享
Oct 23 Python
python实现二维码扫码自动登录淘宝
Dec 27 Python
Python计时相关操作详解【time,datetime】
May 26 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
带你认识Django
Jan 15 Python
详解python项目实战:模拟登陆CSDN
Apr 04 Python
Python3.5字符串常用操作实例详解
May 01 Python
Python input函数使用实例解析
Nov 22 Python
Python中内建模块collections如何使用
May 27 Python
一个入门级python爬虫教程详解
Jan 27 Python
python lambda 表达式形式分析
Apr 03 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
php代码书写习惯优化小结
2013/06/20 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
PHP实现的简单缓存类
2015/07/29 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
nodejs批量修改文件编码格式
2015/01/22 NodeJs
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
2016/08/15 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
python爬取51job中hr的邮箱
2016/05/14 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
Python中str.format()详解
2017/03/12 Python
Python实现进程同步和通信的方法
2018/01/02 Python
python批量修改文件编码格式的方法
2018/05/31 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
写出一个方法实现冒泡排序
2016/07/08 面试题
生产部经理岗位职责
2013/12/16 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
新学期标语
2014/06/30 职场文书
2014年医院工作总结
2014/11/20 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL
MySQL数据库查询之多表查询总结
2022/08/05 MySQL