foundation model

目录

 

多模态预训练模型

BLIP

LLM

GPT3

InstructGPT

FLAN

 chain of thought

ToolFormer

QWEN

Llama3

VLM

QWen-VL

VideoChat

Video-ChatGPT

应用

DriveVLM

PlanAgent


多模态预训练模型

CLIP

BLIP

《Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation》

Model

BLIP模型结构如上,Image encoder部分就是一个N层的ViT模块;而文本模型分为三个,其中第一个Text Encoder是N层的transformer结构,主要目的就是用来感知,其输出和Image Encoder输出做一个对比学习的Image Text Constrast Loss;Image-grounded Text encoder模块和Image Encoder共用权重,但是增加了Cross Attention融合image信息,Loss是image-text matching loss;最后decoder模块则依然是服用Text Encoder相关的一些权重,但是Self-Attention是新的,融合image信息作生成式的相关任务,Loss则使用对应任务的Loss。可以看到上图中颜色相同的模块是共享权重的,BLIP在三种类型的任务中有很多共用的模块。

Data

在BLIP的使用的数据中,网上扒下来的数据CC12M是有noise的,他带了脏数据(图片文本对不匹配),而coco的数据却是比较干净的,所以作者这里使用了CapFilt来筛选、生成数据,逐步获取干净的大规模数据。

如下图所示,一开始数据集中包含所有数据做一个预训练得到MED(Mixture of Encoder-Decoder)模型,再用干净的COCO数据去finetune预训练模型得到Filter模型和Captioner模型,1)利用filter晒去CC12M中不匹配的文本对;2)利用captioner给Iw生成新的Ts;留下filter校验过的CC12M、captioner生成的CC12M的文本加上准确的COCO数据重新预训练MED模型,如此往复就可以提升模型效果。

在BLIP2中提出了一个新的结构Q-Former,来利用已经冻结的预训练视觉大模型,从其中提取到文本能使用的视觉特征。其结构如下,Q-Former有一些learnable Queries和image encoder的输出embeddings做cross attention。他的训练分成两步:1)vision language representation学习,利用ITC(图文对比)、ITM(图像检索)、ITG(caption生成)任务来训练;2)把Q-Former接入大语言模型,作为soft prompt,训练生成任务。

LLM

GPT3

整体训练方法和GPT相似,增加了prompt tuning,在输入中提供交互式的prompt,使用instruction+demonstration的方式,引导模型输出对应结果,甚至完成未见过的新任务。

Data

如下是Few-Shot、One-Shot、Zero-shot、Fine-Tuning的数据形式。

Few-Shot方式,会为模型提供10~100个样例(取决于模型context window=2048),这种方式在某些任务下取得的结果接近于该任务下finetune后的SOTA。One-Shot即提供1个样例。Zero-shot则给模型输入一个自然语言的指令来描述任务而不给样例,这种方式在某些任务下会让人都难以理解其目的,但是在某些任务中却很简明。

1)基于和一系列高质量的语料库相似度,清洗CommonCrawl

使用WebText、Wikiedia和自己的web books语料库座位正样本,未过滤过的Common Crawl作为负样本。使用Spark's standard tokenizer和HashingTF提取的特征。训练一个logistic regression模型,给这些Common Crawl documents打分,保留符合如下条件的数据

2)文件级的fuzzy去重

同上使用Spark's MinHashLSH implementation with 10 hashes,消除相似度较高的文本。

3)加入已知的高质量语料库到CommonCrawl。

同时为了避免训练集中有下游任务测试集、验证集中的数据,直接移除重合部分。

使用的数据集

Model Architecture

和GPT2一样的结构

hyper parameters

 Training Process

 Evaluation

对于few-shot情况,每一个评测的样本,会从该任务的训练样本中抽取K个样本作为样例,这些样例间用换行符来分隔。同具体context内容如下:

InstructGPT

《Training language models to follow instructions with human feedback》

拿现有与训练模型如GPT3作为初始模型

step1:通过标注人员给一些问题写答案来获取一部分监督数据,这些数据来源于标注人员自己写的prompt和答案、限定指令下的答案、用户反馈的问题。利用这些数据做SFT(supervised Finetuning)。

step2:用step1的模型给prompt做可能的答案,让标注人员给这些候选答案按由好到坏排序,这些排序数据可以训练一个RM(rewarding model)用于给答案评分 。我们RM是基于step1的SFT模型来训练,去除最后一层,增加一个线性层回归一个分数,RM模型的输入是prompt+response。

step3:适用强化学习,利用RM给答案的评分优化模型得到更好的答案。这里使用强化学习的原因就是因为,更新LLM模型后相当于环境变化了,如果不使用强化学习RM给新的response提供reward,就需要靠人来标,这是不可取的。目标函数如下:

参考文献

RLHF:《Learning to summarize from human feedback》

FLAN

《finetuned language models are zero-shot learners》

instruction tuning,使用数据集微调语言模型,可以大大提升其在没有见过的任务上的泛化性能,这个专用数据集是使用instruction指令描述的。在文中的具体例子,是使用60个NLP数据集微调一个137B的预训练语言模型,这60个数据集是通过自然语言指令模板表达的,最终这个模型相比没有instruction tuning有很大的提升,甚至在zero-shot能力上25个任务中有20个任务超过175B的模型。

instructions datasets

Data

 作者把tensorflow Datasets上可用的62个公开文本数据集划分成12大类。然后用模板把这些数据改写成instructions的形式,同一个类型的数据里面会混合多个类似的模板以提升数据多样性,如图所示:

 在评测的时候,就按照大类catergory,某一个category中数据集只用来测试,其他的数据用来instructions tuning,看在这个未使用的数据上zero-shot的能力如何。

ablation results

scaling laws,在小模型上instruction tuning有负作用,大一些的模型上才能起作用。

 chain of thought

Chain-of-thought prompting elicits reasoning in large language models》

100B的模型在快速的sentiment classification这些问题上就能取得很好的结果,但是在数学计算、逻辑推理问题上却不能取得好的效果。chain of thought就是一种激发语言模型推理能力的一种prompting方法,让模型像人一样step by step地去思考问题。

训练好的大模型求解推理结果有几种方式:i)一种是直接让模型回答提问,后面带上The answer is;ii)在问题后加上Let's think step by step,这时模型会生成一些中间推理结果;iii)手动构造一些examples,给到输入,其实这里就是利用模型的few-shot能力仿照样例来一步一步推理(这就是引文的方法);iv)还有一种是用自动的方法即Auto-CoT,自动构造few-shot样例,即在数据中抽样相似问题并接上Let's think step by step得到答案作为你真正要的问题的前面作为输入。

 

ToolFormer

Toolformer: Language Models Can Teach Themselves to Use Tools》

LLM能够依据指令很好的完成一些任务,但是在一些基础功能如算数、事实查找还比不过一些小模型。这篇文章就是让模型能够教自己使用外部工具,调用一些API。文中是自监督的方式,仅仅对api进行一些描述,就能使用包括计算器、问答系统、搜索引擎、翻译系统和日历等。这方法提升了很多下游任务,而没有牺牲他的核心语言模型能力。

方法

文中需要API的输入输出是文本序列,这样才能无缝地使用特殊tokens标记调用的起始,把API调用插入所给的文本。如下"<API>","</API>"和"->"是特殊符号(实际使用中,用"[","]"表示"<API>","</API>"),ac就是API名,ic是入参,r是结果。

 下面是toolformer的一些例子,分别调用了QA、计算器、翻译、wikipedia工具。

数据制作

需要把数据集转化成API增强过的数据集。主要通过如下三步来实现:

FT数据集生成

 sample API calls:对于每一个API,我们写一个提示P(x)来引导LLM去用API调用来标记输入sequence,例如QA的提示可以写成如下:

QA API数据处理

 这样就能获得在那些地方要插入api call,但是文中还用概率阈值来约束input中保留几段api call。设pM(zn+1 | z1,...,zn)是M预测第n+1个token为zn+1的概率,那么对于每个模型M预测"<API>"的地方有:

 只保留top-k个概率大于阈值Ts的API call。对于每个为"<API>"的位置,还需要模型M来预测m个API的输入参数(前缀为)结尾为"</API>"。

execute api calls:然后利用生成的API call来调用API得到文本序列结果ri。

filter API calls:使用API call和结果ri作为前缀求模型后面生成的token,用这些后置的token来计算交叉熵损失,如果api call作为前缀生成的后面的token没有降低loss,则抛弃这些api call。

代表空的序列。

model finetuning:生成了api call后,文中把对应的API call和结果ri合并到了原来的文本序列中,形成了新的数据,这个数据集出了增强过的数据,还是要保留原来的数据。在这样的数据上微调后,LLM可以更好的决定预测未来应该是什么TOKEN。

推理:当生成"->"token时,这意味着要使用API获得结果填入对应位置。

QWEN

Data

webdata:从HTML提取文本,使用language identification tools分辨语言,同时还要去重。还有一些基于规则的、机器学习的方法给内容打分,去除低质量数据。同时使用多任务指令能够提升模型的zero-shot,few-shot能力。

Tokenization

BPE(byte pair encoding),用了tiktoken(Shantanu Jain. tiktoken: A fast BPE tokeniser for use with OpenAI’s models, 2022. URL https://github.com/openai/tiktoken/.)加入了中文字符。

Architecture

参数量

 用的LLaMA模型,修改部分为:

Embedding和output projection

Positional embedding使用RoPE(Rotary Positional Embedding)

Bias去除大部分层的偏置,保留QKV层偏置。

RMSNorm改变transformer的normalization

activation function选用SwiGLU。

Training

还是采用和GPT一样的自回归方式做预训练,输入前序tokens预测下一个token,context length 2048。为了节省存储空间,使用flash attention(Tri Dao, Daniel Y. Fu, Stefano Ermon, Atri Rudra, and Christopher RÅLe. FlashAttention:Fast and memory-efficient exact attention with io-awareness. In NeurIPS,2022. URL http://papers.nips.cc/paper_files/paper/2022/hash/67d57c32e20fd0a7a302cb81d36e40d5-Abstract-Conference.html.)使用AdamW,参数0.9,0.95,10-8. 余弦退火lr训练策略。BFloat16精度混合。

Context length extension

NTK-aware interpolation(

NTK-aware scaled RoPE allows LLaMA models to have extended (8k+) context size without any fine-tuning and minimal perplexity degradation., 2023. URL https://www.reddit.com/r/LocalLLaMA/comments/14lz7j5/ntkaware_scaled_rope_allows_llama_models_to_have/.)

LogN-Scaling(

David Chiang and Peter Cholak. Overcoming a theoretical limitation of self-attention. In Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pp. 7654–7664, 2022. ) and window attention(Iz Beltagy, Matthew E Peters, and Arman Cohan. Longformer: The long-document transformer.arXiv preprint arXiv:2004.05150, 2020.)

Alignment

利用SFT supervised finetuning,采用一些chat-style的数据,包括询问和回答。训练optimizer用的AdamW,参数0.9,0.95,10-8,序列长度2048,batchsize128,步数4000,学习旅最大2x10-6,weight decay 0.1,dropout 0.1,梯度clipping未1.0。

RLHF(Long Ouyang, Jeffrey Wu, Xu Jiang, Diogo Almeida, Carroll L. Wainwright, Pamela Mishkin,Chong Zhang, Sandhini Agarwal, Katarina Slama, Alex Ray, John Schulman, Jacob Hilton, Fraser Kelton, Luke Miller, Maddie Simens, Amanda Askell, Peter Welinder, Paul F. Christiano, Jan Leike, and Ryan Lowe. Training language models to follow instructions with human feedback. In NeurIPS, 2022. URL http://papers.nips.cc/paper_files/paper/2022/hash/b1efde53be364a73914f58805a001731-Abstract-Conference.html.)在构造Reward Model时,同样采用先preference model pretraining,后用更好的分级标注数据finetune。proximal policy optimization:强化学习算法需要看一下。

参考文献:

chain of thought

Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Fei Xia, Ed Chi, Quoc V Le, Denny Zhou, et al. Chain-of-thought prompting elicits reasoning in large language models.Advances in Neural Information Processing Systems, 35:24824–24837, 2022c.

RLHF

Long Ouyang, Jeffrey Wu, Xu Jiang, Diogo Almeida, Carroll L. Wainwright, Pamela Mishkin,Chong Zhang, Sandhini Agarwal, Katarina Slama, Alex Ray, John Schulman, JacobHilton, Fraser Kelton, Luke Miller, Maddie Simens, Amanda Askell, Peter Welinder, Paul F. Christiano, Jan Leike, and Ryan Lowe. Training language models to follow instructions with human feedback. In NeurIPS, 2022. URL http://papers.nips.cc/paper_files/paper/2022/hash/b1efde53be364a73914f58805a001731-Abstract-Conference.html.

AI agent

use tool:Timo Schick, Jane Dwivedi-Yu, Roberto Dess`ı, Roberta Raileanu, Maria Lomeli, Luke Zettlemoyer,Nicola Cancedda, and Thomas Scialom. Toolformer: Language models can teach themselves to use tools. arXiv preprint arXiv:2302.04761, 2023.

use other data: Chenxu Hu, Jie Fu, Chenzhuang Du, Simian Luo, Junbo Zhao, and Hang Zhao. Chatdb: Augmenting llms with databases as their symbolic memory. arXiv preprint arXiv:2306.03901, 2023.

embodied intelligence: Palm-e: Danny Driess, Fei Xia, Mehdi SM Sajjadi, Corey Lynch, Aakanksha Chowdhery, Brian Ichter, Ayzaan Wahid, Jonathan Tompson, Quan Vuong, Tianhe Yu, et al. Palm-e: An embodied multimodal language model. arXiv preprint arXiv:2303.03378, 2023.

embodied intelligence: Guanzhi Wang, Yuqi Xie, Yunfan Jiang, Ajay Mandlekar, Chaowei Xiao, Yuke Zhu, Linxi Fan, and Anima Anandkumar. Voyager: An open-ended embodied agent with large language models. arXiv preprint arXiv:2305.16291, 2023a.

Llama3

Pretraining

预训练要解决的问题主要是这几个:1)清洗出大规模数据集;2)确定模型架构和对应的参数规模、数据规模(和scaling law相关);3)大模型预训练相关的工程技术;4)预训练开发的方法。

数据

未公开,只说用了多种多样的数据源,并使用了多种去重和清洗方法处理。

数据筛查:网络数据,去除了个人身份信息相关的内容、成人内容。自己弄了一个HTML内容抽取器,用人为评估的方法进行了HTML parser的质量评估。去重方面,使用了URL级(保留对应URL 最新的版本)、文本级(global MinHash方法去重)、行级去重;启发式的去除低质量的文本,如计算n-gram覆盖比率以去除如logging、error的信息;脏话太多的文本去除;计算文本间KL散度,如果和训练语料库相差太远的说明是不好的文本。基于模型的质量筛查,通过模型给文本分类、打分。

针对代码和推理要专门的parser提取高质量的数据。

还准备了多语言的数据。

数据混合:针对自己模型应用不同的策略来混合上述采集到的数据,给不同类型的数据分配不同的采样率。这里作者做了几个事1)训练分类器,给数据分类如打上艺术娱乐的标签类型。2)在几个小的模型上实验数据混合策略,来预测大模型表现。3)最终的比例50%通用知识,25%数学推理数据,17%代码,8%多语言。

数据退火:在你想要提高的领域,可以用退火的方法在对应的小数据上finetune,这方法可以在对应测试集上提高其表现。

模型架构

整体而言是数据扩大、多样性增加,加大了模型规模的结果,整体上模型结构和Llama和Llama2差不多。

scaling laws:用小模型预训练的loss去预测大模型的预计表现,从而确定大模型和数据量的最佳配置。1)建立对应任务测试集上negative log-likelihood和训练消耗算力FLOPs的关系;2)论文中使用之前Lllama2中训练过的模型数据和一些新的小模型;其算力消耗和验证集表现如下:

scaling laws

左图横坐标为训练使用训练出来的模型数据和验证loss的关系,可见相同使用算力下训练数据和loss会有一个最优点,而算力使用越多整个loss是下降,可以拟合出这个算力消耗和loss关系曲线从而预测最优的数据量和模型大小。右图算力对数和训练数据间关系,可以取你能消耗的算力推测出最大模型。

VLM

QWen-VL

基于Qwen-7B语言模型,通过引入新的视觉感受器(包括视觉语言对齐的encoder,position-aware adapter),赋予了视觉理解能力。从而能够完成多种任务,包括图像描述、问答和visual grounding。

Architecture

LLM模型基于Qwen-7B预训练权重初始化。Visual Encoder基于ViT,使用了openclip的ViT-bigG权重初始化,训练中resize到固定尺寸,然后把图像切分成块,stride 14,生成多个image features。Position-aware VL adapter,主要用来压缩图像特征,该模块是由可训练的embeddings组成,作为query,视觉encoder的输出作为key做cross attention,最终会把视觉特征序列压缩成256维的固定长度。2D的绝对位置编码在query-key对中也要用到,以避免位置信息的丢失。

Qwen-VL 结构与训练方式

image input:为了区分视觉特征和文本特征,在visual features首位添加了特殊tokens(<img></img>)。

bounding box input & output:为了区分检测字符串和普通文本字符串,在bbox字符前后增加特殊tokens(<box></box>),bbox字符格式为"(Xtop_left,Ytopleft),(Xbottom_right,Ybottom_right)"。如果需要关联一些描述性文本,这些文本首位添加特殊tokens(<ref></ref>)。 

Training

pretraining stage1:

第一阶段,使用大规模、弱标签、网上爬取的图文对,包括一些公开的数据和内部数据。从5billion图文对清洗到1.4B。冻结LLM模型,只训练视觉编码器、VL adapter。输入图像resize 224x224,训练目标是最小化文本token的交叉熵,最大学习率2e-4,batchsize30720,整个第一阶段50000steps,训练样本近1.5B图像文本对。

stage1数据集

 multitask pre-training

这一步使用高质量、精细的视觉语言标注数据,有更高的分辨率和图像文本数据。我们同步训练了7个任务,text generation、captioning、VQA、Grounding、ref grounding、grounded cap、OCR、pure-text autoregression。视觉encoder分辨率从224提升到448,降低下采样造成的信息丢失,LLM参数也放开来训练,目标函数和第一阶段一样。

多任务数据集

 supervised fine-tuning

利用intruction fine-tuing加强指令理解和对话能力,训练出了Qwen-VL-Chat模型。这里使用的数据集还包括了额外的,通过人工标注、模型生成、策略联合来构建的,目的是让模型有localization、多图像理解能力。instruction tuning数据有350k,这个阶段的数据要冻结视觉encoder,优化语言模型和adapter模块。

Data

多任务预训练数据格式如下

 自监督数据格式

参考文献

Instruction finetuning: Finetuned Language Models Are Zero-Shot Learners.通过给定指令或指导+-来训练模型,使其按照给定的指导执行特定任务,通常结合强化学习,通过奖励模型正确执行指导的任务,从而优化生成的结果。

prompt tuning:通过在提示词中添加特定提示从而引导模型生成特定类型的响应。整个输入变成了prompt embeddings + input embeddings,输入对应引导任务的结果。

应用

浙江的人形机器人初创企业有鹿机器人近期就基于通义千问开源模型,开发了具身智能大模型LPLM这个“通用机器人大脑”,并达成了一笔超千万的商业订单,证明了这套开源大模型的强大。

百度选择的是与人形机器人头部企业优必选强强联手,共同探索中国AI大模型+人形机器人的应用。优必选人形机器人Walker S通过百度智能云千帆AppBuilder平台接入百度文心大模型进行任务调度应用开发,主要提升快速构建任务规划与执行能力。

腾讯终于交出了「GPTs」和大模型助手 App 的答卷,RoboticsX 机器人实验室也把 AI 模型应用到了自研的机器狗上,但由于腾讯的大模型能力偏向于软件功能侧,机器人企业应用后研发进展缓慢,对于语义理解和控制决策层帮助不大。

最近的消息是,乐聚选择与华为达成战略合作,以华为盘古大模型为核心,结合夸父人形机器人技术,共同探寻并构建通用具身智能解决方案。

VideoChat

《VideoChat:Chat-Centric Video Understanding》

https://github.com/OpenGVLab/Ask-Anything

由于第一种VideoChat-Embed方法是先将video转成text,有一定的信息丢失。所以这里我们选取VideoChat-Embed这部分详细记录。

Model Architecture

 在这个结构中,有预训练的ViT-G with Global Multi-head relation Aggregation(GMHRA),有预训练好的QFormer+linear线性映射层(QFormer增加了额外的query tokens来表达视频的上下文)。训练时冻结大部分权重除了新引入的GMHRA、QFormer新增的tokens、线性映射层。

训练分为两个步骤:1)通过大规模视频-文本对来对齐video encoder和LLM。2)利用详尽的视频描述指令数据、视频问答数据微调。

数据

视频多模态指令数据是基于WebVid-10M建立的,对应的详细描述和问答是通过ChatGPT(增加了VIdeoChat-Text生成的文本加入到prompt)生成的。

Video-ChatGPT

Video-ChatGPT: Towards Detailed Video Understanding via Large Vision and Language Models》

Fine Tuning

LoRA

《Low Rank Adaptation of large language models》

全量微调是一项资源密集的任务,通常情况下优化器状态、梯度所占的内存空间约为模型的几倍。即使是LLaMA-7B也需要大量计算资源来微调,因此出现了PEFT(参数高效微调),这些微调策略中LoRA(低秩适配)目标就是通过优化较少的参数最大限度地减少资源利用加速训练周期。

LoRA基于的假设是:微调权重和初始预训练权重之间的这种差距可以表示为两个较小的矩阵的乘积,即微调增量矩阵\Delta W是低秩的,可以用低秩分解的方法去近似全参数微调。如下图所示,保持预训练模型权重不变,通过对附加的A,B两个矩阵进行微调,可以对与预训练模型多层都采用这种方式,其效果会接近于全量微调,同时计算资源却因为AB的低维度而大大降低,但要注意收敛速度不会增快。LoRA的优势总结为这几点:1)可以通过冻结pretrained-model,仅仅替换A、B矩阵高效地迁移各种任务;2)不需要存储全量权重优化信息、梯度信息,可以将硬件资源消耗降低3倍;3)LoRA是简单的线性相加,部署时可以将微调的权重合并到原来的权重,推理时延不会增加;4)LoRA和其他方法是能够组合搭配的,如prefix-tuning。

低秩分解示意图

其等效结果如公式所示,用B是dxr(r是低秩维度,r<<d)维度,A是rxk(k是输入x的维度)维度,\Delta W是dxd维度:

 应用LoRA到Transformer

transformer架构由4个self-attention权重矩阵(Wq、Wk、Wv、Wo)、2个MLP的权重矩阵,原文中作者只在attention模块用LoRA分解,MLP模块保持freeze。在实验中降低了2/3显存,GPT-3 175B从1.2TB显存降到了350GB,如果设置r=4且只在query、value映射矩阵使用LoRA,checkpoint可以从350GB降到35MB。

LoRA使用经验:

1)哪些权重需要用LoRA?如果训练参数有限,我们只考虑self-attention中的模块使用LoRA,GPT-3 175B在文中就只用了18M参数,r=8。

2)最优的r应选取多少?

3) \Delta W和W联系是什么

相比于随机的矩阵,这两个矩阵间有着强烈的相关性,这意味着\Delta W增强了W中已有的一些特征。增强的特征并不是W中突出的特征,而且其放大因子也很大。

应用

DriveVLM

《DRIVEVLM: The Convergence of Autonomous Driving and Large Vision-Language Models》

该文是理想和叉院合作的端到端的智驾方案。为了解决长尾和复杂场景问题,引入VLM大模型,利用大模型能力分别做了场景描述、场景分析、分级规划。除此之外因为大模型的推理性能问题,结合传统自动驾驶系统形成了快慢双系统VLM-dual。

引言:

现有的智能驾驶系统包括了3d感知、运动预测和规划模块,但是对于场景的理解一直表现不好,尤其是3D的感知只能局限于检测跟踪熟悉的目标,运动预测和规划则只关注到轨迹级的动作,忽略了和目标间决策级的交互。

优势:DriveVLM则采用CoT处理三个关键目标:场景描述、场景分析、分级规划,场景描述描绘了驾驶环境、识别关键目标,场景分析则关注关键目标的特性和他们对于自车的影响,分级的规划模块则一步一步地从meta-actions和waypoints描述来形成规划结果。

劣势:VLM优势在于视觉理解,但是空间定位和推理方面能力有限,同时算力消耗比较大。这也是为何要搞双系统的原因。

 1)场景描述:包括环境描述(时间、天气、道路条件等,Eweather、Etime、Eroad、Elane)和关键目标识别(最有可能影响当前场景的关键目标的category、bounding box)

2)场景分析:包括关键目标的静态属性Cs,运动状态Cm,特殊行为Cb。

3)分级规划:场景级的总结和路线、自车姿态还有速度一起形成规划的prompt,最终DriveVLM逐步生成驾驶规划meta-actions->decision description->trajectory waypoints。

Meta-actions是一个短期的决策,共17个类别[acceleration,deceleration,turning left,changing lanes,minor positional adjustments,waiting],为了在一段时间内控制车,本文会生成一个meta-action序列。

Decision Description提供了更细粒度的驾驶策略,包括3个元素action、交互目标约束subject、动作执行时间顺序duration。

Trajectory waypoints生成了自车对应的轨迹{(x1,y1),(x2,y2),...},描绘了未来时刻t内的自车运动轨迹。也是以自回归的方式输出语言tokens得到这些waypoints。

PlanAgent

 《PlanAgent:A Multi-modal Large Language Agent for Closed-loop Vehicle Motion Planning》

架构

整体架构

 整体由三部分组成,Environment transformation负责从环境中提取关键信息构建BEV map和基于车道图的文本描述作为第二个模块Reason Engine的场景prompts,Reason Engine生成规划结果,最终Reflection模块评估这个规划结果。

Environment Transformation:这个模块将场景信息分为全局和局部信息。全局信息(BEV Map)代表场景类型,提供自车运动规划的先验信息,如在环形交叉路口要注意汇入车辆、单行车道禁止变道等等。局部信息(lane-graph转化成文本描述)表示自车和周边其他车的运动,这些信息直接影响到自车横向纵向动作规划。

BEV Map:首先从环境中提取地图信息、他车信息和障碍物信息,地图信息包含1)中心线2)人行横道3)车道;目标信息包括4)自车5)他车6)两轮车7)行人,障碍物信息表示8)静态障碍物。在建立BEV map时,这8个道路元素用不同的颜色可视化来加强多模态大模型对道路结构的理解。为了描绘场景动静态信息,每一个目标用红色箭头表征他的速度信息。

Textual Description:之前的方法把所有的agent信息和道路信息直接以数学坐标的方式送给LLM模型,这是冗余且无效的,而且大量的坐标不一定能和LLM的语义空间相适应。将每一段路等分成多个节点,节点的位置和连接关系提供了一个好的语义和几何表达。如下图所示将,一个三车道场景,每一个节点周边有8个相邻的节点,我们把节点间的位置和连接关系转化为文本描述,以有效地表达现实世界中道路信息。为了保证信息有效性,我们只保留八个相邻节点的目标、障碍物、交通灯信息(速度、距离)。

文本描述lane-graph

Reasoning Engine 

 引入MLLM的目的,就是希望借助大模型的常识、逻辑推理、泛化能力解决自动驾驶领域的问题。如上所述,multimodal Large language models的输入是ETM模块的环境信息prompt加上预设的系统prompts。紧接着MLLM通过多轮的分级思维链指引下的推理,应用IDM规划器(nuPlan提供的规划器)生成规划结果。提示词分为两部分:1)场景提示词,用以描述场景2)系统提示词,定义任务、导入驾驶常识、指引分级推理。(这里MLLM没有做微调,直接用的GPT-4V),所以你的提示词需要提供任务定义、格式,还有合理的planner生成样例(讲清楚调用IDM的输入参数代表着什么)。同时这里还引入了思维链指导MLLM一步一步理解场景、给出action规划、生成规划器调用代码。

决策引擎

 Reflection

MLLM生成的规划结果有不确定性,生成的决策会进入PDM-Closed中的仿真(评估潜在的碰撞等级)进行评分,如果低于阈值Reasoning Engine会被要求重新生成新的规划。为了减少长时间仿真的累积误差,我们只进行短期的仿真,同时约束重新决策的次数,超过次数采用最后一次的决策。

 Result

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值