GPU(Graphic Process Units , 图形处理器)的众核体系结构包含几千个流处理器 , 可将矢量运算并行化执行 , 大幅缩短计算时间 。随着NVIDIA、AMD等公司不断推进其GPU的大规模并行架构支持 , 面向通用计算的GPU(General-Purposed GPU, GPGPU)已成为加速可并行应用程序的重要手段 。得益于GPU众核(many-core)体系结构 , 程序在GPU系统上的运行速度相较于单核CPU往往提升几十倍乃至上千倍 。目前GPU已经发展到了较为成熟的阶段 , 受益最大的是科学计算领域 , 典型的成功案例包括多体问题(N-Body Problem)、蛋白质分子建模、医学成像分析、金融计算、密码计算等 。
利用GPU来训练深度神经网络 , 可以充分发挥其数以千计计算核心的高效并行计算能力 , 在使用海量训练数据的场景下 , 所耗费的时间大幅缩短 , 占用的服务器也更少 。如果对针对适当的深度神经网络进行合理优化 , 一块GPU卡可相当于数十甚至上百台CPU服务器的计算能力 , 因此GPU已经成为业界在深度学习模型训练方面的首选解决方案 。
6.2数据并行
数据并行是指对训练数据做切分 , 同时采用多个模型实例 , 对多个分片的数据并行训练 。
要完成数据并行需要做参数交换 , 通常由一个参数服务器(Parameter Server)来帮助完成 。在训练的过程中 , 多个训练过程相互独立 , 训练的结果 , 即模型的变化量ΔW需要汇报给参数服务器 , 由参数服务器负责更新为最新的模型W’ = W – η ? ΔW , 然后再将最新的模型W’分发给训练程序 , 以便从新的起点开始训练 。
数据并行有同步模式和异步模式之分 。同步模式中 , 所有训练程序同时训练一个批次的训练数据 , 完成后经过同步 , 再同时交换参数 。参数交换完成后所有的训练程序就有了共同的新模型作为起点 , 再训练下一个批次 。而异步模式中 , 训练程序完成一个批次的训练数据 , 立即和参数服务器交换参数 , 不考虑其他训练程序的状态 。异步模式中一个训练程序的最新结果不会立刻体现在其他训练程序中 , 直到他们进行下次参数交换 。
参数服务器只是一个逻辑上的概念 , 不一定部署为独立的一台服务器 。有时候它会附属在某一个训练程序上 , 有时也会将参数服务器按照模型划分为不同的分片 , 分别部署 。
6.3模型并行
模型并行将模型拆分成几个分片 , 由几个训练单元分别持有 , 共同协作完成训练 。当一个神经元的输入来自另一个训练单元上的神经元的输出时 , 产生通信开销 。
多数情况下 , 模型并行带来的通信开销和同步消耗超过数据并行 , 因此加速比也不及数据并行 。但对于单机内存无法容纳的大模型来说 , 模型并行是一个很好的选择 。令人遗憾的是 , 数据并行和模型并行都不能无限扩展 。数据并行的训练程序太多时 , 不得不减小学习率 , 以保证训练过程的平稳;模型并行的分片太多时 , 神经元输出值的交换量会急剧增加 , 效率大幅下降 。因此 , 同时进行模型并行和数据并行也是一种常见的方案 。如下图所示 , 4个GPU分为两组 , GPU0 , 1为一组模型并行 , GPU2 , 3为另一组 , 每组模型并行在计算过程中交换输出值和残差 。两组GPU之间形成数据并行 , Mini-batch结束后交换模型权重 , 考虑到模型的蓝色部分由GPU0和GPU2持有 , 而黄色部分由GPU1和GPU3持有 , 因此只有同色的GPU之间需要交换权重 。
- 坐月子期间不喝白开水,用红豆水,米酒水来代替,这种做法对吗
- 维生素B族吃了对肝脏有影响吗
- 美国为何总是对印度“高抬贵手”,不怕印度超越美国吗
- 国家对全民健康的重视 全民预防保健与全民健康深度融合
- 男子|又见路怒症!发生口角后男子驾车多次逼停摩托致对方受伤
- 男士们对老婆去女子美容院找男技师按摩有什么看法
- 经常吃蛋炒饭,对身体有影响吗
- 入住了才知道踢脚线选错了? 选对踢脚线,装修效果才高级
- 现在有些人对蛋白粉的偏见很大,说蛋白粉喝了对肾不好,为什么
- 红糖水,直接灌根对西红柿有作用吗
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
