毫末的Drive GPT是什么?蹭热点还是真有料?

前段时间毫末搞了个DriveGPT,蹭热点蹭得让业内一顿喷。

今天他们正式做了个发布,给解释了下。

一起来看下。(虽然我没有太理解。)

现在自动驾驶的技术难点在于层出不穷的长尾难题(Corner case)。

背后原因是,目前系统在认知各类驾驶场景时,主要靠的还是人工写规则。

有多少特殊场景,就用多少规则来约束,但始终无法穷其尽。

为了解决这个问题,业内一直在探索“实现端到端的自动驾驶”——感知数据输入、规划决策数据输出,靠神经网络来解决。

而毫末觉得ChatGPT里的GPT,就能为解决问题提供帮助。

什么是GPT?

2018年,OpenAI这家公司基于Transformer提出了GPT。

GPT的全称是生成式预训练Transformer模型,本质上是在求解下一个词出现的概率,这是它的数学原理,每一次调用都是从概率分布中抽样并生成一个词,这样不断地循环,就能生成一连串的字符,用于各种下游任务。

现在被大家所熟知的ChatGPT就是在这样一个模型上进化而来的。但其实在ChatGPT大火之前,GPT就已经用在了其他领域。

比如2021年7月的CodeX,也就是CodeGPT,可以用于代码生成,提升写代码的效率,还有2021年12月发布的WebGPT,可以让GPT利用搜索引擎,主动搜索结果并汇总整理出答案,也就是近期微软发布的New Bing搜索。

所以,在毫末的定义里,GPT本身是一种非常通用的建模范式,能应用的领域非常之多。

特别是在自动驾驶领域,由于在公开的互联网上相关数据几乎没有,所有就会形成一个稀有的垂类GPT。

毫末就把他们这个自动驾驶的GPT叫做:DriveGPT雪湖·海若。

参考的是GPT的建模范式。

本质上Drive GPT定义是自动驾驶领域的生成式预训练Transformer大模型,也是在求解下一个Token的概率,每一次调用都相当于根据前序Token序列生成一个Token,这些Token就相当于自然语言处理中的一个词语,只不过这里的Token是用来描述驾驶场景的。

一连串的Token拼在一块就是一个完整的驾驶场景时间序列,包括了未来某个时刻整个交通环境的状态以及自车的状态。

毫末认为DriveGPT可以这么用:

•可以按概率生成很多个这样的场景序列,每个场景都是一个全局的场景,每个场景序列都是未来有可能发生的一种实际情况。

•在所有场景序列都产生的情况下,能把场景中最关注的自车行为轨迹给量化出来,也就是生成场景的同时,便会产生自车未来的轨迹信息。

•有了这段轨迹之后,毫末希望这条轨迹是可解释的,而GPT模型最擅长的领域便是对话和推理,DriveGPT在生成场景序列、轨迹的同时,也会把整个决策逻辑链给输出。

这样一来,在一个统一的生成式框架下,DriveGPT就可以做到将规划、决策与推理等多个任务全部完成。

思路有了,但具体怎么执行呢?

毫末先讲了讲火山引擎的算力支持。

(这一部分我选择略过)

DriveGPT雪湖·海若的一个关键设计,就是场景的Token化表达,毫末管这种方式叫做Drive Language。

自然语言中的Token很好理解,就是单字或单词,中文的Token词表有5万个左右。

把Token输入到模型,输出则是下一个字词的概率,这种概率分布隐藏了语言中的知识和逻辑,例如:根据一部侦探小说复杂线索,推理出凶手是谁。

Drive Language基于毫末的CSS场景库理论,将驾驶空间进行离散化处理,每一个Token都表征场景的一小部分,目前毫末Token的词表空间是50w个左右。

如果输入一连串过去已经发生的场景Token序列,那模型就可以根据历史,去生成未来所有可能的场景,DriveGPT雪湖·海若就像一部推理机器,你告诉它过去发生了什么,它按概率推理出未来多个可能。

(听起来像是一个自动驾驶场景库的标签管理系统,给很多场景打上了标签?)

DriveGPT的具体训练过程毫末讲得很简单:

•首先根据驾驶数据以及之前定义的驾驶尝试CSS做一个大规模的预训练。

•然后,通过一些在使用过程中接管或者不接管的场景,对预训练的结果进行打分和排序,再用强化学习的思路,把反馈模型认为好的结果排上来,差的结果排下去,最后把参数更新到一个备份模型(Active Model)中。

•整个迭代流程中利用了大量的接管或者不接管的数据,这些数据中隐藏了不同场景下错误的自动驾驶开法与正确的人类开法。

预训练是怎么搞的?

在预训练模型上,毫末从encoder+decoder的结构,调整为Decode-only结构的GPT模型,其中每一个Token就是刚才提到的Drive Language,用于描述某时刻的场景状态,包括障碍物的状态、自车状态、车道线情况等等。

预训练模型使用了1200亿个参数的大模型(是个感知模型?),使用4000万量产车驾驶数据训练(这些数据都有哪些维度?)。

模型本身能够对各种场景做生成式任务,但这些生成结果还需要按照人类偏好去调优,在安全、高效、舒适等维度上做出取舍。

(从下面实验结果的图片来看,生成的是规划路径?)

强化学习又是怎么搞的?

接下来毫末用部分经过筛选的人类接管数据,大概5万个Clips去做反馈模型的训练。

(在毫末的定义里,clip就是一个个场景)

反馈模型的样本使用了这部分实车的接管数据,这些数据经过预训练模型后,可以生成出多种结果,假设是A、B、C、D四个结果,这四种结果都是机器生成的,可以用人驾接管数据去做一个Grading打分模块,用这个模块对四个结果做评分,这样就能产生一组带有偏序关系的Pair样本对,即C>A、C>B、D>A、D>B。

(对规划路径做打分?)

有了偏序对之后,就可以用LTR(Learning To Rank)的思路去训练反馈模型(Reward Model)。

毫末说,这样相当于是把影子模式从车端转到云端,规模更大,效果更强。

如何保证可解释性?

一般基于神经网络的规划都有不确定性和不可解释性,也就是你期待它往左,但它可能会往右,而且你不知道它为什么会出错。

毫末DriveGPT的一个功能是输出决策逻辑链(Chain of Thought)。

在毫末看来,这样就能让生成的驾驶策略就具有可解释性了。

他们利用了prompt提示语技术,输入端需要给到模型一个提示,告诉它“要去哪、慢一点还是快一点、并且让它一步步推理”,经过这种提示后,它就会朝着期望的方向去生成结果,并且每个结果都带有决策逻辑链。

每个结果也会有未来出现的可能性。这样就可以选择未来出现可能性最大,最有逻辑的链条驾驶策略。

毫末举了个例子来说明模型是怎么学会逻辑链的。

毫末做决策逻辑链的灵感来自于早期设计的自动驾驶场景库,场景库有几十万个细分场景,每一个都是自然语言描述的,可理解可解释。

早期只是对每一段驾驶数据做标注,打上这段驾驶过程属于哪个场景,但在做大模型研发的时候,毫末忽然发现如果把一连串的场景串起来,其实就是一个完整的可解释的决策过程了。

比如左边视频是一个连续超车变道后抵达终点Goal的例子,首先会对这段数据做细粒度的场景识别,把完整的超车决策逻辑,拆解为“直行-被压速-左变道-再直行-再右变道超车”等多个子过程。

其次,把带有prompt提示语和完整决策过程的样本交给模型去学习,那模型就能学到一种推理关系,即“要快速抵达路口目标处”,需要“先直行,后左右变道超车,再加速直行”,模型通过大量含有决策逻辑链的样本,就能产生一种推理能力。

下次遇到一个新的指示,例如:“慢点抵达地图上500m处目标点”,它就会生成很多比较“慢”的决策逻辑,有的是“减速跟车”,有的是“路口让行”,开得会稳重一点,那如果你换个prompt提示语,比如让它快一点,它又会重新生成一些“快”的逻辑。

假设提示模型要“抵达某个目标点”,这个提示可能来自于地图导航,未来也可能来自于语音交互时人类的语音指示。

那DriveGPT雪湖·海若会生成很多个可能的开法,有的激进,会连续变道超车,快速抵达目标点,有的会稳重一些,跟车行驶到终点,这时候如果提示语里没有其他额外指示,那DriveGPT雪湖·海若会按照反馈训练时的调优效果,最终给到一个更符合大部分人驾驶偏好的效果。

(但貌似还是没有解决“让它左变道,但它可能右变道”的问题?)

具体怎么用?

DriveGPT据说会有四大应用场景,包括智能驾驶、驾驶场景识别、驾驶行为验证、困难场景脱困。

这次发布会后开放了“驾驶场景识别”的场景,合作伙伴可以用。

然而,这个“驾驶场景识别”的场景,看起来就是个披了个ChatGPT外衣的自动化标注平台。

倒是很厉害,下面这么黑糊糊的一张照片,居然能标注出7辆车、7个灯、3个车道线。

除了DriveGPT,会上我还留意到了一些有趣的点:

DriveGPT会用在最近发布的新摩卡DHT-PHEV上

听到这里,我再一次迷茫了——DriveGPT是指啥。

毫末一共拿了三家主机厂的订单

除了长城,也有了其他车企爸爸了,但不知道三家里有没有包括长城。

2024年城市NOA要落地100个城市

挺考验的。

这页PPT里的“捷径推荐”和“智能陪练”是指什么功能?

自动驾驶公司好喜欢起名字

毫末的员工自己能记全吗?

标题:毫末的Drive GPT是什么?蹭热点还是真有料?

地址:http://www.hmhjcl.com/gzdm/12566.html