随着AI的广泛应用,深度学习已成为当前AI研究和运用的主流方式。面对海量数据的并行运算,AI对于算力的要求不断提升,对硬件的运算速度及功耗提出了更高的要求。

目前,除通用CPU外,作为硬件加速的GPU、NPU、FPGA等一些芯片处理器在深度学习的不同应用中发挥着各自的优势,但孰优孰劣?

以人脸识别为例,其处理基本流程及对应功能模块所需的算力分布如下:

为什么会有这样的应用区分?

意义在哪里?

想要知道其中的答案,需要我们先从CPU、GPU、NPU、FPGA它们各自的原理、架构及性能特点来了解。

首先,我们先来了解一下通用CPU的架构。

CPU

CPU(Central Processing Unit)中央处理器,是一块超大规模的集成电路,主要逻辑架构包括控制单元Control,运算单元ALU和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。

简单说,

就是计算单元、控制单元和存储单元。

架构图如下所示:


CPU遵循的是冯诺依曼架构,其核心是存储程序、顺序执行。CPU的架构中需要大量的空间去放置存储单元(Cache)和控制单元(Control),相比之下计算单元(ALU)只占据了很小的一部分,所以它在大规模并行计算能力上极受限制,而更擅长于逻辑控制。

CPU无法做到大量矩阵数据并行计算的能力,但GPU可以。

GPU

GPU(Graphics Processing Unit),即图形处理器,是一种由大量运算单元组成的大规模并行计算架构,专为同时处理多重任务而设计。

为什么GPU可以做到并行计算的能力?GPU中也包含基本的计算单元、控制单元和存储单元,但GPU的架构与CPU有所不同,如下图所示:

与CPU相比,CPU芯片空间的不到20%是ALU,而GPU芯片空间的80%以上是ALU。即GPU拥有更多的ALU用于数据并行处理。

以Darknet构建的神经网络模型AlexNet、VGG-16及Restnet152在GPU Titan X, CPU Intel i7-4790K (4 GHz) 进行ImageNet分类任务预测的结果:

备注:以上数据源自https://pjreddie.com/darknet/imagenet/#reference

由此可见,GPU处理神经网络数据远远高效于CPU。

总结GPU具有如下特点:

1 、多线程,提供了多核并行计算的基础结构,且核心数非常多,可以支撑大量数据的并行计算。

2、拥有更高的访存速度。

3、更高的浮点运算能力。

因此,GPU比CPU更适合深度学习中的大量训练数据、大量矩阵、卷积运算。

GPU虽然在并行计算能力上尽显优势,但并不能单独工作,需要CPU的协同处理,对于神经网络模型的构建和数据流的传递还是在CPU上进行。同时存在功耗高,体积大的问题。

性能越高的GPU体积越大,功耗越高,价格也昂贵,对于一些小型设备、移动设备来说将无法使用。

因此,一种体积小、功耗低、计算性能高、计算效率高的专用芯片NPU诞生了。

NPU

NPU (Neural Networks Process Units)神经网络处理单元。NPU工作原理是在电路层模拟人类神经元和突触,并且用深度学习指令集直接处理大规模的神经元和突触,一条指令完成一组神经元的处理。相比于CPU和GPU,NPU通过突触权重实现存储和计算一体化,从而提高运行效率。

NPU是模仿生物神经网络而构建的,CPU、GPU处理器需要用数千条指令完成的神经元处理,NPU只要一条或几条就能完成,因此在深度学习的处理效率方面优势明显。

实验结果显示,同等功耗下NPU 的性能是 GPU 的 118 倍。

与GPU一样,NPU同样需要CPU的协同处理才能完成特定的任务。下面,我们可以看一下GPU和NPU是如何与CPU协同工作的。

GPU的加速

GPU当前只是单纯的并行矩阵的乘法和加法运算,对于神经网络模型的构建和数据流的传递还是在CPU上进行。

CPU加载权重数据,按照代码构建神经网络模型,将每层的矩阵运算通过CUDA或OpenCL等类库接口传送到GPU上实现并行计算,输出结果;CPU接着调度下层神经元组矩阵数据计算,直至神经网络输出层计算完成,得到最终结果。

CPU 与GPU的交互流程:

1 获取GPU信息,配置GPU id

2 加载神经元参数到GPU

3 GPU加速神经网络计算

4 接收GPU计算结果

NPU的加速

NPU与GPU加速不同,主要体现为每层神经元计算结果不用输出到主内存,而是按照神经网络的连接传递到下层神经元继续计算,因此其在运算性能和功耗上都有很大的提升。

CPU将编译好的神经网络模型文件和权重文件交由专用芯片加载,完成硬件编程。

CPU在整个运行过程中,主要是实现数据的加载和业务流程的控制,其交互流程为:

1 打开NPU专用芯片设备

2 传入模型文件,得到模型task

3 获取task的输入输出信息

4 拷贝输入数据到模型内存中

5 运行模型,得到输出数据

除NPU外,在功耗及计算能力上有一拼的还有FPGA。

FPGA

FPGA(Field-Programmable Gate Array)称为现场可编程门阵列,用户可以根据自身的需求进行重复编程。与 CPU、GPU 相比,具有性能高、功耗低、可硬件编程的特点。

FPGA基本原理是在芯片内集成大量的数字电路基本门电路以及存储器,而用户可以通过烧入FPGA 配置文件来定义这些门电路以及存储器之间的连线。这种烧入不是一次性的,可重复编写定义,重复配置。

FPGA的内部结构如下图所示:

FPGA的编程逻辑块(Programable Logic Blocks)中包含很多功能单元,由LUT(Look-up Table)、触发器组成。FPGA是直接通过这些门电路来实现用户的算法,没有通过指令系统的翻译,执行效率更高。

我们可以对比一下

CPU/GPU/NPU/FPGA各自的特点

各芯片架构特点总结

/ CPU /

70%晶体管用来构建Cache,还有一部分控制单元,计算单元少,适合逻辑控制运算。

/ GPU /

晶体管大部分构建计算单元,运算复杂度低,适合大规模并行计算。主要应用于大数据、后台服务器、图像处理。

/ NPU /

在电路层模拟神经元,通过突触权重实现存储和计算一体化,一条指令完成一组神经元的处理,提高运行效率。主要应用于通信领域、大数据、图像处理。

/ FPGA /

可编程逻辑,计算效率高,更接近底层IO,通过冗余晶体管和连线实现逻辑可编辑。本质上是无指令、无需共享内存,计算效率比CPU、GPU高。主要应用于智能手机、便携式移动设备、汽车。

CPU作为最通用的部分,协同其他处理器完成着不同的任务。GPU适合深度学习中后台服务器大量数据训练、矩阵卷积运算。NPU、FPGA在性能、面积、功耗等方面有较大优势,能更好的加速神经网络计算。而FPGA的特点在于开发使用硬件描述语言,开发门槛相对GPU、NPU高。

可以说,每种处理器都有它的优势和不足,在不同的应用场景中,需要根据需求权衡利弊,选择合适的芯片。

深度学习中,CPU、GPU、NPU、FPGA如何发挥优势?相关推荐

  1. 【翻译】为深度学习购买哪种GPU: 我在深度学习中使用GPU的经验和建议

    文章目录 概述 GPU是如何工作的? 对深度学习处理速度最重要的GPU规格 张量核心 没有张量核心的矩阵乘法 使用张量核心的矩阵乘法 带有张量核心和异步拷贝的矩阵乘法(RTX 30/RTX 40)和T ...

  2. 深度学习中的GPU与CUDA

    对应视频教程:https://www.bilibili.com/video/BV1S5411X7FY/ 文章目录 1. 显卡(GPU)与驱动 2. 显卡与CUDA 3. 如何查看自己的显卡 1. 显卡 ...

  3. 科普丨深度学习硬件(GPU、FPGA、ASIC、DSP)

    深度学习最近取得的成功势不可挡:从图像分类和语音识别到图片标注.理解视觉场景.视频概述.语言翻译.绘画,甚至是生成图像.语音.声音和音乐! 随着我们的家变得越来越智能,你会发现许多设备都会需要连续地使 ...

  4. 如何在Python深度学习中设置GPU卡号

    诸神缄默不语-个人CSDN博文目录 本文介绍在Python深度学习代码运行的过程中,如何设置GPU卡号(包括PyTorch和TensorFlow适用的写法),主要适用于单卡场景,以后可能会增加多卡场景 ...

  5. 深度学习中:使用GPU和CPU的区别

    深度学习框架:Tensorflow 显卡型号:GTX 1060 CPU型号:i5-8300H 深度学习:使用GPU和CPU的区别 前言 代码 结果 总结 前言   这几天在做深度学习,想看看为什么 G ...

  6. 深度学习中GPU的作用

    英伟达推出的"霸王条款":GeForce产品禁止用于深度学习. 英伟达的禁令 众所周知,英伟达是显卡界的老大,2017年英伟达的GPU芯片在全球市场的占有率为70%左右,无论是人工 ...

  7. 深度学习中GPU和显存分析

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自:机器学习AI算法工程 深度学习最吃机器,耗资源,在本文,我将 ...

  8. 科普帖:深度学习中GPU和显存分析

    深度学习最吃机器,耗资源,在本文,我将来科普一下在深度学习中: 何为"资源" 不同操作都耗费什么资源 如何充分的利用有限的资源 如何合理选择显卡 并纠正几个误区: 显存和GPU等价 ...

  9. 深度学习 训练吃显卡_在深度学习中喂饱GPU

    原标题:在深度学习中喂饱GPU 新智元推荐 来源:知乎专栏 作者:风车车 [新智元导读]深度学习模型训练是不是大力出奇迹,显卡越多越好?非也,没有512张显卡,也可以通过一些小技巧优化模型训练.本文作 ...

最新文章

  1. bean 属性设置默认值_activiti7源码分析之引擎初始化与Bean注入
  2. 21.Azure备份Azure上的虚拟机(下)
  3. angular中封装fancyBox(图片预览)
  4. simulink怎么生成vxworks的执行程序_从EPB模型谈谈Simulink代码生成
  5. Gartner磁盘阵列魔力象限:华为、昆腾、Infinidat势头迅猛
  6. php setjmp longjmp,我本来以为setjmp和longjmp的实现很复杂【附代码】
  7. web前端(滚动条样式)
  8. 【干货】常见的40个知识模型:学习力、思考力、创造力、共情力......
  9. 基于python的性能负载测试Locust-6-脚本编写之使用HTTP client
  10. php 修改html编码,PHP将HTML Charset编码弄乱了
  11. linux连接交换机软件,如何用超级终端连接交换机 - 全文
  12. wps表格宏被禁用如何解禁_怎么解除宏禁用_win7系统取消宏已被禁用提示的方法...
  13. 三国古城和108将地图已恢复
  14. 线性混合模型(Linear Mixed Models)与R语言 lmer() 函数
  15. iOS远程推送--APNs详解
  16. 计算机的工作原理(冯诺依曼体系)
  17. 考软件测试自学钢琴,新手学钢琴用什么app-自学钢琴比较好的软件推荐 - Iefans...
  18. ENFP型人格的特征分析(mbti性格测试)
  19. 计算机科学论文写作5-写硕士论文
  20. xml文件的注释展示

热门文章

  1. 大数据平台需注意哪些安全问题
  2. 互联网产品,如何作?
  3. 互联网产品经理和原型设计
  4. IDEA 14.1.3-import之前的scala项目报错:Exception in thread main java.lang.ClassNotFoundException: kmust.hj
  5. 华为如何拍火烧云_华为手机10大摄影模式最全操作指南!2分钟教你妙用拍大片!...
  6. A novel framework for detecting social bots with deep neural networks and active learning(SCI一区)
  7. 【原创】Selenium获取请求头、响应头
  8. Python画生日蛋糕
  9. 杨智凯推荐系统_2018年英特尔杯大学生电子设计竞赛嵌入式系统专题邀请赛评审结果.PDF...
  10. 个人网络安全学习路线规划(附视频教程)