清华大学和理想汽车合作提出了DriveVLM端到端大模型,即论文DRIVEVLM: The Convergence of Autonomous Driving and Large Vision-Language Models,10位作者中,清华IIIS和理想汽车各占一半。
截止2024年3月底的端到端大模型性能对比
上图的端到端大模型性能对比,数字越小越好,DriveVLM排名第一,且与第二名拉开的距离颇大。
以能否得到反馈为标准,端到端自动驾驶的学术研究主要分为两类:一类是在模拟器比如最常用的CARLA中进行,规划的下一步指令可以被真实的执行;第二类主要是在已采集的现实数据上进行端到端研究,主要是模仿学习,参考UniAD。后者的缺点就是无法闭环,不能真正看到自己的预测指令执行后的效果。由于不能得到反馈,开环自动驾驶的测评极其受限制,研究文献中常用的两种指标分别是L2 距离:通过计算预测轨迹和真实轨迹之间的L2距离来判断预测轨迹的质量,Collision Rate: 通过计算预测轨迹和其他物体发生碰撞的概率,来评价预测轨迹的安全性。
DriveVLM的模型pipeline
上图是DriveVLM的模型pipeline,主要包括场景描述、场景分析、层级规划三个主要模块设计。其中,场景描述模块的功能主要分为两部分——环境描述和关键物体识别。
环境描述主要是对共性的驾驶环境的描述,比如天气和道路状况等;
关键物体识别则是为了找出对于当前驾驶决策产生较大影响的关键物体。
环境描述包括四个部分:天气、时间、道路类型、车道线状况。
天气(E_weather):描述了当前驾驶场景的天气状况,比如晴天、下雪等。像雨雪或者雾天这种天气状况自然会需要更加谨慎的驾驶策略。
时间(E_time):描述当前的时间段,比如白天还是夜间场景。像夜间场景由于能见度低也需要采取谨慎的驾驶策略。
道路类型(E_road):描述当前驾驶所处路段的类型,比如城市、高速、乡村等。不同路段可能存在不同类型的挑战,即需要不同的驾驶风格。
车道线状况(E_lane):提供了车道线状况的描述,包括自车所处车道和潜在的车道线选择。这些信息对于车道的选择和安全变道至关重要。
区别于传统自动驾驶感知模块将所有待检测物体都检出,DriveVLM 专注于识别当前驾驶场景中最有可能影响自车驾驶决策的物体,称之为关键物体,因为全部都检出会消耗天量算力。得益于理想汽车累积的海量自动驾驶数据的预训练以及开源的大模型,VLM相较传统3D目标检测器能更好地检出长尾的关键物体,比如路面杂物或非常见动物等。对于每个关键物体,DriveVLM会分别输出其语义类别c和对应的2D目标框b。预训练来自NLP大模型领域,因为NLP用的标注数据很少,很昂贵,预训练首先利用海量的未标注数据训练,找到语言结构特征,然后再利用prompt做标签,微调来解决具体的下游任务。
在得到驾驶场景中的关键物体后,DriveVLM对关键物体特征和其对自车潜在的驾驶影响进行分析。在这里,作者将物体特征分为3个方面——静态属性(Cs)、运动状态(Cm)和特殊行为(Cp)。其中,静态属性描述了物体固有的属性,比如道路标志中的标号或标语,超出卡车车身长度的货物等,这些属性有助于自车确定一些潜在驾驶风险。特殊行为(Cp)则是指某些专属于该物体做出的可能影响自车驾驶的特定行为或手势等,比如交警指挥交通的手势,面前的人在使劲挥手示意等。
这些相当于看图理解,理想汽车明智选择了阿里开发的Qwen-VL而不是选择自行开发,那样成本太高了,只有阿里这样的顶级科技公司才能负担。Qwen-VL以通义千问70亿参数模型Qwen-7B为基座语言模型研发。Qwen-VL是支持中英文等多种语言的视觉语言(Vision Language,VL)模型,相较于此前的VL模型,Qwen-VL除具备基本的图文识别、描述、问答及对话能力之外,还新增了视觉定位、图像中文字理解等能力。Qwen-VL参数规模为96亿。
Qwen-VL的具体表现
不过Qwen-VL(96亿参数版本)对输入图片也有限制,图片大小不能超过10MB,像素不能超过1048576。更高参数的Qwen-VL-Plus和Qwen-VL-Max支持更高的分辨率。
要想模型准确率增加,最有效的办法就是用更多的数据来训练模型,这样参数就会越来越多。Qwen-VL-Max的参数规模可能是720亿乃至上千亿,这样一来部署成本极高,所以对模型进行了压缩,但自动驾驶领域不是聊天娱乐,自动驾驶牵涉到安全,准确率高0.01%就可能挽救一条生命,这也是两难,成本高无法推向市场,成本低不够安全。
几种VLFM的性能对比
Gemini Ultra的参数量说是万亿级别,Gemini Pro 1.5是1750亿,Claude-3 Opus是2万亿,Sonnet只有700亿。Qwen-VL这种大模型又称之为vision-language foundation models,视觉语言基准大模型即VLFM,上表是几种VLFM的性能对比,在中文语境下,Qwen自然是优势非常明显,在中国境内开车,也必然需要中文的VLFM,GPT-4再强大也只能局限在英文领域。马斯克的Grok做得再好也需要一个中文版本,每训练一个版本,花费可能是数亿甚至数十亿美元。最后一个InternVL是上海AI实验室、南京大学、清华大学、香港中文大学、商汤科技、中科大几家联合打造的VLFM,不过受限于算力基础和成本,InternVL的预训练是META的LLaMA大模型,而一般这种模型参数规模都在200亿以上。
让我们回到DriveVLM,与传统规划器相比,由于DriveVLM具有视觉语言模型(VLMs)固有的巨大参数量,在生成轨迹时速度较慢。为实现快速实时的推理能力,将它与传统的planner相结合形成了一个快-慢双系统设计。在DriveVLM输出一个规划轨迹Wslow之后,将其作为一个参考轨迹送入经典的规划模块进行一个二阶段的轨迹优化。具体来说,对于基于优化的planner,Wslow作为优化求解器的初始解;对于基于神经网络的planner,Wslow作为输入query的形式,与原本planner的输入特征f相结合,经过网络生成新的轨迹Wfast。在实际应用时,该双系统是异步运行的,VLM分支主要负责task-level任务级的规划,如拐弯或直行,传统分支中的planner主要负责motion-level动作级的规划,如航向角偏航多少度,只在固定重叠时间接受来自VLM分支的轨迹输入。
为了更好处理长尾场景,必须要建立长尾场景数据集,这也是端到端自动驾驶核心之一。理想汽车打造了一个SUP(scene understanding for planning)数据集,输入数据包括来自周围摄像头的多视角视频集V,以及可选的来自感知模块的3D感知结果P,输出包括场景描述E,场景分析S,元动作A,决策描述D,轨迹点W。对于轨迹点W可以采用位移误差(DE)和碰撞率(CR)作为指标来评估生成的好坏。
理想汽车提出了一种数据挖掘和标注的方法。并以此为基础构建了一个超过40个场景类别的自动驾驶数据集SUP-AD。该方法流程图如下所示,首先从海量自动驾驶数据中进行长尾目标挖掘和挑战性场景挖掘来收集样本数据,之后对于每个场景选择一个关键帧,并进行相应的场景信息标注。
不过端到端目前处于实验室阶段,至少需要5-6年以上才可能实用。单单从碰撞率这个指标看,端到端还不成熟,首先计算碰撞的时候,其他车的未来轨迹都是回放,没有任何交互影响,测试只有3秒,3秒以后呢,单从这一点上讲,这个指标就很不靠谱。其次,预测的轨迹只是一堆xy坐标,没有考虑自车的yaw angle在未来的变化,计算碰撞的时候也是假设自车的yaw angle永远保持不变,会造成很多错误的碰撞计算。还有很多,比如没有地图约束,碰到路肩road boundary不算碰撞,不会有任何处罚。
最后是部署这种模型,即便是最小的Qwen-VL,参数量仅有97亿,清晰度选择448*448这种最低清晰度,用英伟达Orin做推理运算,每个场景需要0.3秒,也就是3Hz。
如果是两百万像素,最少需要3-6秒计算一次,而汽车视频的频率最低也有20Hz,也就是计算时间应该缩短到0.05秒一次,计算速度需要提升60倍以上。
计算延迟的关键不是算力,而是存储,端到端这种大模型是典型的时间序列transformer,是串行流程,前一个结果不出,后面就阻塞不动了。
运算系统有两种存储,一种是断电后存储内容不丢失的非易失性存储器(Non-Volatile Memory,NVM),最常见的NVM是Flash存储器,还有一种是断电后存储内容就消失的易失性存储器,即RAM,又分为DRAM和SRAM,通常内存指的是RAM。内存严格地说应该叫缓存或暂存,它是NVM和CPU之间的桥梁,NVM原理类似电容,因此其读出写入速度很慢,跟CPU速度比差太多,为了两者协调工作,加入内存做中转缓冲,它是计算单元与数据或指令存储之间的桥梁。在芯片内部的一般叫cache,发音类似现金,常写成$。
RAM是桥梁,而SSD或UFS是仓库,存放着大模型、操作系统等,RAM只是通过,每一次大模型推理都需要从仓库中取出大模型的权重数据,与输入数据做矩阵乘法,得到激活函数值后再写入RAM传给CPU。绝大部分时间计算单元都在等待权重数据读出和写入。如果RAM容量很小,放不下整个大模型,那么大模型只能放在UFS里,UFS 3.1的读写速度为2.1GB/s和1.2GB/s。
车载领域RAM也不只是为大模型计算服务,超过CPU内部Cache的数据量的运算都要经过RAM做缓存,服务器领域则有单独的显卡RAM即显存,车载领域目前都是CPU和AI运算共享RAM。如Qwen-VL这种大模型按照车载的INT8格式,只需要大约10GB,但RAM还要考虑其他运算,实际的RAM需求量远超10GB,像特斯拉2022AI DAY上所说的参数总量是10亿,对应的HW 4.0的RAM容量是32GB,还是价格昂贵的GDDR6。如果是百亿参数,RAM的容量至少要增加5倍,也就是160GB。
此外还有存储带宽,存储不仅需要读出还要写入,写入速度一般会低于读出,不过写入的数据规模远低于权重模型。Qwen-VL的模型大约10GB,按汽车领域最低下限20Hz,存储带宽至少需要200GB/s,英伟达Orin的存储带宽是200GB/s,特斯拉FSD是63.5GB/s,貌似英伟达Orin 够用,但Orin的存储带宽不是单独为AI运算服务的,所以最终的测试结果是3Hz。
所以需要把AI运算单独设置RAM存储系统,通常这也意味着需要单独的AI运算芯片,此外这仅仅是研发初期,随着VLFM不断迭代,参数会持续增加,对RAM的容量需求暴增,对存储带宽需求也暴增,如果增加到300亿参数,那么1TB/s的存储是必须的,能达到如此带宽的只有价格极其昂贵的HBM。
端到端是自动驾驶领域划时代的创新,但它离实际应用还需要时间,即使实际应用,单计算系统的成本可能就要4万人民币以上。
免责说明:本文观点和数据仅供参考,和实际情况可能存在偏差。本文不构成投资建议,文中所有观点、数据仅代表笔者立场,不具有任何指导、投资和决策意见。