先进的GPU和虚拟化技术对ADAS平台至关重要

作者:Bryce Johnstone,Imagination Technologies汽车业务营销总监

本文转载自“汽车电子产业联盟智驾电子”期刊

近几十年来,图形处理器(GPU)已从最初作为大型电玩的视频显示适配器演进为一个强大的计算中心,并且正在推动人工智能和机器学习的发展,包括从石油和天然气勘探到自然语言处理等众多领域的计算工作。如今,GPU正在自动驾驶和先进驾驶辅助系统(ADAS)技术的发展中扮演着越来越重要的作用。

在本文中,我们将介绍神经网络硬件加速器在自动驾驶计算平台的重要作用,他可以将极高性能和极低功耗完美结合在一起。

你或许想知道GPU是如何从电子游乐场走向前沿科学研究和自动驾驶汽车的?GPU作为处理大数据工作负载的首选处理器而逐渐崛起,归因于传统中央处理器(CPU)和GPU之间存在一些基本的架构差异。GPU是一种专用的微处理器,最初是为渲染游戏中的视觉效果和3D图形而设计,这些游戏需要强大的计算能力来显示实时动作效果。为了提供这种能力,GPU使用数千个小型高效的内核来实现可同时处理大量数据的大规模并行架构。

相比之下,典型的CPU仅由几个内核和大量高速缓存组成,通常设计为一次只处理几个软件线程。CPU针对顺序串行处理进行了优化,更适合于通用的计算工作。然而,当涉及同时处理大量数据时,GPU则更胜一筹。

GPU凭借数百个内核能够并行处理数千个线程,与典型CPU的性能相比,GPU可以将某些软件的性能提高20倍以上。越来越多出现的情况是,我们期望计算机为我们解决那些具有挑战性的计算问题都具有固有的并行结构——可以想想大量的视频处理、图像分析、信号处理和机器学习等流程,它们都必须能可靠、实时地运行才可以确保实现汽车自动驾驶。在诸如电池供电的电动汽车等功率受限的系统中,GPU往往能够在实现这种处理速度的同时提供比CPU更高的能效和成本效益,这一点也很重要。

GPU是为ADAS量身定制的

GPU非常适合汽车自动驾驶和ADAS技术对处理能力的要求,尤其是在图像分析和并行信号处理方面。对于起初为游戏而开发的GPU而言,图像处理是其最擅长的领域。事实上,就计算方面来讲,几乎任何密集并行计算都适合用GPU来处理。

ADAS平台可以利用GPU的图形计算能力去实时处理和分析传感器数据。

这些离散传感器包括:

  • 光探测和测距(激光雷达),用脉冲激光测量到目标的距离。
  • 无线电探测和测距(雷达),与激光雷达类似,但使用无线电波代替激光。
  • 红外(IR)摄像系统,使用热成像技术在黑暗中进行感知。

所有这些使ADAS能够更好地解析环境,并且可提升系统辅助驾驶员和维护自动驾驶汽车安全性的能力。自动驾驶汽车分为6个级别,从完全没有自动化的0级(Level 0)到汽车完全自主的5级(Level 5)。随着我们从2级提升至4级和5级,就越来越需要车内系统能够对车辆所行驶的世界有更详细、更广泛的了解。

下图所示为自动驾驶的不同级别所需要处理的传感器类型和数量。

图1:自动驾驶的不同级别所需要处理的传感器类型和数量

随着自动驾驶系统变得越来越普及、越来越先进,GPU的重要性不断增加——因此性能也在不断提升。于是,GPU成为自动驾驶汽车的主力部件。因为要依靠GPU来提供所需的计算能力,去支持未来的汽车变得不仅能够更好地感知其所处的环境,还能够对环境做出响应,以便确保可靠、高效、安全地行驶。

然而,GPU并不是为加速自动驾驶功能而设计的硬件中最终选择。GPU之后的下一步是专用的神经网络加速器。在过去的20年中,围绕神经网络的应用,特别是卷积神经网络展开了大量的研究。卷积神经网络(CNN)具有通用性强、低成本、低功耗等特点。它是有效的机器学习要素,可用于众多车内应用,例如目标检测、行人检测、路径规划、传感器融合和其他功能等。

例如,我们可以利用卷积神经网络的固有效率从汽车全景视图系统的多个摄像头输入中提取有用的信息。(见下方图片所示“神经网络如何看”)。卷积神经网络本质上是基于计算机的网络,被设计为以类似人脑的方式来工作。神经网络使用不同的数学处理层来逐渐将它们接收到的信息理解得越来越清楚,无论是图像、语音、文本或其他格式的信息。为了使这些神经网络工作,首先必须通过向它们提供大量数据来“训练”它们。
利用卷积神经网络,可以进行图像分类。在道路标志识别系统案例中,数十万甚至数百万以不同角度、距离、曝光水平、颜色和形状设置的道路标志的图像将在系统中运行。一组用于卷积神经网络各个节点/层的系数被建立起来,以便能识别特定的道路标志。一旦经过训练,下一个阶段被称为“推理”,正如其名字所表示的,此阶段网络会对进入传感器的新数据进行推理以判定这是否是一个道路标志。那么,神经网络首先进行离线训练,之后再通过推理来进行实时学习。然而,训练不是在神经网络加速器(NNA)上进行的;训练高精度的网络需要大量的计算能力,其通常是在数据中心内性能经过优化的大型GPU阵列上完成的。

图2:神经网络如何工作:从图像采集到目标识别

卷积神经网络可以在诸如CPU或GPU等通用计算资源上运行,以利用其计算能力。然而,就运行神经网络算法而言,GPU在本质上是比CPU更好的解决方案,它可以显著提高性能,同时大幅降低功耗。在此基础上,如果我们创建专门针对正在运行的网络和算法类型进行优化的专用硬件模块,则可以进一步提高性能及降低功耗。通过驱动功耗和性能这两个指标,我们可以在网络边缘执行高度复杂的神经网络计算,而无需在云端去完成它。

这种方法是神经网络加速器的基础,也是硬件开发的自然演进。最初,早期的桌面处理器并没有将用于加速浮点计算的数学协处理器作为标准配置,而这在今天看起来是难以想象的。诸如电子表格、科学应用和游戏等许多应用都依赖于浮点运算性能,自1980年代后期以来,浮点运算一直是CPU的标准组成部分。在1990年代,CPU增加了板载高速缓存以提高性能,此后基础GPU也被集成至CPU中。到2010年代,图像信号处理器(ISP)和对用于视频流畅播放的编解码器的硬件支持也加入进来。而现在,则轮到神经网络实现其自身在芯片上的优化,并成为网络边缘计算设备的标准组成部分。

图3:嵌入式系统SoC演进

在本地解决问题

在众多案例中,推理可以在云端强大的硬件上运行,但是鉴于多种原因,现在是时候将该功能移至边缘设备上了。在需要快速响应的情况下,在移动网络上运行神经网络是完全不实际的,因为存在延迟,更糟的是还会出现连接问题。将推理移至设备端还会消除很多可能发生的安全问题,而这些问题正在成为汽车行业的隐患。由于蜂窝网络并不是一直可用——无论是3G、4G还是5G,所以专用的本地硬件将会更加可靠,可以提供更好的性能,关键的是,还能大幅降低功耗。

在英国的高速公路上,汽车通常以高达70英里/小时(34米/秒)的速度行驶。在没有本地硬件的情况下,汽车需要预测前方20-200米的障碍以避免碰撞(取决于传感器类型),但由于延迟、带宽和网络可用性等因素,在云端执行这项操作又是不可能的。如果在端侧有一个真正的硬件解决方案,汽车就可以运行多个神经网络,在距离仅有1米时,同时识别和跟踪物体。因此,用于神经网络的GPU和NNA硬件是ADAS和自动驾驶成功的基础。

分而治之

由于ADAS平台对性能水平的要求,需要规模越来越大、功能越来越强的GPU,并且为了确保应用的绝对安全和隔离性,可能需要在一辆汽车上使用多个GPU。这将对自动驾驶汽车的物料制造成本造成影响,给那些对成本敏感的汽车制造商带来不必要的压力。为了降低这方面的费用,平台供应商可以通过利用单个GPU执行汽车中的多项工作来提升其价值和功能性。

现代的大多数汽车上已经装载了GPU,以驱动数字仪表盘和其他多个带有高分辨率屏幕的显示器去显示地图、信息娱乐系统和其他视觉信息。1080p分辨率现在在中档车中很常见,4K屏幕则越来越多地被用于豪华车和商务车。正如我们已经讨论过的,单个GPU硬件已经具有极强的处理性能。然而,使用专门的软件对GPU进行虚拟化,可以发挥出物理GPU的处理潜能,并将其转换为多个虚拟实例。如果硬件具有足够强的能力,单个物理GPU就能够运行多个虚拟工作负载,彼此独立运行,但却位于同一个硬件上。虚拟化技术使GPU能够运行多个自主操作,而无需任何虚拟实例相互了解或以任何方式影响其他虚拟实例。

虚拟化的GPU显然适用于自动驾驶汽车和ADAS场景,因为单个GPU可以同时支持多个应用,从可视化地图和娱乐控制台的操作到处理环境传感器数据以识别道路障碍物,皆可提供支持。不管怎样,如果GPU可以为硬件加速虚拟化提供坚定可靠的支持,那么在汽车应用中从单个GPU启用多个虚拟操作就一定是安全、有效的。

虚拟化软件是完全可靠的,因为硬件为每个虚拟实例分配了完全独立管理的地址空间,并且支持对未正确运行的实例进行重启或刷新。这种工作负载隔离机制是允许GPU共享使用的关键,同时可以保持关键软件(如驾驶辅助系统)不被任何其他进程破坏。

这项功能非常重要:想象这样一种情况,即仪表盘软件的问题会影响驾驶辅助系统的正确操作——这可能会造成灾难性的后果。硬件支持的GPU虚拟化可以提供受保护的运行环境,以确保这种情况不会出现,而制造商也无需为了使用多个GPU而付出额外的费用。

从ADAS平台开发人员的角度来看,基于硬件的虚拟化提供了另一个好处。它实现了更安全的环境以提供各种应用和服务,而无需担心电子系统遭到流氓软件的破坏。这也意味着,汽车不再是一个传统的硬件盒子配上固定的信息娱乐和发动机管理系统软件,而是成为了一个灵活的、可配置的、可通过无线方式更新的软件平台。这使得整车厂(OEM)能够在不影响汽车操作的情况下轻松地换入和换出付费服务,从而提供潜在的新收入来源。

为何选择Imagination?

作为在汽车市场中拥有最大GPU IP市场份额的供应商,Imagination的PowerVR GPU出现在了全世界几乎所有新车上。我们在为汽车行业提供产品方面有着良好的记录,这一经验确保我们能够继续以前沿的设计引领行业走向。

Imagination的PowerVR GPU和神经网络加速器解决了自动驾驶汽车平台开发人员面临的数据处理和可信架构挑战。PowerVR GPU支持完全的硬件虚拟化,将共享GPU的虚拟实例进行彻底的隔离。它们还提供管理和优先处理这些虚拟操作所需的专业知识,以有效地驱动ADAS平台架构,同时提供实现安全、可靠的结果所需的强大性能。

低功耗对自动驾驶汽车而言也至关重要,因为大部分自动驾驶汽车都会是电动的并且依靠电池运行。对控制车辆计算平台的低功耗要求有助于提高车辆的整体性能。PowerVR GPU内部的核心计算架构从一开始就设计为通过精度降低的计算,特别是半精度浮点计算(FP16),来提供快速性能和低功耗。以较低的精度运行(此处的“较低”通常归类为低于32位)是降低嵌入式GPU功耗的最佳方式之一,而且不会对准确性造成明显的影响。Imagination已经设计了FP16硬件,作为区别于全精度FP32硬件的一种单独的数据路径。虽然共享数据路径设计很常见,因为它们在许多方面都比较简单,但是每个路径都有独立的硬件确保Imagination能够提供尽可能最佳的功耗和效率,因为每个路径做出的设计妥协都更少,从而能够更好地完成其需要做的工作。

虽然神经网络加速器是一种固定功能的器件,但是我们可以提高每平方毫米的性能,同时显著降低功耗,且不会影响汽车的整体电子功率预算。为了进一步降低功耗,NNA支持降低精度,同时尽可能减少对图像中捕获的信息的影响。PowerVR Series3NX NNA支持16位、8位精度,还可以满足6位、5位和4位精度。

Imagination还提供了一套工具来支持在GPU和AI加速器上开发、优化和部署神经网络。我们的设计环境提供了一个统一的工具链,使开发人员能够采用多种框架和多种网络类型,并以如下方式对它们进行部署:

  • 部署在作为计算引擎的GPU上。
  • 部署在PowerVR Series2NX和Series3NX神经网络加速器上。
  • 上述两种方式的结合,即利用GPU的灵活性实现一个新的网络层,而其余层则运行在高度优化的、高性能的专用卷积神经网络(CNN)加速器上。

ADAS平台设计人员可以信赖PowerVR GPU,将其作为自动驾驶汽车整体系统架构中一个久经证明的组件,因为PowerVR GPU具有:

  • 一流的能效,
  • 一流的存储带宽利用,
  • 均衡的GPU设计,非常适合汽车的技术需求。

PowerVR GPU为驾驶员和乘客互动最多的系统(大型的高分辨率显示器)提供了更高的性能,并提供了一种适用于更安全、更可靠的下一代ADAS应用的设计。

推荐阅读