在训练神经网络的时候,有时候数据的读取处理所占用的时间比较长,像数据量非常大的情况,或者是3D的数据预处理比较耗内存的情况。此时我们希望并行化,即数据处理与训练同时进行。
参考:https://tensorpack.readthedocs.io/tutorial/extend/input-source.html


图片上为两种数据处理的方式:并行化和串行化。

  • 并行化:在处理数据的时候并进行训练,当gpu空闲的时候,已经训练好的数据能够及时的喂到显存中。
  • 串行化:必须对数据进行处理之后才可以送到gpu,gpu才可以开始工作,在数据处理完之前,gpu一直处于空闲状态,大大的浪费了资源。

在网络的训练过程中,必须要明确一点:在训练的同时准备数据!!
有三个原因:

  • 数据准备通常会消耗大量的时间(取决于实际问题)。
  • 数据准备通常使用与训练时使用完全不同的资源(参见上面的图)——一起做并不会降低整体的速度。事实上,可以在准备过程中进一步并行化为不同的阶段,因为它们也使用不同的资源,即不论并行还是串行使用的都是不同的资源。
  • 数据准备通常不依赖于前一个训练步骤的结果。

让我们做一些简单的计算:根据tensorflow/benchmarks,4个P100 gpu可以以每秒852张图像的速度训练ResNet50,这些图像的大小为85222422434bytes = 489MB。假设您有5GB/s memcpy带宽(如果您运行单线程复制),简单地复制一次数据就需要0.1秒——这会使您的训练速度降低10%。考虑一下在预处理过程中还要复制多少份。

神经网络训练输入数据并行化相关推荐

  1. 神经网络训练输入数据为什么需要归一化呢

    **我们知道在神经网络训练开始前,都要对输入数据做一个归一化处理,那么具体为什么需要归一化呢?归一化后有什么好处呢?原因在于: 1.神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分 ...

  2. 学界 | 数据并行化对神经网络训练有何影响?谷歌大脑进行了实证研究

    选自arXiv 作者:Christopher J. Shallue 等 机器之心编译 参与:路.张倩 近期的硬件发展实现了前所未有的数据并行化,从而加速神经网络训练.利用下一代加速器的最简单方法是增加 ...

  3. 亚马逊马超:如何使用DGL进行大规模图神经网络训练?

    演讲嘉宾 | 马超(亚马逊应用科学家) 整理 | 刘静  出品 | AI科技大本营(ID:rgznai100) 与传统基于张量(Tensor)的神经网络相比,图神经网络将图 (Graph) 作为输入, ...

  4. Batch Size对神经网络训练的影响

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Daryl Chang 来源丨CV技术指南 编辑丨极市平台 导 ...

  5. 技术新进展!谷歌AI部门宣布发现新技术以加速AI神经网络训练

    https://t.qianzhan.com/caijing/detail/190716-73349ac9.html 谷歌的张量处理器(TPU)和英特尔的Nervana神经网络处理器等人工智能加速器硬 ...

  6. 神经网络训练细节之batch normalization

    在对神经网络进行训练的时候,经常涉及到的一个概念就是batch normalization,那么究竟什么是batch normalization,以及为什么在训练的时候要加入batch normali ...

  7. 神经网络训练中的Tricks之高效BP(反向传播算法)

    神经网络训练中的Tricks之高效BP(反向传播算法) zouxy09@qq.com http://blog.csdn.net/zouxy09 Tricks!这是一个让人听了充满神秘和好奇的词.对于我 ...

  8. python自训练神经网络_tensorflow学习笔记之简单的神经网络训练和测试

    本文实例为大家分享了用简单的神经网络来训练和测试的具体代码,供大家参考,具体内容如下 刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第 ...

  9. 人工神经网络的训练步骤,神经网络训练过程图解

    如何通过人工神经网络实现图像识别 . 人工神经网络(ArtificialNeuralNetworks)(简称ANN)系统从20世纪40年代末诞生至今仅短短半个多世纪,但由于他具有信息的分布存储.并行处 ...

  10. 神经网络常用的训练方式,神经网络训练过程详解

    神经网络参数如何确定 神经网络各个网络参数设定原则:①.网络节点  网络输入层神经元节点数就是系统的特征因子(自变量)个数,输出层神经元节点数就是系统目标个数.隐层节点选按经验选取,一般设为输入层节点 ...

最新文章

  1. 怎么查看jre版本_javac和java版本不一致问题
  2. python爬取文章保存_爬取博主所有文章并保存到本地(.txt版)--python3.6
  3. oracle重载操作符的例子
  4. Fedora 31 将被“砍掉”或推迟更久发布,但和 IBM 无关
  5. 初识ajaxpro以及使用
  6. 工作200:视频上传和图片编辑功能
  7. 【稀疏向量技术是什么?】差分隐私系统学习记录(六)
  8. NodeJS 正则路由匹配
  9. 95-240-052-原理-State-MemoryStateBackend
  10. 分层精品优秀电商海报模版|无需数量多,胜在精
  11. linux错误—3.解决设置普通用户的sudo权限中碰到的问题:sudo: /etc/sudoers is world writable...
  12. 两年以后重读了一篇文章,写了点东西。
  13. 广度优先搜索 解决九宫格问题
  14. 大一学科不挂科 速冲方法推荐(高数上+高数下+线代+大物)
  15. linux C++ socket编程 实例
  16. Unity FPS 计算
  17. 共享经济开始崩溃,区块链能否再续共享经济神话?
  18. 鬼故事之中学异事(01)
  19. 安卓期末大作业——琴社商店,sqlite增删改查
  20. nginx 启动、重启、配置重新加载

热门文章

  1. 简单的 XML、DTD 文件
  2. [导入]Asp.Net MVC实践 - 探索UrlRouting并分析UrlHelper (基于ASP.NET MVC Preview 3)
  3. Xml 学习 ---引自MSDN CHINA
  4. 配置ArcGIS Server使用Windows AD Windows集成身份认证
  5. python获取当前路径
  6. 继承(父类为虚方法以及子类的重写)
  7. 【bzoj 2461】[BeiJing2011]符环(高维dp+记忆化搜索)
  8. Extjs中引入JSP页面
  9. 组合数学引论部分习题答案
  10. 大文件复制时块的取值问题