培训公司网站建设,用wordpress当wiki,百度翻译api wordpress,商城网站设计公司有哪些来源 | 汽车电子与软件知圈 | 进“高精度地图社群”#xff0c;请加微信15221054164#xff0c;备注地图概述随着人工智能的热潮和AI算法的广泛应用#xff0c;深度学习已成为当前AI研究的重点#xff0c;在自动驾驶领域#xff0c;环境感知、传感器融合、控制决策等等都会… 来源 | 汽车电子与软件知圈 | 进“高精度地图社群”请加微信15221054164备注地图概述随着人工智能的热潮和AI算法的广泛应用深度学习已成为当前AI研究的重点在自动驾驶领域环境感知、传感器融合、控制决策等等都会多少涉及到深度学习而自动驾驶性能的优劣直接和AI算法相关说白了就是深度学习算法的优劣。要想在面对海量数据的并行运算的同时做到高效、可靠那就意味着承载AI算法的计算平台需要提供足够的性能加速也就是AI芯片的算力要足够用同时考虑其他因素功耗还不能超标能效比越高越好。在AI芯片领域可供选择的首先是需要一个CPU或者ARM内核来执行调度处理然后大量的并行计算靠GPU、FPGA或者ASIC来完成而ASIC里面有多种架构谷歌的TPU、地平线BPU、寒武纪和华为都推出的NPU等。之前看过一篇文章关于GPU等AI芯片如何处理深度学习的简单整理一下加深记忆。CPU和GPU都属于通用芯片不过GPU在近几年专门针对AI算法加强了并行计算单元因此除CPU外GPU、NPU、FPGA等芯片作为AI算法的硬件加速器在不同的应用场景和深度学习算法中发挥着各自的优势且听一一道来。在自动驾驶算法中感知算法是作为一切自动驾驶控制处理的基础环境感知中主要是靠摄像头和激光雷达而且以摄像头视觉处理居多因此以摄像头视觉深度学习算法中的人脸识别为例其基本处理流程及对应功能模块所需的算力需求分布如下视觉算法中先是摄像头获取图像然后经过CPU或GPU进行预处理也就是基本的判断识别和任务分配然后就需要进行大量的数据计算分析这时候GPU、NPU或者FPGA等AI芯片开始派上用场。之所以会这样这就涉及到了作为通用芯片CPU和AI计算芯片GPU等的原理架构方面的区别了。CPU和GPU的原理/架构对比CPU(CentralProcessing Unit)中央处理器是一块超大规模的集成电路主要逻辑架构包括控制单元Control运算单元ALU和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。简单说就是计算单元、控制单元和存储单元。架构图如下所示CPU遵循的是冯·诺依曼架构其核心是存储程序/数据、串行顺序执行。因此CPU的架构中需要大量的空间去放置存储单元(Cache)和控制单元(Control)相比之下计算单元(ALU)只占据了很小的一部分所以CPU在进行大规模并行计算方面受到限制相对而言更擅长于处理逻辑控制。CPU无法做到大量数据并行计算的能力但GPU可以。GPU(GraphicsProcessing Unit)即图形处理器是一种由大量运算单元组成的大规模并行计算架构早先由CPU中分出来专门用于处理图像并行计算数据专为同时处理多重并行计算任务而设计。GPU中也包含基本的计算单元、控制单元和存储单元但GPU的架构与CPU有很大不同其架构图如下所示。与CPU相比CPU芯片空间的不到20%是ALU而GPU芯片空间的80%以上是ALU。即GPU拥有更多的ALU用于数据并行处理。这就是为什么GPU可以具备强大的并行计算能力的原因。从硬件架构分析来看CPU和GPU似乎很像都有内存、Cache、ALU、CU都有着很多的核心但是CPU的核心占比比较重相对计算单元ALU很少可以用来处理非常复杂的控制逻辑预测分支、乱序执行、多级流水任务等等。相对而言GPU的核心就是比较轻用于优化具有简单控制逻辑的数据并行任务注重并行程序的吞吐量。简单来说就是CPU的核心擅长完成多重复杂任务重在逻辑重在串行程序GPU的核心擅长完成具有简单的控制逻辑的任务重在计算重在并行。再来看一张NVIDIA公开的关于GPU的架构图上图NVIDIAGPU拥有4个SM(streaming multiprocessor)每个SM有4*832个Core一共有4*4*8128个Core。再对比一下CPU的Haswell的Core微架构图可以看到其有20多种“执行单元”(ExecutionUnits),如ALU、FMA、FP add和FP mul等。每个“执行单元”用于处理不同的指令以 FP mul“执行单元为例”一个CPU的Core中有2个六核心的CPU有12个。所以在执行单元方面12812。(仅做参考此处GPU的Core并不可以和CPU结构图中的Core对等它只能相当于CPU微架构中的一个“执行单元”。)关于CPU和GPU可以比喻成CPU是一个拥有多种功能的优秀领导者其的强项在于“调度”而非纯粹的计算而GPU则可以被看成一个接受CPU调度的“拥有大量计算能力”的员工。总结GPU具有如下特点1) 多线程提供了多核并行计算的基础结构且核心数非常多可以支撑大量数据的并行计算处理神经网络数据远远高效于CPU。2) 拥有更高的访存速度。3) 更高的浮点运算能力。因此GPU比CPU更适合深度学习中的大量训练数据、大量矩阵、卷积运算。GPU虽然在并行计算能力上尽显优势但并不能单独工作需要CPU的协同处理对于神经网络模型的构建和数据流的传递还是在CPU上进行。但是GPU也有天生缺陷那就是功耗高体积大价格贵。性能越高的GPU体积越大功耗越高价格也昂贵对于一些小型设备、移动设备来说将无法使用。因此一种体积小、功耗低、计算性能高、计算效率高的ASIC专用芯片NPU诞生了。NPU原理和AI计算优势NPU (NeuralNetworks Process Units)神经网络处理单元。NPU工作原理是在电路层模拟人类神经元和突触并且用深度学习指令集直接处理大规模的神经元和突触一条指令完成一组神经元的处理。相比于CPU和GPUNPU通过突出权重实现存储和计算一体化从而提高运行效率。国内寒武纪是最早研究NPU的企业并且华为麒麟970曾采用寒武纪的NPU架构不过从2018年开始华为发布自研昇腾芯片专为达芬奇架构。NPU是模仿生物神经网络而构建的CPU、GPU处理器需要用数千条指令完成的神经元处理NPU只要一条或几条就能完成因此在深度学习的处理效率方面优势明显。据说同等功耗下NPU 的性能是 GPU 的 118 倍。(数据来源网络)与GPU一样NPU同样需要CPU的协同处理才能完成特定的任务。说道这里提一下手机芯片作为移动端的专用SoC内部集成了CPU、GPU和NPU。以麒麟990 5G版为例说明在CPU方面共有8核心分别是两颗2.86GHz的A76架构大核两颗2.36GHz的A76架构中核以及四颗1.95GHz的A55架构小核。在GPU方面则是采用了16核的Mali-G76 GPU而在NPU方面集成2颗大核和一颗小核采用的是华为自研达芬奇架构的NPU。其中CPU负责手机应用流畅切换、GPU支持游戏画面快速加载而NPU(神经网络处理器)就专门负责实现AI运算和AI应用的实现。也就是说CPU是负责计算和整体协调的而GPU是负责和图像有关的部分NPU负责和AI有关的部分。其工作流程则是任何工作都要先通过CPUCPU再根据这一块的工作的性质来决定分配给谁。如果是图形方面的计算就会分配给GPU如果是AI方面的计算需求就分配给NPU。本文借用一下华为麒麟官方发布的《看懂芯片原来这么简单》系列漫画介绍华为自研达芬奇架构NPU相比传统标量、矢量运算模式华为自研架构NPU采用3D Cube针对矩阵运算做加速因此单位时间计算的数据量更大单位功耗下的AI算力也更强相对传统的CPU和GPU实现数量级提升实现更优能效。由此可以看出在手机SOC中CPU是至关重要的部分同样在自动驾驶行业处理深度学习AI算法方面GPU和NPU都需要和CPU协同才能发挥其性能优势。CPU如何辅助GPU实现加速GPU当前只是单纯的并行矩阵的乘法和加法运算对于神经网络模型的构建和数据流的传递还是在CPU上进行。CPU加载权重数据按照代码构建神经网络模型将每层的矩阵运算通过CUDA或OpenCL等类库接口传送到GPU上实现并行计算输出结果CPU接着调度下层神经元组矩阵数据计算直至神经网络输出层计算完成得到最终结果。CPU 与GPU的交互流程1) 获取GPU信息配置GPU id2) 加载神经元参数到GPU3) GPU加速神经网络计算4) 接收GPU计算结果CPU如何辅助NPU实现加速NPU与GPU加速不同主要体现为每层神经元计算结果不用输出到主内存而是按照神经网络的连接传递到下层神经元继续计算因此其在运算性能和功耗上都有很大的提升。CPU将编译好的神经网络模型文件和权重文件交由专用芯片加载完成硬件编程。CPU在整个运行过程中主要是实现数据的加载和业务流程的控制其交互流程为1) 打开NPU专用芯片设备2) 传入模型文件得到模型task3) 获取task的输入输出信息4) 拷贝输入数据到模型内存中5) 运行模型得到输出数据除NPU外在功耗及计算能力上有一拼的还有FPGA。 FPGA原理和AI计算优势说完了GPU、NPU以及他们的领导CPU再来看看另一个火热芯片FPGA。FPGA(FieldProgrammable Gate Array)称为现场可编程门阵列用户可以根据自身的需求进行重复编程。与 CPU、GPU 相比具有性能高、功耗低、可硬件编程的特点。FPGA基本原理是在芯片内集成大量的数字电路基本门电路以及存储器而用户可以通过烧入FPGA 配置文件来定义这些门电路以及存储器之间的连线。这种烧入不是一次性的可重复编写定义重复配置。FPGA的内部结构如下图所示FPGA的编程逻辑块(Programable Logic Blocks)中包含很多功能单元由LUT(Look-up Table)、触发器组成。FPGA是直接通过这些门电路来实现用户的算法没有通过指令系统的翻译执行效率更高。对比一下CPU/GPU/NPU/FPGA各自的特点各芯片架构特点总结CPU70%晶体管用来构建Cache还有一部分控制单元计算单元少适合逻辑控制运算。GPU是单指令、多数据处理晶体管大部分构建计算单元运算复杂度低适合大规模并行计算。主要应用于大数据、后台服务器、图像处理。GPU善于处理图像领域的运算加速。但GPU无法单独工作必须由CPU进行控制调用才能工作。CPU可单独作用处理复杂的逻辑运算和不同的数据类型但当需要大量的处理类型统一的数据时则可调用GPU进行并行计算。NPUNPU在电路层模拟神经元通过突触权重实现存储和计算一体化一条指令完成一组神经元的处理提高运行效率。主要应用于通信领域、大数据、图像处理。NPU作为专用定制芯片ASIC的一种是为实现特定要求而定制的芯片。除了不能扩展以外在功耗、可靠性、体积方面都有优势尤其在高性能、低功耗的移动端。FPGA可编程逻辑计算效率高更接近底层IO通过冗余晶体管和连线实现逻辑可编辑。本质上是无指令、无需共享内存计算效率比CPU、GPU高。主要应用于智能手机、便携式移动设备、汽车。FPGA是用硬件实现软件算法因此在实现复杂算法方面有一定的难度缺点是价格比较高。将FPGA和GPU对比发现一是缺少内存和控制所带来的存储和读取部分速度更快。二是因为缺少读取的作用所以功耗低劣势是运算量并不是很大CPU作为最通用的部分协同其他处理器完成着不同的任务。GPU适合深度学习中后台服务器大量数据训练、矩阵卷积运算。NPU、FPGA在性能、面积、功耗等方面有较大优势能更好的加速神经网络计算。而FPGA的特点在于开发使用硬件描述语言开发门槛相对GPU、NPU高。ASIC芯片是全定制芯片长远看适用于人工智能。现在很多做AI算法的企业也是从这个点切入。因为算法复杂度越强越需要一套专用的芯片架构与其进行对应ASIC基于人工智能算法进行定制其发展前景看好。类脑芯片是人工智能最终的发展模式但是离产业化还很遥远。可以说每种处理器都有它的优势和不足在不同的应用场景中需要根据需求权衡利弊选择合适的芯片。说明文章观点仅供分享交流不代表焉知自动驾驶的立场转载请注明出处如涉及版权等问题请您告知(小老虎13636581676微信同)我们将及时沟通处理。