展会信息港展会大全

神经网络的AI加速器简介
来源:互联网   发布日期:2021-05-11 20:45:39   浏览:14580次  

导读:神经网络是什么? 神经网络(Neural Network,NN)作为人工智能(Artificial Intelligence,AI)领域的一类机器学习模型,近年来得到了很多关注。目前,神经网络在图像、视频、语音、文本数据的生成、处理等任务上得到了广泛应用。相较于传统机器学习模型,...

神经网络是什么?

神经网络(Neural Network,NN)作为人工智能(Artificial Intelligence,AI)领域的一类机器学习模型,近年来得到了很多关注。目前,神经网络在图像、视频、语音、文本数据的生成、处理等任务上得到了广泛应用。相较于传统机器学习模型,神经网络模型的主要特点是:(1)模型构建启发于人脑的结构,模型架构与神经元结构有天然的相似性;(2)模型具备自主学习提取多层次特征的能力,不需要利用人为定义好的特征提取方式。

可处理不同类型数据的神经网络模型

模型构建:一些具有代表性的神经网络模型的示意图如上图所示,其中最简单的多层感知机(Multi-LayerPerceptron,MLP)是多层的线性、非线性函数的堆叠。除此之外,还有适合处理图像数据的卷积神经网络(Convolutional Neural Network,CNN)、适合处理序列数据的循环神经网络(Recurrent Neural Network,RNN)和适合处理图结构化数据的图神经网络(Graph Neural Network,GNN)等。这些模型根据数据域的特征设计了不同的算子和机制,比如CNN模型中的卷积操作、RNN模型中的状态和门机制、GNN模型中的传播聚合操作等。神经网络模型本质上就是一个复杂的多层次函数,里面包含大量的参数,而此函数的设计会引入很多人为先验作为归纳偏置。

学习算法“让模型自己学习如何提取特征”引出了两个问题:(1)模型从何学习?答案是海量的数据;(2)如何让模型学习,如何调整模型参数?目前主流的神经网络训练方法是梯度优化方法,而参数梯度可以通过反向传播算法进行计算。反向传播算法是神经网络学习的基石算法,无论是怎样的数据域和任务,都可以利用反向传播算法与梯度优化进行神经网络模型参数的学习。通常来说,面对一个学习任务,工程师搭建一个神经网络系统所遵循的路径是比较清晰的,首先设计数据处理方式、合适的损失函数,根据数据、硬件需求选择合适的模型,然后通过反向传播算法与梯度优化进行模型学习。

神经网络算法系统

神经网络的流行:作为一个适用性广且具有统一清晰的实践路径的算法框架,神经网络在近年来得到了广泛关注。相对于其他机器学习算法,神经网络在算法、实践、系统方面都有其独特性。从算法角度来说,神经网络具有强大的表示能力,能够从大量数据中学习各种特征以持续提升效果,并且可以处理各种不同的高维度复杂数据域;从实践角度来说,搭建神经网络算法系统有着较为统一清晰的实践路线;从系统角度来说,由于使用较为统一的算子集合和算法框架就可以处理各种数据和任务,学术界和工业界兴起了一波专用框架和加速器的设计热潮。学术界和工业界均设计了很多软件框架、硬件加速器来帮助实现更高效的神经网络的训练和推理流程。统一的框架既能帮助研究者和工程师更快地搭建和验证算法系统,又进一步促进了神经网络算法的发展。

AI加速器的发展

近年来,神经网络显著的识别效果是以庞大的模型计算量和存储量为代价的,这给实际应用场景中神经网络的高效部署带来了不小的挑战。目前神经网络的算法研究仍然在不断地增加神经网络模型的规模和结构复杂度来实现更高的准确率。以CNN为例,用于输入图像大小为224×224的分类任务的典型CNN模型需要高达390亿次浮点运算操作(Floating-point Operations,FLOP)和500MB以上的模型参数。由于计算复杂度与输入图像的大小有关,处理分辨率更高的图像可能需要超过1000亿次的浮点运算操作。

因此,选择合适的计算平台对于神经网络的高效部署是极为重要的。一个高性能的桌面级通用处理器(Central ProcessingUnit,CPU)每秒可以执行100亿~1000亿次浮点运算(10~100 GFLOP/s的峰值性能),完成上述神经网络模型一次前向推理的时间开销通常为百毫秒量级,这对于延时不敏感的场景已足够。然而,受限于功耗,移动端的边缘场景很难部署高性能CPU,而嵌入式CPU的峰值性能通常比高性能CPU低1~2个数量级,难以满足边缘场景的实时性需求。即使是高性能CPU,也很难满足延时敏感的应用场景算力需求,比如自动驾驶应用通常要求在毫秒级内完成目标检测以实现安全可靠的系统决策。相比之下,基于高度并行计算架构的通用图像处理器(Graphic ProcessingUnit,GPU)可以提供高达10 TFLOP/s的峰值性能,是目前高性能神经网络应用的主流计算平台。主流深度学习框架(比如Caffe和Tensorflow等)都面向GPU提供了易于使用的接口,英伟达也提供了底层的深度学习优化库cuDNN以加速神经网络在GPU上的部署,这些都使得GPU快速成为了神经网络加速的首选计算平台。但是GPU存在功耗较高的问题,即便是面向移动端的嵌入式GPU(比如NVIDIA TX2 GPU)的功耗也在10W左右,无法满足物联网对极低功耗(1mW~1W)的需求。

除了CPU和GPU这类通用处理器之外,工业界也投入了大量精力开发基于现场可编程逻辑阵列(Field Programmable Gate Array,FPGA)或专用集成电路(Application Specific Integrated Circuit,ASIC)的定制化AI加速器。基于FPGA和ASIC的两类针对特定应用领域进行的专用硬件架构设计中,基于FPGA的方案具有更短的开发周期和灵活的可编程性,同时具备较高的计算并行度和相对适中的功耗;而ASIC的开发需要付出高昂的开发时间和人力物力成本,但是可以最大程度地实现满足性能和功耗需求的定制化加速器。加速器的设计方法大致可分为两种,一种最直接的设计方案是针对每一种神经网络模型单独设计硬件架构并实现“硬化”。由于ASIC高昂的开发成本和冗长的开发周期,这种直接“硬化”的方案对于持续迭代和变化的神经网络模型来说必然是不可接受的。得益于FPGA的可编程和灵活性,直接“硬化”的方案主要应用于FPGA定制化AI加速器中。对于这类方案,比如fpgaConvNet和DeepBurning,通常采用寄存器传输级(Register Transfer Level,RTL)参数化模板或高层次综合(High-Level Synthesis,HLS)来将神经网络模型的每一层或某一部分子图直接映射成一个单独的计算模块,最终神经网络模型的完整硬件架构由多个参数映射后的计算模块组成。另一种方案是设计面向AI的处理器,即“xPU”。这种方案需要引入面向神经网络的定制化指令集(Instruction Set Architectu;re,ISA)和编译器,相应的硬件架构通常由指令控制器和多个与指令绑定的计算和访存模块组成。xPU的主要优势在于可以使用一个统一和可配置的硬件架构来实现对多种神经网络模型的支持,同时软件编译器可以从模型生成硬件可解析的指令序列,并采取多种优化策略来提高计算性能。xPU在实现流程上将硬件架构和神经网络模型相隔离,适用于FPGA和ASIC实现,并且在实现灵活性和通用性的同时,还保证了高效的计算性能。目前主流的AI加速器,比如中科院的“DianNao”系列、谷歌的TPU系列和赛灵思的DPU系列等,大多基于xPU的设计思路。

对于神经网络的高效部署而言,能效比是一个非常重要的指标,其反映了系统在单位功耗下所能实现的处理性能。更高的能效比意味着系统使用更低的能耗实现更强的处理性能。相比CPU或GPU等通用处理器,基于FPGA或ASIC的定制化AI加速器可以充分利用神经网络的计算特性,以去除不必要的逻辑资源开销,从而实现具备更高能效比的AI系统。

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港