随着人工智能的广泛应用,深度学习已成为人工智能研究和应用的主流。面对大量数据的并行计算,AI对计算性能的要求不断提高,对计算速度和硬件功耗的要求也在不断提高。
除了目前的通用CPU之外,硬件加速GPU,NPU和FPGA等一些芯片处理器在各种深度学习应用中各有优势,但它们更糟还是更糟?
以面部识别为例,处理基本流程及其功能模块所需的处理能力为:
如何在深度学习中使用CPU,GPU,NPU和FPGA
为什么有这样的应用区别?
意思在哪里?
要了解答案,您需要了解每个CPU,GPU,NPU和FPGA的原理,体系结构和性能特征。
首先,让我们看一下通用CPU的架构。
CPU
中央处理单元(CPU)中央处理单元是一个非常大的集成电路,基本逻辑架构包括控制单元控制,算术单元ALU和缓存(cache)以及数据(data),控制和连接。国家巴士(巴士)。
简而言之
计算单元,控制单元和存储单元。
架构图如下:
如何在深度学习中使用CPU,GPU,NPU和FPGA
CPU遵循冯·诺依曼架构,核心是存储过程和顺序执行。 CPU架构需要大量空间来放置存储(缓存)和控制(控制),但计算设备(ALU)只占很小一部分,因此在大规模并行计算功能中非常流行。逻辑控制有限。
CPU不能做很多矩阵数据并行计算,但GPU可以。
GPU
图形处理单元(GPU)是图形处理单元(GPU),是一种大规模并行计算架构,由众多计算设备组成,旨在同时处理多个任务。
为什么GPU可以执行并行计算GPU包括基本计算设备,控件和存储,但GPU架构与CPU不同,如下图所示。
如何在深度学习中使用CPU,GPU,NPU和FPGA
与CPU相比,不到20%的CPU芯片空间是ALU,超过80%的GPU芯片空间是ALU。换句话说,GPU具有更多用于数据并行的ALU。
由Darknet构建的神经网络模型Alexnet,VGG-16和Restnet152在GPU Titan X,CPU Intel i7-4790K(4GHz)上执行ImageNet分类任务预测。如何在深度学习中使用CPU,GPU,NPU和FPGA
注意:以上数据来自https://pjreddie.com/darknet/imagenet/#reference。
您可以看到GPU处理神经网络数据比CPU更有效。
总结GPU具有以下特征:
1,提供多线程,多核并行计算的基础设施,核心数量非常大,可以支持大量数据的并行计算。
2.访问速度更快。
3.更高的浮点计算性能。
因此,GPU在大量训练数据,大量矩阵和深度学习中的卷积任务方面比CPU更适合。
虽然GPU在并行计算能力方面具有优势,但它们不能独立工作,并且需要CPU协处理。同时,存在高功耗和大量的问题。
更高的性能意味着更大的GPU,更高的功耗,更高的价格,并且在某些小型和移动设备上不可用。
因此,出现了具有小尺寸,低功耗,高计算性能和高计算效率的特殊芯片NPU。
NPU
神经网络过程单元(NPU)神经网络处理单元。 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,GPU,NPU和FPGACPU和GPU交互过程:
1获取GPU信息并配置GPU ID
2将神经元参数加载到GPU
3 GPU加速神经网络计算
接收4个GPU计算结果
NPU加速
NPU与GPU加速不同,每个神经元层的计算结果不输出到主存储器,而是基于神经网络连接发送到下层神经元,导致高性能和功耗。升级。
CPU将编译的神经网络模型文件和权重文件加载到专用芯片中以完成硬件编程。
如何在深度学习中使用CPU,GPU,NPU和FPGA
在整个运行过程中,CPU主要实现数据加载和业务流程控制。互动过程如下:
1NPU专用芯片器件开放
2传递模型文件并接收模型工作。
3获取作业的输入和输出信息
4将输入数据复制到模型存储器
5运行模型以获取输出数据。
除NPU外,还有FPGA在功耗和计算能力方面的优势。
FPGA
现场可编程门阵列(FPGA)称为现场可编程门阵列,用户可根据需要重复编程。与CPU和GPU相比,具有高性能,低功耗和硬件编程。
FPGA的基本原理是将大量数字电路基本门和存储器集成到芯片中,用户可以写入FPGA配置文件来定义这些门和存储器之间的连接。此录音不是一次性的,因此您可以重复定义并重复配置。