徐征:“云智一体”——助力自动驾驶技术能力提升,开启自主可控新范式

梦还惊客 菜系 5

专题:2024中国汽车软件大会

徐征:“云智一体”——助力自动驾驶技术能力提升,开启自主可控新范式-第1张图片-特色小吃做法

  11月7日-8日,2024中国汽车软件大会在上海嘉定召开。百度智能云自动驾驶方案专家徐征发表演讲。

  以下内容为现场发言实录:

  尊敬的各位领导、各位来宾,亲爱的同仁们,大家下午好!

  非常高兴能有这样一个机会和大家一起来分享百度智能云在汽车行业过去一年来的一些探索和实践,百度作为国内最早布局智能云和自动驾驶的企业,我们一直积极地向行业输出产品、技术和服务,推动汽车智能化的快速发展。在过去一年中,在汽车智能化的大方向上我们可以看到讨论最多的是大模型上车,第二个是端到端的自动驾驶,虽然到目前为止,端到端在量产车辆上数量还非常少,但是我们可以肯定的说端到端已经被认为是个行业共识的自动驾驶的技术路线。在端到端研发,包括在分模块的算力、数据包括工具链都发生了一些比较大的变化。在过去一年百度也是在积极探索和开发,围绕端到端自动驾驶的这样一个基础平台。

  所以今天我想给大家分享的题目就叫做《云智一体 助力自动驾驶技术的能力提升,开启自主可控的新范式》。下面我们看一下,这个是从一个抽象的角度来介绍一下我们百度智能云自动驾驶解决方案的一个全景框架。在底层的话其实是我们的公有云、私有云、边缘云,由它提供基础的这样一个云服务、传统的这种CPU云。然后在之上的话,因为针对自动驾驶这样一个AI算力需求,我们有一个AI的大底座,这里进行AI计算、存储、网络、加速,包括AI的容器。

  然后在这个底座之上会有一个异构的计算平台,这个异构计算平台后面我会讲到它为什么非常重要,并且在可预见的未来应该是决定着在大模型这样一个AI算力上能力的高低。其实这个下面就像一个冰山一样,下面这一部分是埋在水下的,谈的比较少,其实这些是百度真正花了很大的力气来打造的一个平台。之上的话是大家接触比较多的,也是谈论比较多的,和各位这种智驾的尤其研发工程师比较紧密的,像工具链包括各种的应用场景,这是一个展开来看的一个系统架构。

  今天我要分享的主要是两部分,第一个是AI的底座,这一部分是因为这部分和我们过去一年的趋势,也就是我们端到端自动驾驶包括大模型上车紧密相关的,并且这一部分是在飞速发展,这一部分有比较高的一个门槛。第二部分是个自动驾驶工具链,这一部分工具链也是因为和各位同仁工作联系比较紧密,所以今天我的分享主要围绕这两部分展开。

  首先,我们自上而下。在工具链层面,百度在3年前就首先发布了这样一个叫做自动驾驶云或者叫汽车云的1.0版本,当时这个1.0版本针对的是一个传统的智驾开发的这样一个模型或者叫做范式。也就是说,它是一个基于这样一个感知、规控分模块的模式,我们来进行数据的采集、数据的纳管,然后进行模型的训练、进行仿真、最后模型的上车,打造我们叫做数据闭环。这也是前两年很热门的话题,不断加快这样一个数据飞轮。

  这个平台的一个特点,这里有几个数据,一个是在这个平台上运用了通过AI进行自动驾驶的预标注,数据的预标注,可以达到92%的准确率,这部分可以大概降低人工标注成本50%。同时,支持这样一个数百PB的数据的全生命周期的托管。然后支持周级别的算法的迭代,这是当时的1.0版本。

  到了2.0之后,也就是自动驾驶逐渐走向量产之后,然后遇到了大量的在量产当中的长尾问题,针对这些问题我们推出了2.0版本。2.0版本特点,它是基于提供更多的包括场景的覆盖、数据的覆盖,包括我们百城的地图数据的覆盖,千级以上的数据挖掘的类型、千万公里仿真场景,包括千万级的场景库的构建,所有这些更多的是解决自动驾驶问题当中的这些量产长尾问题。

  最近一年,结合着这个趋势,更多的精力我们花在这个端到端和车路协同,也就是我们现在提到的3.0版本。3.0版本主要针对的一个是端到端,端到端其实它和大模型有很多的相似地方,我们知道大模型都有一个叫scaling laws,scaling laws里面有两个重要的维度,一个是数据一个是算力。针对数据,我们有端到端这样一个数据生成,来支持端到端的仿真,来提供这种海量准确的数据。第二部分,针对这个算力其实我们打造了百度的百舸,加上我们自己开发的昆仑芯国产GPU来支持端到端训练算力的需求。

  另外是路侧数据的打通,这部分我后面会提到,它非常重要。因为我们做端到端、做自动驾驶其实我们瞄准的是L4,传统这种单车智能在L4上会有理论上的缺陷,这也是为什么我们一直在强调车路协同。后面我会展开,介绍一下这几个特点、这几个特性到底在说什么。

  一个是端到端的这样一个仿真,其实在传统的仿真的话,它更多仿的是规控环节,但是到出现问题的时候,这些工程师更多是调网络或者调数据,从这两方面进行优化。但是到端到端之后有很大变化,出现Corner Case的时候,可能我们并不需要调网络,网络是保持不变的。把更多的优先级或者精力放在这些数据的优化上,也就是说我们需要更多精准的海量数据(维权),这些数据从哪里来?有两个部分,第一部分就是我们已经在路侧,千万公里路侧已经有一个大量的场景库,包括这些视频、点云等等大量的数据,核心的问题是怎么把这些有用的数据挖掘出来,这里就有个大模型的智能搜索平台。

  第二部分是长尾数据合成,仅仅靠路侧采集的话这个成本非常高的,随着技术的发展其实我们发现现在可以自动生成一些场景、自动生成一些数据,并且效果也还不错。这个时候我们有一个叫做数据生成的一个平台,同时还有一个仿真场景,也就是我们基于这样一个端到端的仿真,它更多是基于这样一个真实场景的场景级别的效果验证,而不再是仅仅验证规控这个环节,这是支持端到端的仿真。

  第二个是支持端到端的训练,训练来讲目前最大的一个瓶颈或者痛点就在算力,目前本质上是一个暴力的计算,然后在算力方面主要围绕着3个方面做提升,第一个叫做异构芯片的多芯混训,后面我会提到,也就是说我们把不同厂家、不同型号的这些芯片把它组在一起、组成一个集群,这个集群可以让它完成同一个任务,这样可以极大地利用历史资产。

  第二个是全链路模型的训练优化,这样是提升利用率。很多人买了大量的GPU卡之后,其实这个集群的利用率是很低的,大量的时间包括算力都是处于空闲状态,在这种情况下我们通过软件的方式提升集群的利用率,也就是变相的你可以买到更多的卡。

  第三个,支持一个超大集群的,也就是万卡集群的稳定的训练,这一部分是非常重要,因为量变产生质变,当一个万卡集群的时候是不可避免地出现各种故障。如何让这个故障不影响训练的效果或者不影响训练的效率,是在端到端训练里面要解决的一个非常重要的问题。

  第三部分,车路云协同,其实我们发现不管在高速还是在城市里面其实有大量道路的一些数据,这些数据对自动驾驶非常有帮助。百度也一直在和监管部门包括一些道路资产的运营部门在合作,把这个车的数据和交通的数据能够打通,这样的话可以使自动驾驶能够更加的安全、高效。

  这个是我们直观来看一下,这个工具在干什么,因为时间的关系我就不放视频。第一个,左边部分看到的是智能搜索,传统的搜索大家还是靠打标签的方式,结构化的一些标签,这个是费时费力的。还有一个更大的问题,随着技术的迭代有些标签它不能满足需求了,还要再重新打一遍。这种情况下成本是非常高的,但是我们发现随着过去一年语言大模型、视觉大模型技术的发展,然后我们在探索是不是可以把这些技术结合起来提高数据搜索的效率。在此基础上我们打造了一个基于视频特征库和图片特征库,同时结合语义的信息,然后完成这种跨模态的搜索,这方面比如这里左侧叫以图搜图。比如我有一个很难描述的场景,假设说就是一辆车,它长得很奇怪,这个车我不知道怎么描述它,以前也没有打过标签,这个时候最简单的一个方式就是我去丢几张图片,它长的什么样,然后去搜一下。如果效果不好的话再丢几个反例的图片,这样把以前可能需要花周级别或者月级别的这样一个数据挖掘的任务,实现到这种分钟级别或者秒级别,这个叫做智能搜索。

  第二个,难例的挖掘。这部分主要是以文搜图,也就是比方说你可以通过语义和图片和这个视觉的结合,来定向挖掘各种难例数据。比如说这里,我们这个特殊类型的环境感知,比如说破损路面遇到车辆。还有特殊的复杂的一些场景,比如在夜晚骑着电动车等红绿灯的人,然后还包括这种空间关系的组合、精细化的搜索,比如在这里就是一个堆积货物的货车,非常幸运的是语义大模型可以理解什么是堆积货物,所以我们可以直接搜索出来堆积货物的货车。它就可以把它精细地给挖出来,这些都为大模型或者端到端提供了这些准确的和海量的数据。

  但是光靠现有的数据,也就是我们传统的模式下的道路采集、数据挖掘,它不能满足端到端的要求,原因就是因为端到端模型训练它其实对数据的覆盖度要求非常高。这种情况下,其实我们就考虑到在进行探索这种智能场景的数据生成,并且效果是非常好。这里包括比如消除动态元素,这种场景也就是说我们通过采集之后,把这些动态元素消除掉以后得到一个更为通用的、更为基础的一个场景,在这个场景上我们结合着第四条,也就是叠加虚拟元素就可以形成千千万万的泛化的真实场景来供模型进行训练,包括不同的角度,比如说主车的视角,包括改变天气环境等等,这些都比较好理解,因为时间关系视频不一一播放,这个看上去还是非常直观的。

  同时,在一个端到端的仿真里面,另一个提升就是我们在仿真的时候除了这种对规控的仿真,除了对单车的仿真之外,再更多的是针对这个场景的一个整体效果的验证,或者说一方面来讲是针对单车来讲它不再是只验证规控环节,而是验证某个场景下的端到端的效果。  

  第二部分,从单车到整个宏观的角度,因为大家都知道百度在做Robotaxi,我们做萝卜快跑,萝卜快跑追求商业化,在这种仿真里面它非常关注的一点是运营的效率,在运营的效率里面它除了单车的智能之外,我们更多的要看比如我们在北京投放一辆车、投放一个车队,和在武汉投放一个车队,它们的交通流是完全不一样的,我怎么样提高整体的车队的安全度、提高整体车队的运营效率,其实涉及到的就是更宏观的或者我们叫做交通流的模型。在交通流里面我们实时地采集交通真实的状况。

  第二个,可以来建模,也就是说在这个环境里面不同的交通参与者他们的一些行为模式,然后不断和真实情况来做对比,从而提高自动驾驶的效率。我们自动驾驶最终是瞄准L4的,L4最重要的一个场景或者绝大多数的一个场景其实是共享出行,也就是Robotaxi,在共享出行里面不仅仅看到单车,我们要看到整个车队的、整个城市的运营效率。

  刚才一部分更多介绍工具链,这部分跟业务紧密相关。下面这一部分介绍更多的是我们叫做百舸平台,也就是我们的AI大底座,AI大底座更多解决的是算力的问题。就像刚才提到的,在算力问题中第一个来讲就是异构芯片的多芯训练,这部分解决的问题是,我们知道很多车厂包括这些自动驾驶公司其实都买了大量的卡,但是这个卡是在不同时期买过来的,有英伟达的卡、有国内的卡,英伟达的卡有不同的型号。

  现有的局面基本上是同一类型的卡或者同一型号的卡组成一个小集群,这个集群里面完成一个单一的任务,比如完成一个推理任务、一个训练任务。但是随着芯片的不断迭代之后,这种芯片的厂家和它的型号越来越复杂,如何让这些不同型号甚至不同厂家的这些卡在一个集群里面运行,这是一个非常重要的问题。这个问题难度其实非常大,大家知道GPU卡的话,不同的供应商从他们的通讯协议、架构、算子库都是不兼容的,百度做了一项工作,基础型的工作,就是我们把所有这些卡把它兼容起来。第一步实现的,也就是在单一集群里面各种不同厂家的卡、不同型号的卡可以混布在一起做训练。

  第二部分,这件工作当然也可以去做,前提是这样做下去不会造成性能的损失。性能损失很好理解,比如性能高的这些卡在完成任务的时候它跑的快一些,它跑完之后它就等,等着那些性能差的这些卡再提交任务。这个时候这些性能差的卡就形成了一个瓶颈,我们如何来消除这些瓶颈,这是一个非常基础性的工作。通过过去一年的时间,我们可以做到在万卡集群算力损失少于3%,也就是说基本上你可以看不到差异。

  当我们完成了集群的混布之后,还有一个重要的课题就是算力的利用率是很低的,我们如何来提高算力的利用率,算力利用率很低后面根本的原因就是,在GPU里面它的计算这一部分的性能是非常高的,但是它的存储和网络这部分性能相对来讲弱一些。所以往往造成计算任务完成之后在等数据,这样等待的时间占了大量的时间,这个时候造成性能的瓶颈。

  所以说,针对利用率的提升,其实我们做了多重的优化工作,包括显存优化、算子优化、存储优化和网络优化,这些我就不一一展开,因为这些非常工程化,包括这些并行优化。但是大家可以想象的就是,它和交通流的模式非常相似的。也就是说我有多个任务的话,当它没有一个很好的优化管理的话,比如在上海这个城市,当大家都去出行的时候,我为了保证不拥堵可能需要把车道修到8车道、10车道,这是通过硬件来提升。但是通过这种软件优化之后,然后我通过合理的协调,通过不同的策略包括像绿波等等,大家可以并行的来出行。这样我们可能不再需要8个车道、10个车道,可能只需要2个车道、4个车道,通过这种精细化的控制就可以使效率得到提高,使出行不会产生拥堵,其实优化部分核心解决的就是这样一个工作。然后实际效果来讲,大家可以看到在训练方面,对于一个70B的模型,这也是目前主流的一个训练模型的规模。然后1.4T的语料在传统的,就是在没有优化前通过A800的这样一个卡大概需要21天的训练时长,然后通过这个优化之后。21天训练时长在传统的没有优化之前大概需要2000卡的A800,然后通过优化之后大概可以节省23%的算力。

  然后在推理这个应用里面,这是一个真实的案例,也就是日活500万的AI应用,在传统没有优化之前大概需要178张的A800的卡,通过优化之后大概可以节省55%的算力,这个节省的算力就是真金白银的降本增效。

  第三部分解决的是稳定性的问题,稳定性的问题核心来讲,我们其实看到下面有个公式,在整个万卡集群这样算下来它总归有些故障点,有一些硬件它失效,失效之后理论上就会造成任务的无效训练时间。这部分算了一半之后卡坏了,那我就要回到上一个保存的点重新再来算,这个就是从上一个我们做的那个保存点到失效的这个部分,其实就是个无效的训练时间。我们如何压缩无效训练时间就是核心问题,压缩无效训练时间根据这个公式的话主要是3个方面。

  一个是降低故障的中断次数,当然硬件的故障我们是没办法降低的,但我们可以通过平台、多维的故障感知之后,通过平台级的容错来使得在平台训练的任务层面让这个任务不中断。第二个,就是中断之后它有两个时间,就是是一个故障的恢复时长加上故障的重算时长,这部分也就理解为就相当于这个硬件坏了之后我这个还没算完的这些任务就白算了,我如何减少白算的这些任务,这一部分就是通过多维的容错处理、包括这个节点的维修、秒级的冷迁移恢复、自动故障隔离、自动任务调度等等来减少这个时长。

  第三部分是常态写Ckpt,因为有故障所以每隔一段时间我们就要把工作保存一下,就像一个快照一样,我们把现有的训练保存一个快照,这个叫Ckpt。但这个写Ckpt是一个非常长的时间。在这一部分我们就用了一些技术包括秒级的Ckpt写入,异步的加速、包括分布式加速等等来降低Ckpt的总时长。

  最后可以使我们万卡集群的有效训练时长达到98.8%,带宽的有效性达到95%。这是一个非常了不起的成就,这也是大家知道背后除了技术本身的领先之外,核心的还是要降本,尤其是在这种大模型领域。

  最后一部分我们要说的是这样一个车路云的协同。我们看到左侧有各种各样的Corner Case,其实有些Corner Case就是从纯粹的这种单车智能的话,不管你有多么领先的激光雷达等传感器,它有些遮挡或者有些天气情况就是失效,理论上它就是在ODD可运行之外的。也就是说,对于这一些部分的话其实单车智能并不是唯一的一个途径,而对于这一部分Corner Case的话,其实对于道路的资产管理部门来讲他们有非常精准的数据、非常实时的数据,这些数据百度就一直在,和监管部门合作,希望这些数据能够来和车端的数据能力来融合,从而形成一个上帝视角的路面情况。这种情况下就可以极大地提高车辆的安全性,因为有些Corner Case,说实话靠单车智能是无法去解决的,也就是说解决的一个路径可能就是车路协同。其实中国在车路协同方面是有一定优势的,包括我们的这种5G的这些网络基础设施建设,包括有一个强力的大政府,就是我们可以建立这种联盟、这种标准。在这一方面我们在去年也和广交集团做了非常多的一些探索,取得了一些比较好的成果,包括这两天大家看了上海汽车城在这方面也是走在前列。

  我们相信,车路协同在L4自动驾驶场景里面会越来越重要。这样我们也非常希望和各位行业同仁一块努力,共同打造这样一个有中国特色的、基于车路云一体的,世界领先的自动驾驶解决方案。

  我的分享就到这里,谢谢大家!   

  (注:本文根据现场速记整理,未经演讲嘉宾审阅)

抱歉,评论功能暂时关闭!