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

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

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

神经网络算法系统

神经收集的AI加速器简介

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

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系统。