■ 文/上海海思技术有限公司 裴朝科 周海林 Guo Dong 杨红明
关键字:人工智能芯片 ASIC 安防监控 人工智能 端侧SoC AI加速 高性能 低功耗 低比特卷积神经网络 深度学习
我国的安防产业兴起于20世纪80年代,产品技术上以实体防护为主,主要覆盖文博等特殊单位,在此基础上形成了初步的产品形态。经过了上世纪90年代至本世纪初的发展,其应用范围越来越广、产品品类逐渐丰富,深入到金融、公安、交通、楼宇等周边产业。本土安防企业也迅速发展,初步形成了“珠三角”“长三角”“京津地区”三大产业集群。
随后,市场规模逐步扩大,公安部提出“平安城市工程”的概念,各地城市开始建设监控预警系统。安防监控产业在技术层面逐步出现了数字化、高清化、网络化等变革,在应用层面开始向社会化安防产品、民用市场深耕。2010年以来,国内安防企业逐步向解决方案、行业化、平台化发展,平安城市得到大力发展。“雪亮工程”的发布,把安防从城市推向农村,通过天网监控与民用摄像头、监控器、报警器等相结合,安防监控的产品普及到了更广阔的“群众性治安防护工程”,视频监控行业进入了快速发展期。在此期间,国产的核心芯片逐步取代了进口芯片,国内视频监控产品生产企业不断发展壮大。
近年来,以机器视觉为代表的人工智能技术席卷全球,而安防产业由于其天然的属性与人工智能高度匹配,在政策和技术的双轮驱动下成为AI落地的重要场景。一方面,安防亟需智能化技术。安防监控领域的数据量持续增长,每天就可达到上千PB级别,人工分析变得越来越困难,其效率和准确度都无法满足要求。需要引入智能技术作为“专家力量”,事前风险预警、异常情况探测、事后检索分析。另一方面,国内诸多业内明星创业公司纷纷聚焦到安防和泛安防领域,安防产业各场景下累计的庞大数据量,恰恰为当前以深度学习为主要代表的AI技术提供了用武之地。深度学习在训练阶段包含了足够多场景的海量数据,其算法在实际应用环境下更具备普适性。
整个安防监控系统中,各类芯片也都扮演着核心角色。芯片在很大程度上左右着安防系统的整体功能、技术指标、稳定性、能耗、成本等,并在安防行业未来发展脉络上起到关键作用。人工智能技术在安防上得以快速发展,无论是算法的实现、海量数据的获取和分析、计算能力的体现,都离不开物理基础——芯片。
广义上讲,只要可以运行人工智能算法的芯片都可以叫做人工智能芯片,但现在一般来说,AI芯片特指针对人工智能算法、特别是以CNN为基础的深度学习做了特殊加速设计的芯片。这类芯片通常也会对其他类型的机器学习算法进行了硬件加速。
按芯片的技术架构分类,AI芯片一般包括GPU、FPGA以及专属的ASIC芯片。传统的CPU架构上,每条指令都需要执行存储读取、指令分析、分支跳转等命令,其主要职责并不只是数据运算。深度学习有海量数据处理、密集型线性运算的需求,对非结构化数据(如图像、视频、语音等)进行大规模并行处理、高内存带宽和低延迟操作。深度学习算法的训练和推理,训练过程为高精度(长字浮点和定点)、高计算量的正反向多次迭代计算;推理过程为正向计算过程,考虑到应用场景的多样性,核心指标是能效、速度、安全和硬件成本,而计算精度可依场景需求而定。从上述特性上讲,传统CPU并不匹配,在功耗受限的情况下,仅通过提高CPU和内存的工作频率,无法满足深度学习的海量数据运算要求。
GPU(Graphics Processing Unit,图形处理单元)做为通用性AI芯片,是面向数据吞吐的单指令多数据处理,具有数量众多的计算单元和超长流水线。其控制相对简单,通过流处理器分配任务队列到线程网格中,实现对运算资源和内存带宽的高效利用,大规模并行计算十分适于图像处理计算。同时,GPU也拥有更为强大的浮点运算能力。因此,GPU在深度学习算法训练方面十分高效,是构建通用型人工智能计算平台的首选。GPU虽有较高的计算峰值和内存接口带宽,但运算功耗远大于FPGA和ASIC,不适于端侧,其SIMT硬件计算架构也无法根据应用进行硬件资源调整。
半定制化的FPGA(Field Programmable Gate Array,现场可编程阵列),集成了大量的基本门电路和存储器,用户可以通过烧录配置文件灵活重组电路,利用专用电路进行数据和任务的并行计算,可实现特定运算效率的大幅提升。FPGA同时拥有硬件流水线和数据并行处理能力,适用于深度学习中的推理阶段。然而,FPGA极细粒度计算单元的计算能力有限,计算资源占比较低,运算速度和功耗与ASIC存在较大差距。FPGA的可重构性为需要不断迭代改进深度学习算法提供了便利的硬件方案,较适于芯片需求未形成规模的应用场景。
全定制化的ASIC(Application-Specific Integrated Circuit,专用集成电路),是为特定要求而定制的芯片。其开发周期相对较长,一次性开发成本高,应用场景也比较专用。但在功耗、可靠性、集成度、性能、成本等方面都有突出优势。从智能发展的长远目标来看,深度学习的算法结构日趋复杂,ASIC可通过专用的芯片架构对其进行优化硬件加速,使性能、功耗、面积等指标作到最优,发展前景十分广阔。
按芯片的应用场景划分,AI芯片可以分为云端、端侧协处理器和端侧SoC三种。云端主要是服务器侧,主要用于训练或者大规模的推理。训练或大规模的推理涉及海量数据、复杂的神经网络模型、密集的并行计算,对处理器的计算能力、精度、数据访存、可扩展性的要求都非常高。端侧协处理器,目前还主要是专用的深度学习处理引擎,专门用于推理。运算速度、功耗、安全性和硬件成本等是最重要的考虑因素,且部分场景比如ADAS等对实时性的要求很高,需要支持低延时。但一般协处理器芯片,仍要搭配前端具备ISP处理能力的芯片。端侧的SoC则在整合了上述推理的功能之外,作为系统的主控整合了相关所有的技术。在具体领域如安防场景,需要融合ISP和编解码的高集成度方案,这种高度集成的方案无论从低延时、低功耗、低成本方面,还是从硬件设计、软件设计等方面,都有系统级的优势。这也是安防场景下典型产品的落地形态。
目前,新的增强学习(Reinforcement Learning)和在线学习(On-line Learning)技术,在端侧场景的推理任务中,也在持续学习和改进模型。在未来的AI芯片中,无论是云端还是端侧,都会具备不同程度的训练和推理能力,将分析和学习交织在一起,不断进化。
从最初的神经元模拟感知机,到现在多达上百层的神经网络,人们对人工智能的探索从未真正停歇。80年代AI的商业化热潮已经出现,但由于其运算芯片算力的限制,多数场景仍无法满足需求。1989年,贝尔实验室的Yann LeCun团队创建了一个训练识别手写邮政编码的神经网络,并在DSP上训练神经网络,开创了神经网络的时代,并随着AI芯片的不断发展而全面繁荣 。20世纪后,随着GPU技术的发展,深度学习算法的训练运行效率得到了大幅度的提升。人工智能技术快速成长,不但在国际象棋、围棋等方面打败人类,在对图像的辨识能力上也超过人类的平均水平,人工智能的商业化有了广阔的落地空间。
长期以来,中国在CPU、GPU、DSP、FPGA等方面一直处于追赶者的地位,而人工智能的兴起,无疑在AI芯片处理器方面提供了弯道超车的机会。中国在人工智能的应用方面有广阔的市场空间,在AI芯片的发展上呈现出百花齐放、百家争鸣的态势,也出现了大量的AI芯片创业公司。基于技术和市场,中国在建立以AI芯片为基础的人工智能生态圈将大有可为。
特别在安防监控领域,在国家平安城市、智慧交通等政策的推动下,智能正快速向安防产业的各个环节渗透。在前端,具备智能运算能力的相机大大提高了分析处理的及时性、节约带宽和成本。相机作为安防系统的眼睛,已经实现了从“看得见”到“看得清”的转变,正在经历到“看得懂”的提升,这也是芯片目前聚焦的技术方向。比如人脸识别应用中,相机智能化,可以将人脸抓拍置于前端相机,只需要把抓拍的结果图片上传到后端识别,大大节省了带宽和中心的算力。相比于前端相机,后端xVR设备更适合于大规模的AI应用,比如多路的警界分析、人脸、结构化信息提取。
安防智能化,AI芯片是动力和基石,GPU、FPGA、ASIC各路芯片厂商也在积极探索更优化的方案,PPA(performance、power、area)的优化是共同的方向。总的来说,云侧AI 芯片主要强调运算能力、内存容量、精度和带宽,同时追求低延时和低功耗;边缘设备中的AI 芯片则主要关注运算能力、功耗、成本和隐私安全等问题。
3.1.1 AI计算的特点
神经网络(Neural Network),尤其卷积神经网络(Convolution Neural Network)推动AI技术在安防领域广泛应用,AI计算很大程度是围绕卷积计算的效率展开的。卷积计算的过程可图示如下:
图1 卷积计算过程
按照上述图示,假如输入数据包含Cin个map,输出包含Cout个map,每个输出map的分辨率为Hout*Wout,卷积核大小为Hk*Wk,则该卷积层需要的乘加次数为:
numMACs=Hout*Wout*Cin*Hk*Wk*Cout
假定Wout=Hout=100, Hk=Wk=3, Cout=Cin=256,则该层所需的MAC数为:
numMacs=100*100*256*3*3*256=5898240000
假如用CPU来算这样的卷积层。假定CPU运行于2GHz,且具备单周期完成一次乘加能力,最理想情况下(不考虑总线延迟)运行这一层耗时也将近3秒。
因此,CNN卷积运算依然惊人。不难发现,卷积运算就是大量的乘累加,而且很容易并行化,围绕卷积运算的各种加速器应运而生。
3.1.2 CPU/DSP/GPU/FPGA/ASIC应用于AI加速的优劣对比
CPU的特点是依次处理各种运算,形如图2。
图2 CPU运算
CPU支持的是一系列极小粒度的运算,通过这些运算的组合可以完成任意的操作,因此灵活性是最好的。但对于包含大量重复性计算的卷积运算来说CPU的性能太低了,能耗比也低。
DSP的出现在一定程度上弥补了CPU性能的不足。DSP广泛采用SIMD(Single Instruction Multiple Data)架构,一条指令可以并行处理多个数据,因此大幅度提升了性能。DSP的运算规则如图3所示。
图3 DSP运算
如图3所示,1+2=2, 2+2=4, 3+3=6, 4+4=8,这四个加法是在同一个时钟周期中并行执行的,因此运算性能远高于CPU。不幸的是,不是所有运算都容易并行化,程序员必须小心地组织数据使其最大程度地向量化,这对程序员来说是一个挑战。因此DSP虽然运算效率较高但编程难度也随之提高。
GPU也可以支持大规模并行运算,但其具有不同于DSP的实现机理。在GPU中广泛运用的SIMT(Single Instruction Multiple Thread)技术使GPU兼顾了性能和可编程性,因此获得了广泛的应用。AI从实验室走向商用,GPU功不可没。GPU可粗略理解为多CPU(标量运算核)的集群,多个标量核运行相同的指令,但处理的数据不同。若数据可并行处理GPU的运算性能与DSP接近,若数据不可并行处理则只有部分标量核投入运算,其灵活性可与CPU相近。
对AI加速来说,无论DSP还是GPU,即使程序优化到极致,其性能、能耗比也是有限的。原因在于DSP和GPU都是通用的向量运算加速,并未充分利用CNN卷积运算的特点。卷积可以通过Img2Col转化为矩阵乘法,如下图所示:
图4 矩阵乘法
其中X是输入feature通过Img2Col转换成的数据矩阵,W是权重矩阵。矩阵乘法具有非常好的可并行性,因为X各行可以同时与W各列进行内积,反之亦然。充分利用矩阵乘法的特点可以构建效率极高的MAC阵列,从而爆发出惊人的运算能力,运算量和能耗比均远高于GPU或DSP。
从运算量看,通常整网运算量的九成以上都是卷积,利用效率极高的矩阵乘法加速电路可以使AI运算能力和能效比实现跨越式提升。因此AI加速中最重要的卷积运算还是需要专业选手,DSP或GPU只是过渡方案。
但神经网络除了卷积之外其它很多种类型的运算,矩阵乘法加速单元解决了最重要的性能问题,但很难加速其它类型的运算。因此,AI加速器除了矩阵乘法加速单元还需要其他类型的处理部件,通过异构架构让标量运算、矢量运算、矩阵运算各得其所,同时具备高性能和高兼容性。
AI加速器作为面向AI运算的特种处理器最好是ASIC专用芯片,因为ASIC在性能、功耗、成本维度均具有无可比拟的优势。然而设计和生产专用芯片的投入很高,开发周期也长,在某些特殊应用中用FPGA承载专用电路也是一种选项。FPGA的好处是可以通过编程动态实现各种电路,无需专用芯片的生产过程,对设计错误的容忍度也高,因此可以极大降低开发周期和开发成本。FPGA的问题是电路的规模通常严重受限,运行频率低、功耗高,而且成本也很高。因此极少有人用FPGA实现通用的AI加速处理器,而是针对特定场景、特定网络设计特定的加速电路,是与应用高度贴近的定制化方案。
总之,针对AI加速而言,各种处理电路具有不同的特点,在灵活性、性能、成本、功耗各维度表现均不相同。
图5 AI加速处理电路特点图
3.2.1 高性能、低功耗
高性能与低功耗是AI应用的核心诉求,为了实现高性能低功耗的目标,ASIC智能芯片通常需要借助于多种关键技术。下表列出了芯片层面常见的关键技术。
表1 芯片层面的关键技术
低比特量化是在ASIC智能芯片中广泛采用的技术,目前绝大多数隐藏层的运算精度可以降到int8及以下,相比fp32在性能和能耗比维度均有数倍的提升,收益巨大。然而低比特量化不免带来精度损失,解决精度问题最有效的方法是量化重训练,在训练环节加上量化,可使网络模型对低比特量化具有良好的适应性,在绝大多数场合可将精度损失控制在极小的范围内。
稀疏运算是另一种广受关注的技术。通常在神经网络中并非每个神经元都对与其连接的所有神经元敏感,因此可能出现相当数量的神经元连接是无效的,在神经网络中体现为对应的权值为0,省掉权值为0的连接运算即为稀疏运算的初衷。然而,权值为0的比例与网络规模和训练集都有关系,通常神经网络设计者会针对特定应用设计规模恰当的网络,已经小型化的网络稀疏率通常不会很高。另一方面,稀疏率不等效于性能收益率,这是因为稀疏运算时左阵(数据矩阵,即输入feature经Img2Col形成的矩阵)的一行不能广播到右阵各列,必须根据右阵每一列的稀疏特征(即权重为0的位置)重新组合数据,这样一来卷积不再是矩阵乘矩阵,而是多个矩阵乘向量的组合。卷积加速之所以具有超高性能和能效比,正是利用了矩阵乘矩阵的数学特征,一旦这个特征不复存在卷积加速的效能也就大打折扣。因此,稀疏运算在AI加速中的实际效果往往不如预期。
快速卷积算法的原理是先将参与卷积的feature和weight均进行空间变换,从而将卷积转换为乘积,达到减少乘法次数的目的。以3x3卷积为例,输出2x2个点需要执行的乘法次数为3x3*2*2=36,但在转换域所需的乘法次数仅为4x4=16次,因此单就乘法次数来说运算性能提升了36/16=2.25倍。但是快速算法也有问题,首先,变换与反变换矩阵是高度定制化的,普适性受限,因此通常智能芯片只设计最常见的3x3且stride=1的快速卷积;其次,虽然快速卷积算法减少了乘法次数但引入了额外的变换与反变换运算,这需要额外的成本与功耗开销;再次,变换和反变换通常也会引起一定的精度偏差。
3.2.2 易用
AI应用百花齐放,神经网络的结构也千差万别,而且AI从来不是一颗芯片、一个设备独自战斗,通常是端、边、云成体系部署。智能芯片平台不仅应有强大的运算能力,还应有成熟、系统的配套软件方案。
软件包括工具链和软件栈。工具链要能支持用户从模型移植到调优的整套工作流,使用户能以高效的方式完成算法移植与调优;软件栈执行模型的加载、运行,使用户可以轻松将其模型部署于AI智能芯片。成熟易用的软件系统是AI智能芯片从实验室走向量产商用的关键要素。
在安防产业中,智能视觉分析技术可提高监控区域的实时安全防范能力,有效地协助安全人员处理安防危机。通过在监控场景中预设目标和安全规则,可实时进行目标检测和识别。在目标触犯安全规则时,实时发出报警并提供相关信息。智能视觉分析技术已广泛地应用在公安、司法、交通、教育、金融等主流行业的安全防范,包括交通场景(十字路口、高速公路、停车场、飞机场)、公共场所(广场、车站、小区等)和重要场所(国家重要部门、基地、银行等)。此外,民用安防市场也正在崛起,智能视觉分析技术需求强劲。在生物认证方面,通过人脸搜索、黑名单布防、陌生人识别等多项智能分析功能,可大幅提高视频监控的防范功效。
端侧智能具备较强的实时性,可以把安防产业传统的事后分析转变成事中预警,真正起到防护的作用。云侧具备较强的智能计算能力,可以完成大计算量,如千万级底库的人脸识别任务。边缘侧位于端侧和云侧之间,具备两者的优势从而有较好的灵活性。“端云结合”“端边云”方案凭借实时性强、低延时和传输成本、高安全和隐私性,正在取代“云端分析”,成为安防产业中智能视觉分析的主流技术方案,如图6所示。安防产品中,预计将有超过50%的视频数据需要在端侧进行分析、处理和存储。
图6 端侧分析处理图
芯片行业是一个成熟行业,传统芯片设计和晶圆的制造封测都有较高的技术壁垒。但AI芯片行业仍在培育阶段,各种形态、各路玩家百花齐放,整体趋势有以下特点:
(1)AI专用芯片,特别是ASIC能满足各种场景商业化的需求,在智能上呈现出取代传统CPU和GPU的趋势;
(2)安防产业AI芯片的需求正处于多样化和快速增长的阶段,出现了智能相机、前端协处理器、后端服务器等各种形态,安防全面的智能化大势所趋;
(3)AI芯片是新的技术领域,导致众多市场派和学院派企业纷纷下场竞争,但大多数仍处于商业化运营和布局,传统安防企业在整合了AI技术之后,行业地位更加难以撼动。专门的AI芯片企业会转向集成商的角色,而AI算法企业在向下向垂直行业的深耕同时也向上游整合。因此,在安防领域,AI芯片企业和AI产业企业将驱动产业链双向整合,推动智能向行业内部深入渗透。
安防的智能化趋势已经势不可挡,让我们一起来迎接即将到来的“无AI,不安防”的智能时代。