导读
本文整顿自 2022 年 12 月的智算峰会 · 主动驾驶分论坛上的同名主题分享。
百度百舸为主动驾驶客户提供从数据上云、数据存储、数据处理、模型训练、仿真平台、车端部署的端到端低成本、高效率的 AI IaaS 解决方案。
数据拜访性能晋升了 5 倍,主动驾驶典型模型训练性能最高晋升 391%,典型模型推理提早最高升高了 90%,模型仿真老本升高了 60%。
本次演讲文字内容如下。
明天给大家分享的主题是对于百度智能云的 AI IaaS——百度百舸 · AI 异构计算平台,是如何通过跟主动驾驶场景的深度联合,助力于主动驾驶业务疾速倒退和迭代。
一、主动驾驶的技术成熟度与市场接受度越来越高
从一些公开的数据咱们能够看到,主动驾驶的渗透率也是越来越高。到目前为止,L2 以上的主动驾驶渗透率曾经达到了 23.2%,L3、L4 这些更高阶的主动驾驶的能力也越来越成熟,取得越来越多的认可。
以百度为例,基于 L4 的 Apollo 当初的日单量曾经过万。从另外一个数据来看,新能源的汽车销量也日益增长,到目前为止单月都曾经超过了 60 万台,这也证实了中国消费者的生产志愿十分高,生产后劲十分大。
因而,从主动驾驶的维度来看,无论是相干技术的成熟度、市场的接受度,还有用户生产的后劲都十分大,所以说齐全智能驾驶的智能生存也是不可企及。
二、构建主动驾驶云遇到的重要问题以及端到端的解决方案
为了让主动驾驶技术更快地倒退,咱们须要越来越多的数据,也须要越来越大的模型,笼罩越来越多的场景,这些都要求相干企业去构建一个高效的主动驾驶云。
那咱们在构建高效的主动驾驶云的过程中,遇到的最大问题是什么?其实就是老本问题——数据这么多,模型这么大,迭代一次就须要破费极大的老本和工夫。
那么怎么样能力让资源的效率失去更充沛的施展,让模型端到端更快地实现,让研发的效率更高。这也就是咱们在构建主动驾驶云的过程中须要去思考的十分重要的几个问题。
百度百舸 · AI 异构计算平台针对这些问题,为大家提供了一个低成本、高效能的 AI IaaS 解决方案。
在整个解决方案中最底层,就是咱们的 AI 计算和 AI 存储,为大家提供极致老本的算力和存储。基于此之上,咱们将主动驾驶和 AI 场景联合,丰盛了咱们 AI 减速和 AI 容器相干的一些能力,同时通过一些减速伎俩和资源效力晋升的伎俩,来解决方才介绍的主动驾驶云构建过程中的极致老本和极致效率相干的问题。
百舸和主动驾驶是如何联合起来的?
当初先进的主动驾驶解决方案都心愿去实现数据的闭环,让模型能够自动更新以及主动迭代。
在一个残缺的闭环中,它波及到这么几个环节,包含数据上云、数据存储、数据处理、模型训练、仿真平台,还有车端部署这几个环节。车端部署的模型又源源不断产生新的的数据持续上云,以此一直迭代,模型继续的更新。
在这些不同的环节中,对咱们底层的云平台或者根底云平台的诉求不尽相同,须要咱们的存储和计算尽可能快、尽可能便宜。
因而,针对主动驾驶这种具备海量的车数据、大规模数据处理(或者说标注工作)、非凡的感知模型、大规模的仿真工作等特点的业务,百舸的解决方案在 AI 减速、AI 存储场景下与其进行深度联合,为大家提供丰盛的 AI IaaS 产品。
这些产品包含咱们的 AI 减速套件中的数据湖存储减速 RapidFS、模型推理减速 AIAK-Inference、模型训练减速 AIAK-Training,以及针对大规模容器解决的 AI 容器调度平台。
咱们心愿通过这些相干的组件和产品,让主动驾驶云平台端到端地取得极致的性能和极致的老本,所以接下来也是针对这几个方面来给大家做相干的介绍和论述。
三、百度百舸的数据存储与解决计划
3.1 车端数据上云后的存储计划
数据上云之后遇到的第一个问题是存储问题。
车端的数据上云之后,其实还须要做各种各样的解决,包含从原始数据中提取出主体数据和敏感数据,将原始数据归档等等。这些不同的操作对存储系统的拜访频次是不一样的,因而对存储系统的要求也是不同的。
因而,百度百舸 · AI 异构计算平台首先为大家提供的是一个分级的存储底座,这里包含了极低成本的冷存储系统和归档存储系统,也包含了高性能的并行文件存储系统,总计有 6 级的分级数据湖存储的能力。并且基于咱们对立的数据管理,这些数据在不同级别的存储系统之间还能够自在的迁徙。
除此之外,为了放慢这种数据处理的效率,咱们还提供了三大类、30 小类的智能解决的计划,在数据侧极大地晋升了咱们数据拜访和业务解决的效率。
3.2 车端数据上云后的减速计划
除了存储侧,咱们在计算侧也提供了分布式的 I/O 缓存零碎 RapidFS,将咱们的数据迁徙到计算侧就近的内存中,这样让咱们数据的拜访更快、更极致。
RapidFS 具备三个方面的显著特点。
首先就是按需弹性、极致老本。咱们复用计算端的存储的资源,也就是说没有额定的去减少额定的存储老本。同时在这个过程中,咱们会动静的感知数据处理工作、AI 训练任务,以及对内存、对存储相干的需要,从而去动静的调整 RapidFS 所应用的内存或者存储的容量,这样就保障咱们取得极致 I/O 的同时对计算的工作也没有多大的影响。
第二个特点是极致性能。RapidFS 通过将计算侧的内存池互联起来,形成一个极大的分布式计算池。这样即便针对大规模的数据拜访,咱们都可能实现就近拜访,升高了百微秒的提早。
第三个特点是数据的自动更新迭代。当数据产生一些变动或者产生一些更新时,咱们会主动的同步或者加载到咱们的缓存零碎中,这样缩小了人为的一些工作,极致的不便。基于这些数据技术的加成,通过 RapidFS 能取得一个靠近于本地盘的数据拜访成果,将咱们数据的拜访性能晋升了 5 倍。
四、主动驾驶的模型推理和训练减速
介绍完数据的存储和拜访之后,数据就会进入到数据处理的环节。
在整个主动驾驶业务的数据处理环节中,无论是数据过滤,还是数据标注,仍然依赖很多人工的工作。为了进一步晋升数据处理的效率上,很多先进的主动驾驶解决方案都开始尝试引入模型来去做数据处理的减速,通过模型来去过滤数据,以及实现图片的预标注。
4.1 AIAK-Inference 推理减速引擎
AIAK-Inference 推理减速引擎也是应这种日益增长的数据处理端的算力增长的需要和减速的需要而生。
作为一个云原生的推理减速引擎,AIAK-Inference 的一个显著特点就是基于多引擎的形象,将百度外部的许多高效的通过大规模验证的推理减速引擎给集成起来。因而 AIAK-Inference 在云端一推出,就具备了很好的这种模型减速的能力。
为了减速主动驾驶业务在数据处理过程中主动解决的效率,咱们也针对数据处理过程中所用到的局部经典的模型的一些典型构造,在算子层做了专门的优化。
这也就是咱们在 PPT 中展现的整个 AIAK-Inference 的一个层次结构。
为了让咱们模型的训练效率足够高,咱们须要去解决三个方面的问题:模型的计算量、GPU 卡的等效算力以及 GPU Kernel 的开销。
因而,咱们也是基于下方 PPT 上这样一个简短的公式,逐渐去谋求模型性能的极致。与这三个指标绝对应的其实就是模型的精简,单算子的优化,以及算子的交融。
左下角也放了一些咱们 AIAK-Inference 中罕用的一些减速伎俩。在这些减速伎俩中,包含业界比拟通用的量化层面的一些优化,也包含咱们针对于主动驾驶模型中非凡的一些构造所做的非凡的算子交融,还包含咱们在整个剖析过程中所发现的那种效率非常低的算子的高效实现。
通过这些相干的优化伎俩,使得咱们在数据处理过程中所用到的模型的计算效率晋升了 40%-90%。
4.2 AIAK-Training 训练减速引擎
当数据处理实现之后,咱们就将数据送入到了 AI 训练与模型训练的环节。模型训练也是在咱们整个主动驾驶云中最耗时间、最耗老本的一个环节。
从一个模型训练的过程来看,它其实分为数据的加载、前向的计算、参数的更新等等这些环节。任何一个环节的性能问题都会导致整个模型训练的性能受到影响。
因而,AIAK-Training 训练减速引擎是一个面向 AI 训练全生命周期的全链路优化的产品。这外面包含数据加载过程中的显存优化,也包含前向计算过程中的算子优化,即损失函数中的算子优化,甚至包含咱们在梯度更新过程中的分布式相干的组件,让整个的模型训练可能取得一个最大化的晋升。
在咱们的实际中,针对典型的一些模型训练的优化往往会遇到一个问题——因为模型跟框架的耦合度会十分高,使得第三方的客户或者第三方的合作伙伴在利用起来的过程中须要去批改比拟多的代码,用起来比拟麻烦。所以 AIAK-Training 针对于框架的几大组件进行了相干的形象。
咱们形象出了 AIAK.OP、AIAK.IO、AIAK.Loss,甚至和分布式相干的几个组件,这样用户仅仅须要批改几行代码,就可能享受到咱们 AIAK-Training 所实现的各种减速的性能。
另外,针对不同的模型,基于模型构造的复杂性,还有基础设施环境的复杂性,不同的优化策略在不同模型上有时候可能会存在负的收益。因而,咱们当初 AIAK-Training 正在研发的实际上是基于一个主动调优的策略。
通过实时的跟踪运行过程中的各种性能指标,再动静的去应用咱们所配置的各种优化能力,这样让整个优化能力可能失去更好的泛化。AIAK-Training 实际上通过模块化的设计,可能让咱们这种训练的效力失去一个十分大的晋升。
为了谋求训练的极致性能,咱们跟踪的次要有两个指标,一个是单卡自身的训练性能,另一个是多卡之间的并行效率。
这也对应着上面说的三个事件:数据的加载优化、模型计算的优化、以及多卡并行的优化。所以在左下角也列出了咱们在 AIAK-Training 过程中所实现的一些典型优化能力。
在这里须要强调一下,在咱们的计算优化和 loss 优化的过程中,针对主动驾驶模型在训练过程中所遇到的非凡的模型构造,甚至非凡的训练形式做了业余的优化。
这样联合后面所说的 I/O 优化、分布式优化,让咱们在整个训练过程中的模型性能失去了极大的晋升。右下角咱们也展现出了一些模型的性能数据,包含雷达、视觉、以及多模态交融的模型。均匀来看,咱们能够取得 50% ~ 391% 的效率晋升。
五、AI 容器的任务调度和资源池化
除了后面介绍的能力以外,百度百舸 · AI 异构计算平台还有一个外围的杀手锏或者外围的亮点,就是大规模的 AI 容器的调度。
在整个主动驾驶云平台以及主动驾驶的工作中,包含后面的数据处理和模型训练,甚至咱们没有开展的仿真平台,都有大量的工作在并发执行。数百训练任务、数千仿真工作在并发执行是一个常态。
所以咱们 AI 容器相干的性能能够提供大规模调度的能力。首先它为了撑持起大规模的任务调度,为大家加强了 AI Job Operator、异构加强调度器等外围组件。
除此之外,为了让底层 CPU 和 GPU 的资源充分发挥进去,咱们还继续地做深咱们底层的池化技术。通过这种 CPU 与 GPU 解耦的形式,造成 CPU 资源池和 GPU 资源池,最初让整个资源效率充沛地施展进去。
在 AI 容器这一块,我想跟大家分享池化技术。
5.1 GPU 容器虚拟化
第一个局部就是 GPU 容器虚拟化,这也是咱们介绍百度百舸 · AI 异构计算平台的时候常常会着重介绍的内容。
因为咱们的工作是多样的,所以对资源的需要也是多样的。以后基于这种独占卡的应用形式,使得咱们资源的利用效率总是得不到充沛的施展,所以咱们的 GPU 容器虚拟化,给大家提供了这种 1/4、1/2,甚至更细力度的这种容器的应用能力。
在最新的容器虚拟化 2.0 中,除了方才提供了根底的隔离的一些资源分配的能力之外,咱们还重点加强了编解码的隔离、显存超发这些相干的高阶能力,让咱们底层的资源效率能取得进一步的晋升。
咱们以前说 GPU 容器虚拟化,常常应用的是基于用户态劫持的容器虚拟化计划。在越来越多的云平台场景下逐步对资源隔离的要求越来越高。基于这一点,咱们在 GPU 容器虚构 2.0 中实现了咱们基于内核态的容器虚拟化计划。
除了取得如用户态的性能以外,咱们在内核态也能取得更好的隔离性。这样就能够满足在云平台下各种各样的需要。也就是说基于这种双引擎的虚拟化计划,让 GPU 利用率在更多的场景下能充沛地施展进去。
5.2 近程 GPU
除了 GPU 容器虚拟化技术,在咱们的池化技术中,另外一个就是咱们的近程 GPU。
在咱们剖析主动驾驶工作过程中发现,有一些数据处理、仿真相干的工作,在应用 GPU 资源的时候是间歇式的,包含开发人员应用 GPU,它的应用也是间歇式的。这样就导致了调配进去的 GPU 有大量的工夫都处于闲置的状态,这样近程 GPU 就应运而生了。
近程 GPU 具备这样四个特点:
- 第一个特点是资源解耦。因而当咱们申请 CPU 和 GPU 资源的时候,能够采纳任意的配比,这样就突破了咱们单机层面 CPU 和 GPU 资源的硬配比的一个限度。
- 第二个特点是动静挂载。就是让间歇式的工作在须要的时候去挂载,在不须要的时候就开释。这样也极大的升高了这些工作的资源耗费,同时也能够让调度零碎去调配更多的工作,让咱们底层的 GPU 的资源效率失去了充沛的施展。
- 第三个特点是动静隔离。咱们在后端实现了依据工作的自身的需要动静的去调整算力和显存的隔离能力与资源的调配。
- 第四个特点是通明容错。因为应用了独立的资源池,咱们还实现了通明容错的能力。这样当后端的 GPU 发现故障的时候,咱们会将 GPU 上的工作透明化,让业务无感的迁徙到一个新的 GPU 上持续运行,让整个 GPU 的稳定性也失去了极大的晋升。
对于近程 GPU 的技术,咱们当初针对开发场景、仿真训练、数据处理这种间歇式的工作,曾经实现了较为欠缺的适配,能够取得不亚于本地盘的吞吐性能。
针对于一些敏感的推理场景、或者说训练场景,相干的适配和研发还在进行过程中。同时近程 GPU,因为应用了比拟先进的资源应用形式,在百度外部也取得了越来越多的利用。
百舸外围能力咱们就先介绍到这里。基于这些外围的能力,百度百舸 · AI 异构计算平台在厂内外也取得了十分多客户的应用和打磨。
六、经典案例
基于咱们所服务的一个头部车企,它也遇到了后面所说的训练效率低下、GPU 资源效率低的问题。借助于咱们后面的端到端的减速能力以及池化技术,帮忙它的模型训练性能晋升了 170%,GPU 的资源效率晋升了 2.5 倍,十分的无效。
除了内部以外,百度百舸 · AI 异构计算平台作为百度本人的主动驾驶解决方案 Apollo 的底层的算力底座,也是通过端到端的减速计划,还有资源调度的能力,助力于 Apollo 的数据闭环,可能实现周级别的 OTA。
它的仿真可能履行日行百万公里的更新,让咱们的百度 Apollo 的能力也取得了一个极大的晋升。
好的,我明天要给大家分享内容就到这完结了。
——END——
举荐浏览:
百度工程师带你玩转正则
Diffie-Hellman 密钥协商算法探索
贴吧低代码高性能规定引擎设计
浅谈权限零碎在多利熊业务利用
分布式系统要害门路提早剖析实际
百度工程师教你玩转设计模式(装璜器模式)