02
架构:一切都是为了更快
征程5对标英伟达车端芯片性能情况
逻辑是一回事,技术实现往往是另一回事。地平线能够拿到英伟达的客户根本上还要看数据。
单片英伟达Orin和征程5的算力分别为256TOPS(每秒万亿次计算)和128TOPS,功率为55W和30W,功耗比分别为4.6TOPS/W和4.2TOPS/W。
但如果以自动驾驶AI在两个平台上每秒图像帧率FPS进行对比测试时,Orin为1001FPS,只有一半算力的征程5则实现了1283FPS(Orin数据为地平线基于同安培架构的英伟达RTX3090进行调整后测算得出)。“能效上来看,我们(征程5相比Orin)有6倍多的提升。”地平线BPU算法负责人罗恒表示。
在智能/自动驾驶场景,视觉仍是目前最核心的感知路线,也是智能/自动驾驶AI面临的核心任务:“我看到的是什么”。因此,对于自动驾驶所有应用的计算平台来说,FPS被认为是衡量先进算法在计算平台上运行效率的评价标准之一。
高级别智能/自动驾驶能力数据量和算力需求 来源:光大证券
2017年发布自研的FSD芯片时,特斯拉创始人马斯克便以此前应用的英伟达Drive PX2作比,从算力来看FSD是Drive PX2的3倍,但在执行自动驾驶任务时,其FPS是后者的21倍。
GPU的看家本领便是图像识别。为何GPU发明者英伟达的Orin会在测试中表现不及算力只有一半的地平线征程5?部分核心原因在于安培(Ampere)架构和贝叶斯(Bayes)架构设计出发点的差异。
从物理世界来看,芯片架构就是在方寸之间(目前主流车规级量产芯片尺寸40nm-5nm)做文章:如何在有限的空间内排布算子、存储器以及之间的通信线路,不同的计算需求将导致不同的阵列方式。
2.1学霸英伟达
数据中心场景主要包括高性能计算(HCP)和深度学习,以此出发的芯片架构要能够支持各类AI模型任务,在限定时间内吞吐恒河沙数般的数据量。如同被开了金手指的学霸,文史哲数理化通吃,一天能做三万张卷子。
英伟达从帕斯卡到安培架构都以高拓展性为核心目标:
· 支持尽可能多种类的神经网络结构以保证算法的正确率和泛化能力;
· 支持能够识别广大数字范围的浮点运算,以保证巨大的数据吞吐量;
· 支持阵列式结构以能够连接更多的处理单元,以进一步加大可计算的数据规模。
落地到硬件技术上,Tensor core(张量核)和cuda core(下称CUDA核)并行,以及从INT1到FP64的数据精度范围等一系列革新技术,都以支持上述目标为目的。
2017年,英伟达Volta架构亮相,其以深度学习为核心的标志便是推出了与CUDA核)并行的张量核)。
张量(Tensor)是一个数学概念,指多维数组,有0-5维,被看作是现代机器学习的基础,是数据的容器。
标量、向量、矩阵、张量概念
在早期以逻辑判断模型为主的机器学习中,学习任务简单,学习素材可被数据化为结构化的二维图表。
但进入神经网络模型的深度学习阶段中,AI的任务不再是找出花束中的蓝色花朵,而是找出图片库中的猫。教材变为非结构化数据,单一的图像数据就需要三维张量来表示,语音和视频的维度则更高。
配合多维张量设计的乘积累加运算 Multiply Accumulate(MAC)计算阵列与神经网络模型的运算模式高度匹配,成为AI芯片的核心算子类型。
英伟达张量核工作模式演示
谷歌2015年推出了张量处理器(Tensor Processing Unit,简称TPU)。2017年英伟达在完全面向深度学习的Volta架构上增加了MAC阵列,直接命名为“张量核”。
对从事数据中心、显卡和车端等多种业务的英伟达来说,CUDA核和张量核各有用处。
CUDA核在每个GPU时钟中最多可以执行1个单精度乘法累加运算,适用于参数一致的AI模型深度学习以及高精度的高性能计算。
但对于AI模型来说,模型参数的权重各有不同,如果全部对标当中的高精度进行运算,则时间长且内存消耗大;而如果都降维到低精度参数,则输出的结果误差较大。
张量核就可以做到混合精度:每1个GPU时钟执行1个矩阵乘法累加运算,输入矩阵是 FB16,乘法结果和累加器是FB32矩阵。
混合精度虽然在一定程度上牺牲了训练的精度,但可以减少内存的占用,以及缩短模型的训练时间。
在扩充适应多样计算需求的算子同时,英伟达也在不断扩充算子所能支持的浮点精度。
CUDA核在最主流的FP32基础上,先后增加了对FP64、INT32 的计算能力;张量核则可支持FP16、INT8/INT4/Binary、TF32、 BF16、 FP64等多种数据精度的支持。
多样化到什么程度?
FP64具有完整的15–17位十进制数字精度,多用于医学、军事等对精度要求极高的科学计算,通常不用于深度学习计算。而TF32甚至成为英伟达GPU中的新数学模式。
2.2偏才地平线
但这些高扩展性和丰富性,对自动驾驶AI来说是否是必要的?
2018年,英伟达发布了采用Volta架构GPU的Soc(系统级芯片)Xavier,可执行高级别自动驾驶任务。按照英伟达的定义,XAVIER是专门为机器人和边缘计算而设计的计算平台,采用台积电的12nm工艺。
特斯拉HW3.0与英伟达Xavier的大小比较
相比之下,特斯拉FSD采用三星14nm工艺,且算力上Xavier只有FSD的一半。但从面积上,XAVIER却比FSD要大一些。
背后便是应用于云端场景的架构,与完全对标一个品牌需求的车端架构,在芯片布局上的不同。
英伟达GPU(左)与特斯拉HW3.0内部示意图
直观来看,Xavier集成的Volta GPU,提供了512个CUDA核和64个张量核。相比之下,FSD中负责通用浮点计算的GPU面积远小于其MAC阵列NPU。
从需求出发,FSD芯片上只需运行特斯拉的自动驾驶AI,因此完全对标深度学习需求的MAC阵列占据更多的片上位置。
对Volta GPU来说,端侧以实时推理为第一要务的深度学习任务外,还需要考虑云端的训练和高性能计算等更多的任务,通用性计算与混合精度矩阵计算需求并重,仍需在方寸之间为CUDA核留下不少的位置。
上述芯片专家向《电动汽车观察家》表示:“相比通用型架构,自动驾驶专用架构在设计的时候会充分考虑到目标应用场景的特色,采用更高效适用的计算核以及组合模式,从而实现计算效率的提升,更好地满足目标应用场景的计算需求。”
自动驾驶芯片市场主要竞争者对比 来源:光大证券
围绕提升MAC阵列的利用效率,地平线自主研发的BPU(嵌入式人工智能处理器,Brain Processing Unit,大脑处理器)架构采用大规模异构计算、高灵活大并发数据桥和脉动张量计算核三大核心技术打造适应端侧自动驾驶需求的矩阵运算。
“英伟达和地平线的MAC阵列在具体的设计上有不少差异。“罗恒向《电动汽车观察家》表示,”从外部结果来看,贝叶斯主要面向batchsize=1、DDR节省和对使用depthwise的卷积神经网络进行优化,契合自动驾驶场景特征和高能效比。”
地平线脉动张量计算核原理
batchsize是指神经网络一次批量处理的样本数目。一次批处理的样本数目越多,那么就有潜在的更多并行计算/加速的可能。在云端场景下,有海量的数据需要处理,GPU以及其他一些云端AI芯片在架构设计上就会充分考虑batchsize大(一次批处理样本多)的特性来设计,从而提高硬件效率。
自动驾驶和其他一些端侧场景,数据上按固定的时间依次到达的,比如摄像头的帧率是30FPS,那么相当于每隔33ms就会有一张图达到,这时候就需要立即处理,尽早搞明白周围的状况而对车辆做出必要的控制。
本质上,自动驾驶面临的就是一个batchsize=1的问题(来一张图就要马上处理,而不能多等几张图一起处理),特斯拉的FSD chip发布会也强调了其架构设计面向batchsize=1优化。
地平线大规模异构近存计算原理
DDR指双倍速率同步动态随机存储器,是内存的其中一种。在云端,由于可以将大量的存储单元相连,内存可被无限扩大;
但在端侧,内存受芯片面积和计算单元“争夺”的双重限制变得有限又昂贵,而且自动驾驶一方面产生巨大数据量,一方面又不能因内存不足而“卡住”。因此通过硬件的设计排布和软件的指令调度,有效提升内存中数据的重复使用率,节省内存,确保始终有内存空间推动计算执行下去便非常重要。
地平线高灵活大并发数据桥原理
depthwise是卷积算子的一种特殊形式,使用其搭建的卷积神经网络具有最高的算法效率(达到同样的算法精度,所需计算量更少)。目前最强的卷积神经网络就是由大量的depthwise卷积构成的。比如,最新击败了Swin transformer的ConvNeXt。
在针对自动驾驶场景进一步优化自己的MAC阵列同时,地平线还开发了与英伟达CUDA核类似的向量加速单元。
“我们这一代的向量加速单元是一个非常高效、相对简单的(不支持浮点计算)面向向量(vector)的加速单元。”罗恒向《电动汽车观察家》表示,“这样一个相对简单的向量加速单元的好处是功耗、面积上的经济。下一代贝叶斯我们会进一步加强这个单元。”
减少数据的吞吐量某种意义上意味着算力,以换取功耗和芯片面积上的经济。做出算力和经济性之间的取舍决策,必须是对自动驾驶场景和算法的深刻理解。
地平线贝叶斯架构重点强化的性能
技术革新背后,是地平线BPU三代架构以满足端侧自动驾驶的加速需求为核心方向的不断演进。
其一:三代架构持续优化BPU IP的性能、面积、功耗,在性能/算力大幅提升的过程中,保证了所需DDR带宽只是温和的增加。
征程5(使用贝叶斯BPU)相对征程3(使用BPU伯努利2.0)FPS提升10~25倍(不同典型模型),带宽增加不到2倍,仍然有被动散热方案。
其二:对性能、面积、功耗和可编程性更好地折中考虑。
BPU伯努利1.0、2.0主要以硬核方式(有限的可编程性)支持常见性能有需求的算子;BPU贝叶斯更加系统、全面地考虑了性能和可编程性方面的需求,增加了灵活的、可编程的向量加速单元,但也包含了一些特定目标(如,Warping、Pooling、Resize等)的硬核加速单元。结果是,BPU贝叶斯更加通用,开发新的算子更为简单。
征程5目前在Swin(机器视觉最有代表的Transformer)上的FPS已经为Xavier的3倍。
“BPU伯努利1.0、2.0到贝叶斯三代架构都是以卷积神经网络加速为核心展开的,也是业界极少数持续保持depthwise convolution(卷积神经网络三十年来计算架构最大的算法改进)高效的加速器。”罗恒向《电动汽车观察家》表示。
对智能/自动驾驶所需算法的持续追踪、设计自身的软件算法,使地平线对车用领域未来的软件算法架构有清晰、聚焦的判断。而且,单一业务的地平线,无需像英伟达一样考虑多种业务结构的技术方向和性能需求。
“轻装上阵”赋予了地平线追赶英伟达的速度。
征程3推出一年多之后,地平线就推出了全新架构的征程5。相比之下,英伟达Xavier到Orin-X花了三年的时间。