1.       深度学习

深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。深度学习典型应用为图像识别和语音识别。(由于本人不是深度学习专业人士,对深度学习理论知识不多介绍,说多了就班门弄斧了,后面主要介绍下这些深度学习算法如何进行并行化设计和优化)

2.       CPU+GPU异构协同计算简介

近年来,计算机图形处理器(GPU,GraphicsProcess Unit)正在以大大超过摩尔定律的速度高速发展(大约每隔半年 GPU 的性能增加一倍),远远超过了CPU 的发展速度。

CPU+GPU异构协同计算模式(图1),利用CPU进行复杂逻辑和事务处理等串行计算,利用 GPU 完成大规模并行计算,即可以各尽其能,充分发挥计算系统的处理能力。

图1 CPU+GPU异构体系结构

目前,主流的GPU具有强大的计算能力和内存带宽,如图2所示,无论性能还是内存带宽,均远大于同代的CPU。对于GPU, Gflop/$和Gflops/w均高于CPU。

图2 GPU计算能力

3.       深度学习中的CPU+GPU集群架构

CPU+GPU集群工作模式(图3),每个节点内采用CPU+GPU异构模式,并且每个节点可以配置多块GPU卡。节点间采用高速InfiniBand网络互连,速度可以达到双向56Gb/s,实测双向5GB/s。后端采用并行文件系统。采用数据划分、任务划分的方式对应用进行并行化,适用于大规模数据并行计算。

图3 CPU+GPU集群架构

4.       利用GPU加速深度学习算法

4.1.       单GPU并行

图4 单GPU计算流程

针对每次训练数据,模型内计算通过多次GPU 内核的调用完成计算。权重W值一直存在GPU内存中,直到所有训练数据计算完毕之后回传到系统内存中。Data为图像或语音数据。

4.2.       多GPU卡并行

多GPU并行计算时,各GPU有自己独立的内存,卡之间的并行属于分布式计算模式。针对深度学习算法,采用多GPU卡计算可以采用两种并行方法:数据并行和模型并行。

4.2.1.       数据并行
       数据并行是指不同的GPU计算不同的训练数据,即把训练数据划分给不同的GPU进行分别计算,由于训练是逐步训练的,后一个训练数据的计算需要前一个训练数据更新的W,数据并行改变了这个计算顺序,多GPU计算需要进行W的互相通信,满足训练的特点,使训练可以收敛。

数据并行如图5所示,多GPU训练不同的数据,每训练一次需要同步W,使得后面的训练始终为最新的W。

图5 数据并行

数据并行的特点:

1)        优点

a)        实现比较容易,也比较容易扩展

b)        只需要进行W的通信,模型内的数据不需要通信

2)        缺点

a)        当模型较大时,GPU内存无法满足存储要求,无法完成计算

根据多GPU卡之间的W通信,下面介绍两种通信方法:主从模式和令牌环模式。

1)        主从模式

主从模式:选择一个进程或线程作为主进程或线程,各个GPU把每次训练得到的ΔW发给主进程或线程,主进程或线程进行W更新,然后再发送给GPU,GPU再进行下一个数据的训练。如图6所示。

图6 主从模式

2)        令牌环模式

令牌环模式:每个GPU把自己训练得到的ΔW更新到W上,并且发送到下一个GPU,保证令牌环上的W始终为最新的W。如图7所示。

图7 令牌环模式

两种模式对比如表1:

表1 主从模式和令牌环模式对比

模式

优点

缺点

主从模式

收敛速度更快

GPU计算需要等待,影响GPU计算;主进程或线程压力较大

令牌环模式

GPU计算不需要等待通信,性能更好

通信速度影响收敛的速度

4.2.2.       模型并行
        模型并行是指多个GPU同时计算同一个训练数据,多个GPU对模型内的数据进行划分,如图8所示。Kernel计算和通信流程如图9所示,在一次训练数据多层计算过程中,每个GPU内核计算之后需要互相交换数据才能进行下一次的计算。

图8 模型并行

图9 模型并行:多GPU计算内核和通信示意图

模型并行特点:

1)        优点

a)        可以处理大模型的情况

2)        缺点

a)        需要更频繁的通信,增加通信压力

b)        实现难度较大

4.3.       GPU集群并行
          GPU集群并行模式即为多GPU并行中各种并行模式的扩展,如表2所示。节点间采用InfiniBand通信,节点间的GPU通过RMDA通信,节点内多GPU之间采用P2P通信。

4.4.       性能分享

4.4.1.       基于GPU集群的Caffe并行加速

图10 Caffe性能

8节点GPU服务器,2 K20mGPU/节点,56Gb/s InfiniBand网络,Lustre并行文件系统

4.4.2.       基于GPU集群的DNN并行加速

图11 DNN测试性能

4节点GPU服务器,4 K20mGPU/节点,56Gb/s InfiniBand网络

5.       CPU+FPGA协同计算加速线上计算

相对于训练计算,线上识别的计算是小而众多的任务计算,每次请求的计算比较小,但请求的任务数十分庞大,GPU计算虽然获得很好的性能,但功耗仍然是个严峻的问题。

目前主流的FPGA卡功耗只有主流GPU的十分之一,性能相差2-3倍,FPGA相对于GPU具有更高的GFlops/W。

利用FPGA解决线上识别计算可以采用分布式+FPGA计算的模式,如图12所示,上层可以采用Hadoop或Spark调度,底层利用FPGA进行计算。

图12 分布式计算+FPGA计算

目前,FPGA已开始支持高级语言,如AlteraFPGA支持OpenCL,Xilinx FPGA支持HLS,这对程序员利用FPGA开发减低了难度。这些新平台的支持还有很多问题,也许后面会支持的越来越好。

备注:由于对深度学习算法了解比较肤浅,以上内容难免无误,请大家理解并提出修改意见。

高性能加速深度学习算法相关推荐

  1. ONNX 浅析:如何加速深度学习算法工程化?

    AlphaGo击败围棋世界冠军李世石以来,关于人工智能和深度学习的研究呈现井喷之势. 各种新的算法和网络模型层出不穷,令人眼花缭乱.与之相随的,深度学习的训练和推理框架也在不断的推陈出新,比较著名的有 ...

  2. win10+anaconda+cuda配置dlib,使用GPU对dlib的深度学习算法进行加速(以人脸检测为例)...

    win10+anaconda+cuda配置dlib,使用GPU对dlib的深度学习算法进行加速(以人脸检测为例) 转载于:https://www.cnblogs.com/zhehan54/p/8540 ...

  3. 基于FPGA的深度学习算法加速

    学习总结--基于FPGA的深度学习算法加速 1.深度学习算法加速的方法 2.为什么用FPGA来加速YOLOV2 3.FPGA简介 4.PYNQ框架与HLS加速理论 5.实验结果 1.深度学习算法加速的 ...

  4. 人工智能:深度学习算法及应用——简单理解CNN卷积神经网络并python实现(带源码)

    深度学习算法及应用 一. 实验目的 二. 实验要求 三. 实验的硬件.软件平台 四. 实验原理 1.1. 深度学习概述 1.2. 深度学习的常见结构 1.3. 卷积神经网络(CNN) **卷积** * ...

  5. 如何使用TensorRT加速深度学习推理

    文章目录 1.TensorRT 简介 2.一个简单的TensorRT示例 3.简要代码演练 3.1.批量输入 4.配置文件 5.优化您的应用 6.使用混合精度计算 7.设置最大工作区大小 8.重用Te ...

  6. PaddleX 结合 OpenVINO 工具套件 ,优化深度学习算法CPU部署性能

    引言 当今世界,深度学习技术正得以广泛应用,为工业质检.安防巡检.金融.医疗.能源等各行各业降本增效.然而,深度学习算法往往需要较高性能的计算芯片作为支撑,以满足大计算量.高推理速度等产业需求,这为众 ...

  7. 深度学习算法移动端部署设备--NVIDIA英伟达开发套件

    深度学习算法移动端部署设备--NVIDIA英伟达开发套件 简介 NVIDIA Jetson AGX Xavier CSI Camera USB or CSI 简介 以下产品分模块(module)和开发 ...

  8. 腾讯云FPGA的深度学习算法

    由腾讯云基础产品中心.腾讯架构平台部组成的腾讯云FPGA联合团队,在这里介绍国内首款FPGA云服务器的工程实现深度学习算法(AlexNet),讨论深度学习算法FPGA硬件加速平台的架构. 背景是这样的 ...

  9. 一文梳理深度学习算法演进

    来源:https://zhuanlan.zhihu.com/p/464515049 作者:Peter潘欣 编辑:蘑菇先生 学习记涉及语音.图像.nlp.强化学习.隐私保护.艺术创作.目标检测.医疗.压 ...

最新文章

  1. Vijos P1131 最小公倍数和最大公约数问题【暴力】
  2. 高斯混合模型GMM理论和Python实现
  3. machine learning (2)-linear regression with one variable
  4. Xamarin Studio支持TypeScript开发
  5. ksnapshot运行look up error undefined symbol错误解决方案
  6. 基于VMware Workstation创建虚拟机,以Ubuntu16.04为例
  7. 微博粉丝平台开发全攻略
  8. 可视化动画:数据结构和算法
  9. ALM/QC11.0在win8/IE11下无法浏览
  10. [转]治近视的秘方!1000度近视降到只有200度
  11. std::numeric_limits使用
  12. 几款远程登录软件的对比
  13. 扔掉代码,程序员月薪达到了10k+
  14. 在IE8中使用建行企业网银的解决方法
  15. 大魔王程序员生成记#06.1#C语言习题
  16. qpython3:安卓上运行Python
  17. 【渝粤教育】广东开放大学 搜索引擎优化SEO 形成性考核
  18. SCSS 使用@each 方法循环遍历数组颜色并赋值
  19. 制造业ERP系统是什么?制造业ERP软件系统有哪些功能
  20. wfp(微软)对付flash

热门文章

  1. Qt Quick编程(1)——QML的核心部分ECMAScript
  2. 改造二叉树 (长乐一中模拟赛day2T1)
  3. Android自动化测试01-环境安装连接问题及解决
  4. select 的操作
  5. php 脚本会超时吗,PHP脚本执行超时的解决办法
  6. 每天一个linux命令cd,Linux指令每日背诵(第一天)
  7. 网站服务器修改内容,网站被收录后内容还可以修改吗?
  8. window 服务(三)
  9. log4j配置以及logback配置
  10. 清理操作系统垃圾批处理文件