0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

实践经验:在深度学习中喂饱GPU

DPVg_AI_era 来源:lq 2019-09-13 17:07 次阅读

深度学习模型训练是不是大力出奇迹,显卡越多越好?非也,没有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 版本放上去。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4392

    浏览量

    126520
  • 数据集
    +关注

    关注

    4

    文章

    1176

    浏览量

    24315
  • 深度学习
    +关注

    关注

    73

    文章

    5218

    浏览量

    119850

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

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA深度学习应用或将取代GPU

    硬件公司供货的不断增加,GPU 深度学习的市场需求还催生了大量公共云服务,这些服务为深度
    发表于 03-21 15:19

    讯维集中电源控制器:案例研究与实践经验分享

    集中电源控制器在实践中的应用非常广泛,以下是一些案例研究与实践经验分享: 数据中心应用案例:在数据中心中,集中电源控制器可以实现对服务器、网络设备和存储设备等关键基础设施的电源集中管理和监控。通过
    的头像 发表于 01-30 14:59 166次阅读
    讯维集中电源控制器:案例研究与<b class='flag-5'>实践经验</b>分享

    K8S落地实践经验分享

    k8s 即 Kubernetes,是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理。
    的头像 发表于 01-02 11:45 330次阅读
    K8S落地<b class='flag-5'>实践经验</b>分享

    GPU深度学习中的应用与优势

    人工智能的飞速发展,深度学习作为其重要分支,正在推动着诸多领域的创新。在这个过程中,GPU扮演着不可或缺的角色。就像超级英雄电影中的主角一样,GPU
    的头像 发表于 12-06 08:27 681次阅读
    <b class='flag-5'>GPU</b>在<b class='flag-5'>深度</b><b class='flag-5'>学习</b>中的应用与优势

    GPU的张量核心: 深度学习的秘密武器

    GPU最初是为图形渲染而设计的,但是由于其卓越的并行计算能力,它们很快被引入深度学习中。深度学习的迅速发展离不开计算机图形处理单元(
    的头像 发表于 09-26 08:29 503次阅读
    <b class='flag-5'>GPU</b>的张量核心: <b class='flag-5'>深度</b><b class='flag-5'>学习</b>的秘密武器

    深度学习医学图像分割与病变识别的应用实战

    来源:易百纳技术社区 基于深度学习的医学图像分割与病变识别随着人工智能技术的不断发展,其医疗领域的应用越来越受到关注。其中,基于深度学习
    发表于 09-04 11:11

    深度学习框架和深度学习算法教程

    深度学习框架和深度学习算法教程 深度学习是机器学习
    的头像 发表于 08-17 16:11 693次阅读

    深度学习框架是什么?深度学习框架有哪些?

    深度学习框架是什么?深度学习框架有哪些?  深度学习框架是一种软件工具,它可以帮助开发者轻松快速
    的头像 发表于 08-17 16:03 1686次阅读

    深度学习框架pytorch入门与实践

    深度学习框架pytorch入门与实践 深度学习是机器学习中的一个分支,它使用多层神经网络对大量数
    的头像 发表于 08-17 16:03 1179次阅读

    什么是深度学习算法?深度学习算法的应用

    什么是深度学习算法?深度学习算法的应用 深度学习算法被认为是人工智能的核心,它是一种模仿人类大脑
    的头像 发表于 08-17 16:03 1428次阅读

    深度学习算法简介 深度学习算法是什么 深度学习算法有哪些

    深度学习算法简介 深度学习算法是什么?深度学习算法有哪些?  作为一种现代化、前沿化的技术,
    的头像 发表于 08-17 16:02 6590次阅读

    使用Koordinator支持异构资源管理和任务调度场景的实践经验

    Koordinator 是阿里云基于过去我们建设的统一调度系统中积累的技术和实践经验,对外开源了新一代的调度系统。
    的头像 发表于 08-15 10:09 439次阅读
    使用Koordinator支持异构资源管理和任务调度场景的<b class='flag-5'>实践经验</b>

    深度学习如何挑选GPU

    NVIDIA的标准库使在CUDA中建立第一个深度学习库变得非常容易。早期的优势加上NVIDIA强大的社区支持意味着如果使用NVIDIA GPU,则在出现问题时可以轻松得到支持。
    发表于 07-12 11:49 420次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>如何挑选<b class='flag-5'>GPU</b>?

    GPU引领的深度学习

    早期的机器学习以搜索为基础,主要依靠进行过一定优化的暴力方法。但是随着机器学习逐渐成熟,它开始专注于加速技术已经很成熟的统计方法和优化问题。同时深度学习的问世更是带来原本可能无法实现的
    的头像 发表于 05-09 09:58 561次阅读

    深度学习中的图像分割

    深度学习可以学习视觉输入的模式,以预测组成图像的对象类。用于图像处理的主要深度学习架构是卷积神经网络(CNN),或者是特定的CNN框架,如A
    的头像 发表于 05-05 11:35 814次阅读