原标题:在深度学习中喂饱GPU

新智元推荐

来源:知乎专栏

作者:风车车

【新智元导读】深度学习模型训练是不是大力出奇迹,显卡越多越好?非也,没有512张显卡,也可以通过一些小技巧优化模型训练。本文作者分析了他的实践经验。

前段时间训练了不少模型,发现并不是大力出奇迹,显卡越多越好,有时候 1 张 v100 和 2 张 v100 可能没有什么区别,后来发现瓶颈在其他地方,写篇文章来总结一下自己用过的一些小 trick,最后的效果就是在 cifar 上面跑 vgg 的时间从一天缩到了一个小时,imagenet 上跑 mobilenet 模型只需要 2 分钟每个 epoch。(文章末尾有代码啦)

先说下跑 cifar 的时候,如果只是用 torchvision 的 dataloader (用最常见的 padding/crop/flip 做数据增强) 会很慢,大概速度是下面这种,600 个 epoch 差不多要一天多才能跑完,并且速度时快时慢很不稳定。

我最初以为是 IO 的原因,于是挂载了一块内存盘,改了一下路径接着用 torchvision 的 dataloader 来跑,速度基本没啥变化。。。

然后打开资源使用率看了下发现 cpu 使用率几乎已经满了(只能申请 2cpu 和一张 v100...),但是 gpu 的使用率非常低,这基本可以确定瓶颈是在 cpu 的处理速度上了。

后来查了一些资料发现 nvidia 有一个库叫 dali 可以用 gpu 来做图像的前处理,从输入,解码到 transform 的一整套 pipeline,看了下常见的操作比如 pad/crop 之类的还挺全的,并且支持 pytorch/caffe/mxnet 等各种框架。

可惜在官方文档中没找到 cifar 的 pipeline,于是自己照着 imagenet 的版本写了个,最初踩了一些坑(为了省事找了个 cifar 的 jpeg 版本来解码,发现精度掉得很多还找不到原因,还得从 cifar 的二进制文件来读取),最后总归是达到了同样的精度,再来看一看速度和资源使用率,总时间直接从一天缩短为一小时,并且 gpu 使用率高了很多。

再说下 imagenet 的训练加速,最初也是把整个数据集拷到了挂载的内存盘里面(160g 大概够用了,从拷贝到解压完成大概 10 分钟不到),发现同样用 torchvision 的 dataloader 训练很不稳定,于是直接照搬了 dali 官方的 dataloader 过来,速度也是同样起飞 hhhh(找不到当时训练的图片了),然后再配合 apex 的混合精度和分布式训练,申请 4 块 v100,gpu 使用率可以稳定在 95 以上,8 块 v100 可以稳定在 90 以上,最后直接上到 16 张 v100 和 32cpu,大概也能稳定在 85 左右(看资源使用率发现 cpu 到顶了,不然估计 gpu 也能到 95 以上),16 块 v100 在 ImageNet 上跑 mobilenet 只需要 2 分钟每个 epoch。

写的 dataloader 放到了 github 上,我测试的精度跟 torchvision 的版本差不多,不过速度上会比 torchvision 快很多,后面有空也会写一些其他常用 dataloader 的 dali 版本放上去。

https://github.com/tanglang96/DataLoaders_DALI

(本文经授权转载自知乎专栏,作者:风车车)返回搜狐,查看更多

责任编辑:

深度学习 训练吃显卡_在深度学习中喂饱GPU相关推荐

  1. 深度学习 训练吃显卡_深度学习小钢炮攒机心得:规避一些你看不到的坑

    ------------------- 已经2017年了,从90年代初的品牌机流行,90年代末的组装机流行,2000-2010桌面级逐渐被移动PC/Mac取代,一直到现在移动终端大行其道,攒机似乎已经 ...

  2. 深度学习 训练吃显卡_最新最全深度学习训练/GPU服务器硬件配置推荐2020

    人工智能随着核心算法.计算能力的迅速提升,以及海量联网数据的支持,在本世纪终于迎来了质的飞跃,人工智能将是未来应用最广泛的技术之一,在市场经济领域带来更多的机遇与机会,在医学领域可以大大加快诊断速度和 ...

  3. 深度学习 训练吃显卡_深度学习训练如何更快些?GPU性能的I/O优化你试过吗?...

    原本,有多少人已经准备好最新显卡,足够的硬盘空间,甚至请好年假,只为十天后去那个仰慕已久的赛博朋克世界里体验一番-- 结果他们又发了一张「黄色背景图」,告诉大家要跳票--再一次-- 好吧,你有了大量闲 ...

  4. 深度学习 训练吃显卡_学习深度学习,如何选购显卡?

    学习深度学习,显卡(GPU)可以说是比不可少的投资.本文试图探究哪个GPU才是学习入门性价比最高的? 为什么深度学习需要GPU? 我们先来比较一下CPU和GPU的不同,下图是一个简化的处理器内部结构图 ...

  5. 深度学习模型建立过程_所有深度学习都是统计模型的建立

    深度学习模型建立过程 Deep learning is often used to make predictions for data driven analysis. But what are th ...

  6. 深度学习 大数据集处理_大规模深度学习数据集管理系统

    深度学习 大数据集处理 Machine learning is data-driven. Most artificial intelligence (AI) practitioners would a ...

  7. 判断深度学习模型的稳定性_基于深度学习的三维模型检索算法研究

    三维模型检索github项目地址​github.com 大量的实验和比赛都证明了深度学习在图像检索中的效果很好,本文也将利用神经网络,研究刚体三维模型检索算法,并借助实验结果,来说明本文提出的网络模型 ...

  8. 强化学习q学习求最值_通过Q学习更深入地学习强化学习

    强化学习q学习求最值 by Thomas Simonini 通过托马斯·西蒙尼(Thomas Simonini) 通过Q学习更深入地学习强化学习 (Diving deeper into Reinfor ...

  9. python吃显卡还是内存不足_Pythorch中的GPU内存问题,GPUMemoryProblemsinPyTorch,显卡,爆炸,与,利用率,不足...

    如今研究人工智能,跑深度学习算法,显卡/GPU绝对是第一大门槛,所以不管您是1080Ti还是V100,如果不能发挥出GPU的最大能力,那它可能就是不是显卡而是块普通的砖头了吧. 显卡爆炸 显卡爆炸和内 ...

最新文章

  1. win10安装配置gcc编译环境
  2. 2、FreeRTOS任务相关API函数
  3. 20162316刘诚昊 《程序设计与数据结构》 第三周学习总结
  4. 时间序列错位还原之SQL实现案例详解
  5. git设置master权限_git怎么控制成员的权限?
  6. c语言链表错误,C语言创建链表错误之通过指针参数申请动态内存实例分析
  7. Postgresql使用coalesce实现类似oracle的NVL方法
  8. 快速导入十亿数据到hugegraph图数据库
  9. HTML5期末大作业:明星个人网站设计——权志龙(10页) 含设计报告HTML+CSS++JavaScript 个人网站模板下载 大学生简单DW个人网页作品代码 个人网页制作 学生个人网页...
  10. eclipse运行java快捷键_Eclipse快捷键【常用】
  11. 双系统——彻底删除ubuntu
  12. ztree去掉文字前面的文件夹图标
  13. vue配置代理服务器proxy
  14. RTX 3090 Ti 正式发布!30系列显卡的封顶之作!
  15. 2013, Samara SAU ACM ICPC Quarterfinal Qualification Contest C.Victor‘s Research
  16. PostgreSQL安装详细步骤(linux)
  17. java基于springboot房产备案管理系统
  18. 区块链应用开发快速入门
  19. Spring Security(15)——权限鉴定结构
  20. antdv select下拉菜单自由扩展—添加输入框的使用问题

热门文章

  1. FP、FN、TP、TN、精确率(Precision)、召回率(Recall)、准确率(Accuracy)评价指标详述
  2. nvme驱动_耗时3天2夜,搞定了macbook pro(2015款)更换nvme固态,经验分享一下,希望能帮到有需要的人!...
  3. 502 bad gateway php-fm,php+nginx 上传大文件 502 Bad Gateway
  4. mysql与mimic安装_MIMIC专题 | MIMIC数据库的安装
  5. java 生产配置文件管理_JAVA基础——使用配置文件
  6. python输出日志到文件_【已解决】Python中,如何让多个py文件的logging输出到同一个日志log文件...
  7. ubuntu安装百度网盘
  8. SpringMQ的使用
  9. filebeat相关registry文件内容解析
  10. ARM之MMU工作原理分析