本文共八个小节,分三篇连载。
一、图像识别是锦上添花而非不可或缺,双目大有前途,能大幅度减少运算资源消耗;
二、卷积与MAC,DSP最适合做深度学习的推理。内存是瓶颈,存内计算有前途;
三、 AUTOSAR是不可或缺的;
四、 DSP、指令集、VLIW、SIMD,挑战英伟达的四条路线;
五、 Mobileye的成长之路,英特尔雄心勃勃通吃自动驾驶全产业链(当然整车除外);
六、ARM A76AE与MIPS I6500对决,高通、华为才是英伟达终极对手,麒麟将来可轻松变身为自动驾驶芯片;
七、三年内无人能敌的英伟达Xavier;
八、另辟蹊径的瑞萨。
一、图像识别是锦上添花而非不可或缺
自动驾驶领域首先要保证的是安全,其次才是智能。 在无人车环境感知问题中,必须要知道自动驾驶车辆与目标间的距离、方位角,目标移动的速度,目标位置按时间序列的的预测(目标追踪),只有知道这些才能避免碰撞。传统的做法是先获得目标的三维Bounding Box,再与毫米波雷达的数据融合,获得目标的速度和方位角,再通过激光雷达做目标追踪。我们并不需要对目标进行精确的语义分割,只需将目标以一个三维的Bounding Box准确框出即可(即Detection)。 最后才是识别目标,才是图像识别。
通常有两种做法获得3D Bounding Box,第一种如上图,采用激光雷达与摄像头融合的方法,这是目前业内的主流。这种密集PointFusion体系结构有两个特征提取器:一个处理原始点云数据的PointNet变体(A),以及一个从输入图像中提取视觉特征的CNN(B)。之后有两种融合,一种是预测8个角中每个角相对于输入点的空间偏移,如(C)所示:对于每个输入点,网络预测从角落(红点)到输入点(蓝色)的空间偏移(白色箭头),并选择具有最高分数的预测作为最终预测(E)。另外一种直接回归盒角位置的香草全局结构(D)。
另一种是只使用激光雷达,以苹果为代表,使用VoxelNet。VoxelNet是一个端到端的点云目标检测网络,VoxelNet的网络结构主要包含三个功能模块:(1)特征学习层;(2)卷积中间层;(3) 区域提出网络( Region Proposal Network,RPN)。
特征学习网络的结构如上图所示,包括体素分块(Voxel Partition),点云分组(Grouping),随机采样(Random Sampling),多层的体素特征编码(Stacked Voxel Feature Encoding),稀疏张量表示(Sparse Tensor Representation)等步骤。卷积层相对简单,每一个卷积中间层包含一个3维卷积,一个BN层(批标准化),一个非线性层(ReLU)。
RPN 是目标检测网络中常用的一种网络,该网络包含三个全卷积层块(Block),每个块的第一层通过步长为2的卷积将特征图采样为一半,之后是三个步长为1的卷积层,每个卷积层都包含BN层和ReLU操作。将每一个块的输出都上采样到一个固定的尺寸并串联构造高分辨率的特征图。
这种只使用激光雷达的方法效果要比传感器融合效果更好,苹果的论文里有对比,如上表。缺点是点云密度要求高,最好是128线,最低也要是64线。
无论哪一种方法,所需的运算资源都远小于图像识别类深度学习或语义分割类深度学习。按照ISO26262 功能安全的思路,安全关联度高的领域要投入尽量多的资源,安全关联度低的领域要尽量减少资源的浪费,这样既保证安全,又降低成本。
双目也可以获得自动驾驶车辆与目标间的距离、方位角,目标移动的速度。目标位置按时间序列的预测(用光流法的目标追踪),但是要获得精确的3D Bounding Box,双目是不大可能的,双目的深度数据不够精确。
双目的好处是不使用复杂的传感器融合,也不使用昂贵的激光雷达,消耗运算资源相对较低,整体成本是最低的,缺点是无法做到全天候。双目对剧烈变化的光线无法适应,当然单目也有同样的问题。此外,双目使用传统的线性算法,可解释性、确定性远高于深度学习,更符合ISO26262对安全的要求。对于深度学习这种黑盒子,即便是最低的ISO26262 ASILA级都无法达到,因为ISO26262最基本的要求就包括确定性和可解释性。
反过来说,如果选择双目,那么所需要的运算资源会大大减少。目前英伟达的Xavier、瑞萨的V3H、NXP的S32V3都有对双目的硬核支持。通常都用硬核来完成双目视差和光流的计算,因为双目的视差和光流是多任务的并行计算。
来源:博世
博世和大陆都坚持全面使用双目,浮点运算4TOPS即可。
长期以来有个误解,那就是 GPU擅长并行计算,实际GPU擅长的是单一任务的并行计算,而非多任务的并行计算,多任务的并行计算还是要靠CPU,不过CPU确实不擅长并行计算。所以通常都用硬核来完成双目视差和光流的计算,硬核的缺点是毫无灵活性可言,并且成本偏高。
所以自动驾驶的主芯片,要比拼不是单一任务的浮点运算的算力,只有图像识别,语义分割才是真正消耗单一任务的浮点运算的地方,而这些不是必须的,只是锦上添花。自动驾驶主芯片要比拼的还是多任务的处理能力。
二、卷积与MAC,DSP最适合做深度学习的推理
图像识别是自动驾驶芯片计算力消耗最大的部分,通常核心的算法都是基于CNN的,也就是基于卷积的。卷积是什么?如果纯粹从算法的角度,卷积就是乘积累加算法,即MAC(Multiply Accumulate)。
第二个等号右边每个括号里的系数构成的序列 (14,34,14,4),实际上就是序列 (2,4) 和 (7,3,1) 的卷积。这就是个典型的MAC,通常MAC是DSP的核心运算方式,衡量DSP性能最常用的数据就是GMAC/s,即每秒十亿次乘积累加。
DSP主要的工作也是做MAC的,理论上讲DSP是最适合做卷积运算的,是卷积运算效率最高的硬件,但是我们看到DSP在卷积领域几乎无人提及,即便德州仪器也很少发声。原因在于DSP不是并行处理的架构,也就是说,DSP一般是单核的,而GPU是多核的,单核的DSP远不是GPU的对手。不过DSP的好兄弟FPGA上场了,FPGA天生的并行处理架构,自2010年后,FPGA将多核DSP引入系统,今天几乎所有的中高端FPGA都或多或少拥有数十乃至数百个DSP核,通常这种FPGA可以在 4 瓦的功率电力预算下实现 200 G-ops/s 的速度,也即 50 G-ops/s/W,这个结果几乎是 GPU 效能的 10 倍。
不仅天生更适合做卷积运算,DSP和FPGA在架构上也具备压倒性优势。GPU同CPU一样,都是冯诺伊曼架构,也就是指令执行过程:取指令->指令译码->指令执行,只有在指令执行的时候,计算单元才发挥作用,大部分时候,计算单元是空闲无事可做的。冯诺伊曼架构数据和程序放在同一个地方,不用花销太多的资源就能取到数据和程序。这也算是冯氏结构的优点。可是由于程序和数据存放在同一存储区,存取程序和数据间时共享同一总线,导致了冯诺依曼瓶颈。
与冯氏结构相对的是哈佛结构,即将程序和数据分开存储的结构。其过程CPU首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度。哈佛结构能够完成指令和数据的并发操作,DSP处理器的指令集通常都允许程序员在一个指令内说明若干个并行的操作,减轻了程序运行时的访存瓶颈,也就是提高了吞吐量,是一种并行结构。而冯氏结构只能是顺序操作,是一种串行的处理方式。原始的冯·诺依曼体系结构,如GPU就通过引入管线技术(Pipeline)提高吞吐量。与哈佛架构比,做并行计算是要吃亏的。但哈佛架构也有缺点,那就是指令既不直观,也不容易使用,通用型的编译器很难做。
对冯诺伊曼架构来说,芯片本身运算速度不是瓶颈,瓶颈在于内存的带宽,换句话说,你看到的计算性能参数都要被内存打折扣,大部分时候运算部分都在等待内存响应。现在一颗手机中处理器的性能已经比20年前超级计算机中的处理器还要强。另一方面,计算机的主要内存使用的是DRAM方案,DRAM是基于电容充放电实现的高密度存储方案,其性能(速度)取决于两方面,即内存中电容充放电的读取/写入速度以及DRAM与处理器之间的接口带宽。DRAM电容充放电的读取/写入速度随着摩尔定律有一定提升,但是速度并不如处理器这么快。另一方面DRAM与处理器之间的接口属于混合信号电路,其带宽提升速度主要是受到PCB板上走线的信号完整性所限制,因此从摩尔定律晶体管尺寸缩小所获得的益处并不大。这也造成了DRAM的性能提升速度远远慢于处理器速度,目前DRAM的性能已经成为了整体计算机性能的一个重要瓶颈,即所谓阻碍性能提升的“内存墙”。
除了性能之外,内存对于能效比的限制也成了传统冯诺伊曼体系计算机的一个瓶颈。这个瓶颈在人工智能应用快速普及的今天尤其显著。这一代人工智能基于的是神经网络模型,而神经网络模型的一个重要特点就是计算量大,而且计算过程中涉及到的数据量也很大,使用传统冯诺伊曼架构会需要频繁读写内存。目前的DRAM一次读写32bit数据消耗的能量比起32bit数据计算消耗的能量要大两到三个数量级,因此成为了总体计算设备中的能效比瓶颈。如果想让人工智能应用也走入对于能效比有严格要求的移动端和嵌入式设备以实现“人工智能无处不在”,那么内存访问瓶颈就是一个不得不解决的问题。
为了解决“内存墙”问题,一个最近得到越来越多关注的思路就是做内存内计算。2018年的国际固态半导体会议(ISSCC,全球最顶尖的芯片设计会议,发表最领先的芯片设计成果,称为“芯片界的奥林匹克”)有专门一个议程,其中的论文全部讨论内存内计算;今年早些时候,IBM发布了基于相变内存(PCM)的内存内计算,在此之后基于Flash内存内计算的初创公司Mythic获得了来自软银领投的高达4000万美元的B轮融资,而在中国,初创公司知存科技也在做内存内计算的尝试。
另外一种解决思路基于目前的技术,就是3D PoP内存,在处理器内部用TSV技术堆叠内存,与传统的芯片外置内存相比,这种方式可以提高10倍的存取效率,但这需要与内存厂家通力合作,三星在这方面具备天然优势,所以三星也在开发人工智能芯片,将来会是英特尔和英伟达的强劲对手。
对哈佛架构的FPGA来说,内存瓶颈的问题要小得多,几乎可以忽略,FPGA可以做片内SRAM,本质上FPGA就是一片SRAM。
FPGA虽然优势极为明显,然而却有致命缺点。那就是与GPU相比,FPGA都是硬线设计,die面积大,成本高,加上应用面窄,出货量低进而导致性价比太低。GPU的通用性很强,产品IP可以复用,等于出货量很高,所以性价比很高。
三、AUTOSAR
在自动驾驶时代,软件的工作量是惊人的,因此AUTOSAR成为不可或缺的支持,AUTOSAR的好处一言以蔽之就是软件和硬件分离,提高软件的复用性,降低软件开发成本。同时AUTOSAR也是ISO26262 ASIL的关键元素。
只有使用AUTOSAR,才有可能进入主流车厂的供应链,才可能通过ISO 26262的严苛安全标准。因此全球主要芯片厂家如英特尔、英伟达、NXP、瑞萨和意法半导体,中国的华为也于近期加入AUTOSAR联盟。