【第二十四周】从大语言模型到多模态大模型的发展
摘要
大语言模型(Large Language Model, LLM)是指一类基于深度学习的人工智能系统,它们被设计用来理解和生成自然语言。这些模型通常是在大量的文本数据上进行训练的,通过学习文本中的模式和结构,它们能够执行各种各样的自然语言处理任务,如文本生成、问答、翻译、摘要等。随着BERT、GPT系列、PaLM系列、LLaMA系列、PanGu系列等大型语言模型不断发展和成熟,在各种任务的文本理解和生成方面表现出强大的能力。与此同时,计算机视觉领域中的跨模态模型(Cross-modal Model)也出现了,比如CLIP和Stable Diffusion。此外,在LLM基础上发展起来的多模态大模型(Large Multimodal Models, lmm)也取得了重大进展和突破,逐渐形成了通用通用人工智能(Artificial General Intelligence, AGI)的雏形。
Abstract
Large Language Model (LLM) refers to a class of artificial intelligence systems based on deep learning, designed to understand and generate natural language. These models are typically trained on vast amounts of text data, learning the patterns and structures within the text, which enables them to perform a wide variety of natural language processing tasks such as text generation, question answering, translation, summarization, and more. With the continuous development and maturation of large language models like BERT, the GPT series, PaLM series, LLaMA series, and PanGu series, they have demonstrated powerful capabilities in text understanding and generation across various tasks. Meanwhile, cross-modal models (Cross-modal Model) in the field of computer vision have also emerged, such as CLIP and Stable Diffusion. Additionally, significant progress and breakthroughs have been made in large multimodal models built upon the foundation of LLMs, gradually forming the prototype of general artificial intelligence.
1.大语言模型
1.1.LLM的结构
大语言模型的结构主要有三种:
- 第一种是编码器-解码器(Encoder-Decoder)。这种结构起源于 RNN 和 LSTM,首先由 Transformer
运用到大语言模型中。Encoder-Decoder架构的编码器负责将输入序列编码为固定长度的上下文向量,解码器则根据这个上下文向量生成输出序列。在Transformer模型中,编码器使用双向注意力机制,解码器使用单向注意力机制,但解码器可以关注编码器输出的上下文信息。这种机制确保了模型能够同时处理输入和输出的复杂关系。这种结构通常用于序列到序列(Seq2Seq)任务,如机器翻译、文本摘要等,能够同时处理输入和输出序列,实现复杂的序列转换任务。 - 第二种结构是仅有编码器(Encoder-Only),也被称为单向架构,仅包含编码器部分,没有解码器。它主要适用于理解任务,如文本分类、情感分析等。这种结构侧重于编码器侧,它通常使用双向自注意机制获取上下文语言表示,主要用于涉及只需要输入处理的单向任务的场景,例如文本分类和情感分析。这类的代表性模型包括BERT、RoBERTa和ALBERT。在BERT模型中,采用双向注意力机制,能够同时关注序列中的前后词语,从而获得更全面的上下文理解。此外,BERT还使用掩码语言模型(Masked
Language Model, MLM)进行训练,提高了模型的泛化能力。 - 第三种结构是仅有解码器(Decoder-Only)。此结构关注序列中后续输出token的预测。它还可以分为两种变体:因果解码器(Causal Decoder)和前缀解码器(Prefix Decoder),其区别在于所使用的注意机制。因果解码器完全依赖于之前的token来预测下一个token。而前缀解码器(也称非因果解码器)可以看做是Encoder-Decoder模型的变体,在输入部分采用双向注意力机制,这意味着模型在处理输入序列时,任意两个token都可以相互看见。而在输出部分,前缀解码器则采用单向注意力,即待生成的token可以看到Encoder侧所有token(包括上下文)和Decoder侧已经生成的token,但不能看未来尚未产生的token。这种模型架构允许模型在生成文本时同时考虑前缀信息和单向生成的特性,适用于需要同时理解上下文和生成文本的任务。只有解码器的架构框架特别适合于文本生成任务,并且构成了当前大型语言模型中的流行选择,如GPT系列。
1.2.LLM的预训练
预训练是大型语言模型训练中最重要的步骤之一,它指的是在拥有大量文本数据的语料库上进行的一个初始训练阶段。这个过程旨在让模型学习到语言的基本模式、结构和特征,而不需要针对特定任务进行专门训练。预训练的目标是使模型获得通用的语言理解能力,能够捕捉到词汇、语法、语义等层次上的规律,并形成对语言的一种内在表示。
常见的预训练目标包括以下三种主要策略:
- 自回归语言建模(Autoregressive Language Modeling,ALM):
自回归模型是一种基于先前单词预测下一个单词的概率分布的语言模型。这种模型以序列的方式工作,即它在生成文本时一次只考虑一个词,并且该词的生成依赖于之前的词。最著名的例子是传统的RNN、LSTM和GRU等循环神经网络,以及像GPT系列这样的Transformer解码器模型。这种方法采用的是因果(或称为单向)注意力机制,即在预测每个位置的词时,只能看到该位置之前的词,而不能看到之后的词。在训练过程中,模型试图最大化给定前文条件下预测下一个词的对数似然。这意味着它学习到如何根据前面的上下文来预测后续的词汇,这使得它擅长理解语言中的因果关系或顺序性信息。 - 前缀语言建模(Prefix Language Modeling,PLM):
前缀语言模型是一种特殊的自回归模型,它不仅使用过去的上下文(即句子的开头部分),还可以利用未来的某些部分作为条件输入。然而,这里的“未来”并不是指整个后续的句子,而是仅限于当前词之前的一小段文本。在这种策略中,模型不仅需要根据过去的上下文预测未来的内容,还需要能够处理输入序列的一部分作为“前缀”,然后基于这个前缀生成后续内容。这种方式允许模型更好地适应对话系统等应用场景,在这些场景中,模型可能需要根据对话历史生成回复。这种方法结合了双向和单向的特性,既可以让模型利用已知的前缀信息,又保持了生成过程中的连贯性和逻辑性。比如UniLM。 - 掩码语言建模(Masked Language Modeling,MLM):
掩码语言建模是一种非自回归的方法,它通过随机遮蔽输入文本中的某些单词,然后让模型尝试预测这些被遮蔽掉的词是什么。这种方法打破了传统的从左到右或从右到左的生成方式,使模型能够在训练期间同时看到左右两边的上下文信息。BERT是一个采用掩码语言建模的经典例子。在BERT的预训练阶段,大约15%的词会被随机替换为特殊标记MASK,然后模型的任务就是基于周围的上下文来预测这些被遮盖住的词。这种方法有助于模型学习到更加丰富的语义表示,因为它是基于双向上下文进行预测的。MLM使模型能够从双向上下文中学习,因为它同时考虑序列中的前上下文和后上下文。与ALM和PLM相比,MLM在保持并行化效率的同时,为模型提供了对上下文更全面的理解。
1.3.LLM的全量微调(Full Fine-Tuning)
全量微调是指一个大语言模型适应特定下游任务的过程,包括了使用特定任务的数据更新预训练模型的所有参数,这是大模型迁移学习的具体体现。例如,GPT最初在一个庞大的语料库上进行预训练,随后在12个不同的NLP下游任务上进行全量微调。在这个微调阶段之后,GPT变体在这些目标任务中的9个上实现了最先进的性能。对于处理下游NLP任务的大语言模型来说,全量微调是目前最流行的方法。然而,全量微调的一个重要缺陷是随着大语言模型的规模不断升级,参数的数量也不断增长,最后导致计算的消耗无法承受。
1.4.LLM的参数高效微调(Parameter-Efficient Fine-Tuning)
与全量微调不同,参数高效微调是一种旨在以最少的参数更新和计算资源实现预训练模型微调的方法。参数高效调优的主流方法包括:
- 适配器调优(Adapter Tuning):Adapter
Tuning的基本思想是在预训练模型的中间层中插入轻量级的适配器(Adapter),以便在微调特定任务时仅修改少量的参数。这样做的好处是,我们可以在不显著增加模型参数数量的情况下,提高模型的表现。由于维度较低,适配器可以在保留原始模型权重的同时,专门针对这些新添加的参数进行微调,从而确保了微调的可行性并保持了计算效率。 - 低秩自适应(Low-Rank Adaptation,LoRA) :
LoRA背后的核心思想是通过将某些权重矩阵分解为两个更小的矩阵(即低秩近似)来进行微调,只对这两个较小矩阵进行更新就可以有效地修改整个模型的行为,从而显着减少所需参数的数量,同时保持与全量微调相当的性能。 - 量化低秩自适应(Quantized Low-Rank
Adaptation,,QLoRA):在LoRA的基础上,QLoRA集成了量化。它引入量化运算,进一步压缩可训练参数的空间。QLoRA在资源受限环境中部署和更新深度学习模型的场景中尤其具有优势,例如边缘设备。
1.5.LLM的提示工程(Prompt-Engineering)
提示工程将提示作为可学习的参数,而不需要更新预训练模型的参数。通过只优化极小数量的参数,提示工程可以提高预训练模型在各种下游任务中的性能,同时接近完全量微调的功效。
- Prefix-Tuning:Prefix
Tuning通过在预训练模型的输入层之前添加一系列可训练的连续向量(即前缀Prefix),这些前缀作为额外的输入与原始输入一起被模型处理。通过优化这些前缀的参数,模型可以学会生成适应新任务输出的提示,而无需改变模型的主要参数。在训练过程中,只有前缀向量的参数是可训练的,预训练模型的参数被冻结。 - P-Tuning:P-Tuning通过在模型的输入中加入一小段可训练的模板,使得模型能够针对特定任务进行调整,而不需要对整个模型进行全量微调。它能够将离散提示映射到可训练的连续提示的嵌入中,利用LSTM和MLP来构造提示编码器。与前缀调优不同,P-Tuning在输入层的任意位置插入提示token。这些token通过提示编码器依次转换为隐藏状态,并与输入嵌入一起联合训练。然而,为了实现更佳的性能效果,必须在整体模型调优过程中同步优化提示嵌入。
- Prompt-Tuning:Prompt-Tuning 可以被视为 P-Tuning和Prefix Tuning的简化版本,
核心思想是在预训练模型中引入任务特定的指令(Prompt),这些指令可以是文本片段、图像、语音流等,用于为模型提供特定任务的上下文。这种方法旨在降低预训练模型与下游任务之间的语义差异,并复用预训练模型强大的表达能力。Prompt
Tuning将一系列提示与输入序列连接起来,形成模型的输入。嵌入的提示和输入嵌入共同构成一个参数矩阵,该矩阵由模型处理,其中只有提示的参数被更新,而预训练模型的原始权重保持不变。这种方法表现出高度的参数更新效率,并随着模型参数数量的增长变得越来越有竞争力。即使在模型参数超过数十亿的情况下,它也能够达到与全量微调相当的性能。通过
Prompt-Tuning,单个预训练模型可以通过为每个下游任务训练不同的提示参数,高效地重新用于多个下游任务。 - 上下文学习:GPT-3的少样本性能突显了上下文学习的潜力,使语言模型能够在没有额外模型调优的情况下,仅依赖少数示范样例掌握下游任务。上下文学习被分解为两个不同的阶段,即训练阶段和推理阶段。在训练阶段,模型通过预训练目标获得上下文学习的能力。在推理阶段,通过精心设计示例和选择适当的评估机制,展示了模型的上下文学习能力。
- 思维链:思维链概念的本质在于通过向模型提供适度的范例集合来模仿人类解决复杂问题的认知过程。解决方案被分解成一系列用自然语言表达的中间推理步骤,同时清晰地描绘了从查询到解决的逻辑轨迹。
prompt tuning、P-tuning和prefix tuning的结构如下所示:
1.6.目前比较具有代表性的几个大语言模型
Transformer(2017):Transformer是在2017年由谷歌的研究人员提出的一种模型。Transformer一个最大的特点就是引入了注意力机制,革新了自然语言处理(NLP)领域,并且迅速成为许多先进AI应用的核心组件,如机器翻译、文本生成、问答系统等。此外,将多头注意机制合并到Transformer架构中允许所得到的模型同时使用几个独立的自注意头,从而促进并行学习大量不同的注意子空间。
Transformer 的核心原理其实就是以下这条公式:
T5(2019): T5是由谷歌研究院开发的一种基于Transformer架构的模型,专门设计用于各种文本到文本的任务,采用了编码器-解码器框架。与BERT和GPT等其他流行的预训练语言模型不同,T5将所有自然语言处理任务统一为文本到文本的形式,这使得它能够更加灵活地处理广泛的任务类型。
GPT-3(2020):GPT-3是由OpenAI开发的第三代生成式预训练Transformer模型,采用了Transformer-Decoder架构。它代表了自然语言处理领域的一个重大进展,因其庞大的规模和出色的文本生成能力而广受关注。
CPM-2 (2021): CPM-2与其前身基于纯解码器架构的CPM不同,采用了传统Transformer模型的编码器-解码器框架。CPM-2由两个不同的版本组成:标准的CPM-2版本拥有110亿个参数,而其混合专家(MoE)版本拥有前所未有的规模,拥有1980亿个参数。CPM-2的核心创新在于其具有成本效益的设计;它采用知识继承策略,利用预训练语言模型的现有知识,促进CPM-2的训练过程。此外,它利用了提示调谐,与微调相比,这种方法只需要更新模型参数的0.01%,但仍然能够达到与完全微调相当的性能。
PaLM (2022): PaLM是具有多种参数尺度的纯解码器Transformer语言模型,包括80亿、620亿和5400亿参数的模型。该模型是在一个庞大的数据集上进行预训练的,总计7800亿个token,其中一半这些数据由社交媒体对话组成,27%来自网页内容,其余部分包括书籍和代码等来源。PaLM的创新之处在于其利用Pathways系统进行大规模预训练,促进了TPU v4集群内多个pod的协同计算,实现了模型参数的同步更新,实现了高效并行处理,显著降低了时间成本。在评估方面,在BIG-bench上进行的实验表明,具有5400亿个参数的PaLM版本在短时学习能力上超过了最先进的模型,如GPT-3、Gopher和Chinchilla。此外,该模型在大多数被评估任务上的表现超过了人类的平均水平。
OPT (2022): OPT模型经历了GPT-3 175B的全尺寸复制。采用相同的纯解码器架构,并保持相同的最大参数数量1750亿。重要的是,该团队已经向开源社区完整地发布了OPT模型权重、代码和训练日志。OPT使用的预训练语料库完全由可公开访问的数据组成,总计约180亿个token。它集成了RoBERTa、the Pile和PushShift.io Reddit语料库。OPT和GPT-3在16个数据集上进行了比较,包括零样本、多样本和对话实验。结果表明,OPT的性能与GPT-3大致相当。此外,该团队还分析了OPT的局限性,例如它对说明性指令的次优响应以及产生有害或歧视性内容的可能性。
LLaMA(2023)::LLaMA是由Meta AI开发的一系列大型语言模型,采用了纯解码器的transformer架构,利用了自注意力机制来捕捉文本中的长距离依赖关系。此外,它还采用了多种优化技术以提高训练速度和推理效率。LLaMA展示了出色的零样本、少样本学习能力,可以在没有或仅有少量额外训练的情况下完成各种复杂的NLP任务。例如,它可以进行高质量的文本摘要、对话生成、代码编写等。
PanGu-Σ(2023)::PanGu-Σ 是由华为研发的大型预训练语言模型,它代表了中国企业在自然语言处理领域的重要进展。PanGu-Σ 拥有超过2000亿个参数,这使得它成为全球已知的最大规模之一的语言模型之一。这种庞大的参数量有助于提高模型在复杂任务上的表现,如多步推理、长文本生成等。PanGu-Σ 特别注重对中文的支持,使用了大量的中文语料库进行预训练,包括但不限于新闻、书籍、维基百科等内容。这使得它在处理中文相关的任务时表现出色,例如中文文本生成、问答系统、机器翻译等。
2.多模态大模型
随着大语言模型的兴起,多模态大模型(Large Multimodal Models,lmm)成为一个热门的研究课题,多模态大模型是指能够处理和理解来自多种不同数据类型或模态(如文本、图像、音频、视频等)的大型预训练模型。这些模型利用LLM作为中心枢纽来处理多模态任务,从单一的文本模态扩展到包括图像、音频和视频等模态,通过整合不同模态的信息,提供了比单一模态模型更丰富和全面的数据表示,从而能够在多种任务中得到出色的表现。
2.1.LMM的结构
多模态大模型通常由以下五个部分组成,分别是多模态编码器、输入模态对齐器、预训练的LLM主干、输出模态对齐器和多模态解码器。
多模态编码器旨在从多种输入模态(如文本、图像、视频和音频)中提取特征。在lmm的背景下,预训练编码器通常使用其参数冻结,以利用其特征提取能力。
输入模态对齐器负责将由多模态编码器提取的来自不同模态的特征向量对齐到文本特征空间,然后将它们转换为与LLM兼容的特征表示。在这种情况下使用的主要输入模态对齐器包括线性映射器、多层感知机(MLP)、Querying-Transformer、Prompting-Transformer、多尺度查询Transformer和交叉注意层。
上游LMM使用预训练或微调的LLM作为主干,这是LMM架构的核心。上游LLM主干接收对齐的多模态输入,利用其在文本特征空间中的理解、推理和生成能力来生成文本输出或指令token。这些指令token响应用户提供的提示,并用于引导其他组件执行更复杂的跨模态任务。
输出模态对齐器与输入模态对齐器相比,输出模态对齐器将上游LLM主干产生的指令token映射为与解码为目标非语言模态兼容的特征表示。常用的输出模态对齐器包括线性对齐器、多层感知机(MLP)和带Encoder-Decoder结构的Transformer。
多模态解码器是指对经过输出模态对齐器后处理的特征进行解码的组件。其目的是生成各种目标模态的输出,不同的多模态内容类型采用不同的解码器选项。
2.2.LMM的训练
LMM的训练不包含多模态编码器、上游LLM骨干和多模态解码器这些预训练组件,而仅需要分别训练输入模态对齐器和输出模态对齐器。LMM的训练目标有两个,第一是通过输入模态对齐器将多模态输入对齐到文本特征空间中,第二是通过训练输出模态对齐器将指令 token 映射回生成器可理解的特征来确保多模态输出的质量。
2.3.LMM的指令调优
指令调优最初是在FLAN中引入的一种训练技术,涉及使用包含特定格式指令的小型专业化数据集对预训练的大语言模型进行精炼。该技术旨在以减少的数据集规模和更少的参数更新,实现微调和提示的效果,从而增强模型理解人类指令的能力,并提高其零样本性能。
许多单模态大语言模型(如 GPT-3 、InstructGPT 、T0 )上的指令调优的成功也可以扩展到多模态领域。目前,多模态指令调优数据集主要采用三种构建形式:数据集适配、自我指令合成以及两者的结合。
- 数据集适配(dataset Adaptation):数据集适配以低成本和高速度的特点调整现有大规模标注数据集的格式,从而创建合适的指令数据。这种方法已被 MiniGPT-4和 InstructBLIP 等模型采用。然而,它依赖于人工干预,并且通过直接采用或浅层次修改原始注释的方法缺乏新颖性,这使得其在广泛推广到新场景时可能存在缺陷。
- 自我指令合成(Self-Instruction Synthesis):自我指令合成利用了大语言模型(LLM)的理解和生成能力,通过少量手动标注的模板样本指导像 GPT-4 这样的大型语言模型重构现有的标注数据集,以创建指令数据。Shikra、VideoChat和 LLaVAR 等模型采用了这种方法。它具有灵活的数据生成机制,确保了指令数据的多样性和对现实世界情境的泛化能力。然而,依赖于 LLM 的LMM也引入了与这些模型相关的固有幻觉问题。
2.4.LMM的提示工程
在大模型中,提示工程为了避免更新模型参数,通过使用提示token来优化大模型的性能。而在多模态大模型中,提示工程将大语言模型的上下文学习和思维链演变为多模态上下文学习和多模态思维链范式。
-
多模态上下文学习:大语言模型利用上下文学习技术,使他们能够在推理阶段实现与微调相当的几次性能,这仅仅依赖于下游任务的少量演示。而在多模态大模型中,通过提供跨模态的演示,将上下文学习扩展到多模态上下文学习时,可以提高性能。
-
多模态思维链:思维链的概念最初是作为大语言模型中一种处理复杂推理任务的技术而出现的。它促使语言模型将复杂问题分解为一系列子问题并迭代求解,从而显著提高LLM的性能。一些研究将单模态 CoT 推广到了多模态 CoT(M-CoT),可以根据不同的提示范式分类,如零样本 M-CoT、少样本M-CoT 和微调 M-CoT。在零样本 M-CoT下,不使用任何示例来引导 LMM 进行 CoT 过程;相反,在推理阶段通过简单的文本指令触发模型的推理能力。少样本 M-CoT类似于上下文学习,提供少量详细说明中间推理步骤的示例。而微调M-CoT需要使用特定数据集对 LMM 的推理能力进行微调。通常,前两种方法更适用于较大的 LLM,而后一种方法常用于较小的模型。关于模态对齐,M-CoT 可进一步分为翻译映射和可学习映射。翻译映射指的是将非文本模态输入直接转换为文本描述,通过“翻译”有效地将非文本模态信息传递给文本模态,然后再参与 CoT 推理。不过这个过程不可避免地会丢失一些模态特定的信息。而可学习映射构建一个可训练的模型,将其他模态的特征整合到文本特征空间中,形成联合嵌入,这将作为输入供 LLM 进行 CoT 推理。
2.5.LMM的分类
2.5.1.Image+Text to Text
“图像+文本到文本”模型也被称为图像理解模型,构成了LMM领域内研究最广泛的一类模型。在目前主流的图像理解模型中,CLIP-ViT是目前采用最广泛的视觉编码器,紧随其后的是Eva-CLIP-ViT。这些编码器明显优于其他类型的视觉编码器。这种优势可能源于CLIP采用的对比学习范式,再加上它的4亿个高质量图像-文本对,这两者共同赋予了它强大的视觉特征提取能力。
此外,线性映射器和交叉注意层经常被用作多模态对齐器,这可能是因为与P-former等对齐器相比,它们的结构简单且性能效率高。还有一种方法是采用自定义的模态对齐器设计。例如,mPLUGOwl2引入了一种模态自适应模块,旨在准确计算和比较共享语义空间内不同模态之间的相似性。与此同时,MobileVLM系列使用了轻量级下采样投影器(LDP),与Q-former不同,它在架构轻量级的同时保持了视觉特征的空间位置信息。
对于上游LLM的偏好,Vicuna已经超过了LLaMA系列成为了主流选择。Vicuna作为一种衍生模型,在ShareGPT.com的监督数据上进行微调,与LLaMA相比,表现出更优越的性能。这一现象阐明了图像理解模型领域内的一种技术偏好,即倾向于结合轻量级、低训练成本和高质量对话的LLM。
2.5.2.Video+Text to Text
与图像理解模型相比,用于视频理解的“视频+文本到文本”模型的数量相对较少。由于在处理视频和图像方面具有相似性,视频理解模型也具有理解图像的能力。
在图像生成模型的背景下,CLIP ViT通常作为视觉编码器组件的普遍选择,Stable Diffusion模型主要用作视觉生成器。此外,上游大语言模型主干的选择呈现出更高程度的多样性,从Vicuna到LLaMA,甚至延伸到基于web的ChatGPT。这些模型的特点是实现方法更加多样化。例如在Visual-ChatGPT和DiffusionGPT中,模型结构并不是端到端设计,而是整合ChatGPT来细化提示优化。
2.5.3.Image+Text to Text+Image
“Image+Text to Text+Image”类别中的模型不应被视为单纯的图像生成模型,而应该被视为图像编辑模型和生成模型。这类模型被赋予了对输入图像执行各种操作的能力,包括提取、注释和分割,这导致它们被归类为图像处理模型。例如,CogCoM能够执行裁剪和放大操作以获取详细的本地视觉内容,并且可以通过OCR识别图像中的文本信息,同时基于视觉输入进行推理。虽然图像编辑并不等同于图像生成,但它确实体现了LMM理解和操纵视觉输入数据的能力。
2.5.4.Video+Text to Text+Video
“视频+文本到文本+视频”模型可以概念化为视频生成模型,例如CoDi-2、ModaVerse和NExT-GPT等模型体现了能够理解或生成文本、音频、图像和视频内容的“任意到任意”大型多模态模型。
在所使用的组件中,ImageBind是最常用的视觉编码器,而LLaMA 2代表了上游LLM主干的普遍选择。对于视频生成器,主流的选择是HuggingFace的ZeroScope系列开源模型,这是阿里巴巴DAMO研究院开发的视频生成模型。该模型自动生成与用户提供的文本描述一致的视频,融合了视觉元素(场景)、音频元素(音乐和音效)和字幕。此外,HuggingGPT采用了Visual-ChatGPT的设计理念,采用ChatGPT作为其上游LLM主干,对用户提示进行理解、处理和细化。此外,它利用社区内各种现有外部模型的功能来促进多模态输入-输出交互。
目前,无论是基于LMM、Latent Diffusion models,还是基于gan,视频生成模型都只能生成几秒的视频,并且在逻辑一致性和真实性方面都还存在不足。在此背景下,OpenAI于2024年2月推出了Sora模型,该模型通过理解文本描述,不仅可以生成长达一分钟的高清视频内容,而且还遵守现实世界的物理定律并保持逻辑连续性。但是,Sora模型的技术细节和内部工作原理都没有公开披露,真实性仍然存疑。
4.总结
本文简单回顾了从单模态大语言模型到多模态的发展轨迹,分别从两者的结构、训练、调优和提示工程等方面进行了详细的介绍。大语言模型(LLM)的发展从基于文本的单一模态处理迅速扩展至多模态领域,催生了能够理解和生成多种数据类型(如文本、图像、音频、视频等)的大型多模态模型(LMM)。多模态大模型进一步推动了这一趋势,通过整合不同模态的信息,实现了比单一模态模型更丰富全面的数据表示。在应用层面,LMM不仅限于“图像+文本到文本”类别的图像理解,还包括“视频+文本到文本”、“图像+文本到文本+图像”和“视频+文本到文本+视频”的模型,展示了其在图像编辑、视频生成等领域的潜力。尽管当前的视频生成模型在长度和逻辑一致性上仍存在局限,但诸如Sora这样的新模型已经展现出突破性的进展,预示着未来多模态模型将在通用人工智能(AGI)发展中扮演重要角色。
相关文章:
【第二十四周】从大语言模型到多模态大模型的发展
摘要 大语言模型(Large Language Model, LLM)是指一类基于深度学习的人工智能系统,它们被设计用来理解和生成自然语言。这些模型通常是在大量的文本数据上进行训练的,通过学习文本中的模式和结构,它们能够执行各种各样…...
深入理解Java的 JIT(即时编译器)
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
数据库技术文档撰写:全方位剖析
在技术的浩瀚海洋中,一份优秀的技术文档宛如精准的航海图。它是知识传承的载体,是团队协作的桥梁,更是产品成功的幕后英雄。然而,打造这样一份出色的技术文档并非易事。你是否在为如何清晰阐释复杂技术而苦恼?是否纠结…...
设计模式之原型模式:深入浅出讲解对象克隆
~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 原型模式概述 在我们的日常生活中,经常会遇到"复制"这样的场景。比如我们在准备文件时,常常会复印一份原件&a…...
centos 查看版本
在 CentOS 中,查看系统版本有多种方法。以下是几种常用的方法: 方法 1:使用 cat 命令查看 /etc/centos-release 文件 cat /etc/centos-release 这个文件包含了 CentOS 的版本信息。例如,输出可能是: CentOS Linux rel…...
如何本地存储中的文件路径
文章目录 1. 概念介绍2. 实现方法3. 示例代码我们在上一章回中介绍了"如何实现本地存储"相关的内容,本章回中将介绍如何实现文件存储.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在上一章回中介绍的本地存储只能存储dart语言中基本类型的数值,如果遇到…...
服务器加固
1.服务器密码复杂度 密码最小长度,密码复杂度策略 vim /etc/pam.d/system-auth --------------- #密码配置 #ucredit:大写字母个数;lcredit:小写字母个数;dcredit:数字个数;ocredit:…...
MongoDB change stream实战
什么是 Chang Stream Change Stream指数据的变化事件流,MongoDB从3.6版本开始提供订阅数据变更的功能。 Change Stream 是 MongoDB 用于实现变更追踪的解决方案,类似于关系数据库的触发器,但原理不完全相同: Change Stream 的实…...
TSWIKI知识库软件
TSWIKI 知识库软件介绍 推荐一个适合本地化部署、自托管的知识库软件 TSWIKI介绍 tswiki 是一个适合小团队、个人的知识库、资料管理的软件,所有数据均本地化存储。可以本地化、私有云部署,安装简单。在线预览。 主要功能说明 1、简化的软件依赖和安…...
【Linux课程学习】第十九弹---深入理解进程间通信---匿名管道,命名管道,多匿名管道的BUG
🎁个人主页:我们的五年 🔍系列专栏:Linux课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 Linux学习笔记: https://blog.csdn.n…...
【C语言】库函数常见的陷阱与缺陷(1):字符串处理函数
目录 一、 strcpy 函数 1.1. 功能与常见用法 1.2. 陷阱与缺陷 1.3. 安全替代 1.4. 代码示例 二、strcat 函数 2.1. 功能与常见用法 2.2. 陷阱与缺陷 2.3. 安全替代 2.4. 代码示例 三、strcmp 函数 3.1. 功能与常见用法 3.2. 陷阱与缺陷 3.3. 安全替代 3.4. 代…...
Qt中的 tableView 设置 二进制 十六进制 序号表头
二 进制序号 因为QTableView的垂直表头并不支持使用委托来自定义。 相反,可以通过将自定义的QWidget作为QHeaderView的标签来实现这一目标。 代码: #include <QApplication> #include <QMainWindow> #include <QVBoxLayout> #include …...
leetCode121.买卖股票的最佳时机
题目: 给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。 你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你…...
基于单片机的自限位电机正反转控制电路
【摘要】 针对减速直流电机正反转和停转控制问题,设计了正反转及自限位控制电路,编制了基于STM8S103单片机的控制电机正反转及自限位的子程序,并应用IAR软件进行仿真,搭建实验装置验证设计效果,实验结果表明所设计控制电路能够良好地控制电机正转、反转和停转,在生活实际…...
为什么使用 Token 而不是 Cookie 来管理用户认证和会话
使用 Token 而不是 Cookie 来管理用户认证和会话的原因主要有以下几点: 跨域问题 (Cross-Domain) Token:通常是存储在客户端的 localStorage 或 sessionStorage 中,不会自动随请求发送到服务器,这使得它在处理跨域请求时更加灵活…...
WIDER FACE数据集转YOLO格式
1. 引出问题 本人最近在做毕设相关内容,第一阶段目标是通过目标检测来统计课堂人数,因此需要对人脸和人头进行目标检测。模型方面没什么好说的无脑用YOLO,数据集方面,人脸部分找到了来自港中文的WIDER FACE数据集。但是解压后发现…...
机器学习概述详解
文章目录 机器学习概述详解一、引言二、机器学习基础1、机器学习定义及应用场景2、监督学习与无监督学习 三、机器学习开发流程四、使用示例1、LeNet网络结构代码示例2、AlexNet网络结构代码示例 五、总结 机器学习概述详解 一、引言 机器学习作为人工智能的一个重要分支&…...
VTK编程指南<三>:基于VTK入门程序解析来理解VTK基础知识
1、VTK入门程序 下面是一个完整的Vtk入门程序,我们基于这个程序来对VTK的基本知识进行一个初步了解。 #include <iostream>#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2);// VTK was built with vtkRenderingOpenGL2 VTK_MODULE_INI…...
【UE5 C++课程系列笔记】07——使用定时器实现倒计时效果
使用定时器实现如下倒计时效果 效果 步骤 1. 新建一个Actor类,这里命名为“CountDownTimerActor” 2. 在头文件中先定义倒计时时间和更新剩余时间的函数方法 前向声明一个文本渲染组件 3. 在源文件中引入文本渲染组件 创建文本渲染组件并进行一些设置 实现Update…...
基于DDPM的PyTorch简单实现
基于DDPM的PyTorch简单实现 文章目录 基于DDPM的PyTorch简单实现摘要Abstract一、DDPM实现1. 获取数据集2. DDPM类3. 训练算法4. 去噪神经网络5. 实验结果与采样 总结 摘要 本周的学习与实践围绕扩散模型(Diffusion Model)的基础理论和实现展开…...
php laravel 学习管理系统(LMS)
Lernen LMS(学习管理系统)是一个综合性的在线教育平台,旨在为学生和导师提供灵活、高效、便捷的学习体验。该系统不仅帮助学生找到最适合自己的导师,还通过一系列强大的功能,提升了课程安排、学习管理和师生互动的效率…...
【JAVA】Java高级:数据库监控与调优:SQL调优与执行计划的分析
作为Java开发工程师,理解SQL调优和执行计划的分析是至关重要的。这不仅可以帮助我们提高数据库查询的效率,还能减少系统资源的消耗,提升整体应用的性能。 1. SQL调优的重要性 随着数据量的增加和用户请求的增多,数据库的性能问题…...
centos9升级OpenSSH
需求 Centos9系统升级OpenSSH和OpenSSL OpenSSH升级为openssh-9.8p1 OpenSSL默认为OpenSSL-3.2.2(根据需求进行升级) 将源码包编译为rpm包 查看OpenSSH和OpenSSL版本 ssh -V下载源码包并上传到服务器 openssh最新版本下载地址 wget https://cdn.openb…...
jeccg-boot修改密码
最近在使用jeccg-boot框架,遇到一个需要批量修改用户密码的问题 由于框架使用的是加密盐算法生成的密码 ,无法直接通过数据库修改密码 例如将password字段和salt值复制过去,密码是不对的 查看代码发现通过user.getUsername(), user.getPasswo…...
linux 生成 nginx 的https ssl 证书详解
证书生成 1. 生成证书 会提示输入密码,输入两次相同密码即可。 openssl genrsa -des3 -out server.key 20482. 去除密码校验 如果想去除此输密码的步骤,可以执行如下命令,根据使用需求选择。 openssl rsa -in server.key -out server.ke…...
详细介绍vue的递归组件(重要)
递归组件在 Vue 中是一个非常强大的概念,尤其在渲染层级结构(如树形结构、嵌套列表、评论系统等)时,能够极大地简化代码。 什么是递归组件? 递归组件就是一个组件在其模板中引用自身。这种做法通常用于渲染树形结构或…...
gitlab配置调试minio
官方文档 rails console 调试 查看配置Settings.uploads.object_store加载minio clientrequire fog/awsfog_connection Fog::Storage.new(provider: AWS,aws_access_key_id: 你的MINIO_ACCESS_KEY,aws_secret_access_key: 你的MINIO_SECRET_KEY,region: <S3 region>,e…...
Docker(Nginx) 部署 uniapp
目录 一、准备工作 1.Docker安装nginx 2.安装HBuild X工具 二、HBuild X打包项目 1.在HBuild X导入项目 2.配置manifest.json 3.打包 (1)点击发行 (2)填写信息,点击发行 三、nginx部署uniapp 1.生成文件上传…...
Camp4-L2:LMDeploy 量化部署进阶实践
书生浦语大模型实战营第四期:LMDeploy 量化部署进阶实践 教程链接:https://github.com/InternLM/Tutorial/tree/camp4/docs/L2/LMDeploy视频链接:https://www.bilibili.com/video/BV18aUHY3EEG/?vd_sourceb96c7e6e6d1a48e73edafa36a36f1697…...
第二十四周学习周报
目录 摘要Abstract1. 文献阅读1.1 RNN1.2 Deep Recurrent Neural Networks1.3 实验1.4 讨论 2. AI虚拟主播生成总结 摘要 本周的主要任务是阅读了一篇关于循环神经网络的论文,该论文旨在探索将RNN扩展到深度RNN的不同方法。论文通过对RNN结构的理解和分析ÿ…...
深入解析 Android PMS —— APK 安装与解析全流程
文章目录 前言1. PMS 的初始化1.1 SystemServer 启动 PMS1.2 PMS 的入口方法 main1.3 PMS 构造函数1.4 扫描 APK 文件1.5 权限初始化1.6 提供对外服务 2. APK 安装机制2.1. 安装请求的触发2.2 APK 文件解析与验证2.3 签名校验2.4 权限管理2.4.1 权限声明2.4.2 权限校验与分配 2…...
RL仿真库pybullet
1. 介绍 PyBullet是一个基于Bullet Physics引擎的物理仿真Python接口,主要用于机器人仿真模拟。 1.1 主要特点 提供大量预设的机器人模型,例如URDF(统一机器人描述格式)、SDF、MJCF 格式。适用于训练和评估强化学习算法,提供了大量的强化学…...
Vue3组件通信(父传子,子传父,跨组件通信)
本文主要是讲述Vue3在setup语法糖下的组件间通信 Vue组件通信是指在Vue.js中,不同组件之间进行信息交流和共享数据的过程。在前端开发中,组件通信是非常重要的一部分,因为在一个复杂的应用中,不同的组件通常需要相互协作ÿ…...
从失败中学习:如何将错误转化为学习机会
失败是人生的一部分,无论是在个人生活还是职业生涯中,我们都难免会遇到挫折和错误。然而,失败并不意味着终结,而是一个潜在的学习机会。通过正确的态度和方法,我们可以从失败中汲取经验,转化为成长的动力。…...
[0629].第29节:配置中心业务规则与动态刷新
我的后端学习大纲 SpringCloud学习大纲 1、编码实现3377服务: 1.1.建module: 1.2.改pom: 1.3.写YML: 1.Nacos同Consul一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正…...
JUC并发编程
进程:系统中正在运行的一个应用程序,程序一旦运行就是进程,是资源分配的最小单元。 线程:系统分配处理器时间资源的基本单元,进程之内独立执行的一个单元执行流,是程序执行的最小单位。 Lock 需要手动上…...
贪心算法解题方法介绍+实操案例——会场安排与月饼售卖问题解析
从贪心算法到实操案例——会场安排与月饼售卖问题解析 前言 贪心算法是一种通过选择局部最优解来尝试构建全局最优解的算法。它简单高效,适用于许多优化问题。本文将详细介绍贪心算法的一般解题步骤,并通过两个实例——月饼售卖问题和会场安排问题——…...
ASP.NET Core API 前后端分离跨域
环境准备 数据库: sqlserver 2022 后端: vs2022 ASP.NET Core API .net 8 前端: Hbuilderx bootstrap 5.3.0 jquery v3.7.1 bootstrap-table 1.23.5 完整项目代码下载地址 功能 实现 单张表 的 增 删 改 查 创建数据库和表 create data…...
用Python绘制医学热图
在医学研究和临床实践中,数据的可视化是不可或缺的一部分。通过直观的数据展示,医学专业人员可以更好地理解各种疾病的治愈率、治疗效果以及医院之间的差异。今天,我们将介绍一种强大的数据可视化工具——热图(Heatmap)…...
使用 Spring Boot 和 GraalVM 的原生镜像
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:历代文学,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计…...
Flutter解压文件并解析数据
Flutter解压文件并解析数据 前言 在 Flutter 开发中,我们经常需要处理文件的读取和解压。 这在处理应用数据更新、安装包、存档文件等场景中尤为常见。 本文将介绍如何在Flutter中使用archive插件来解压文件并解析数据。 准备 在开始之前,我们需要…...
深入理解 JavaScript 引擎与消息队列的底层原理
深入理解 JavaScript 引擎与消息队列的底层原理 JavaScript 是现代 Web 开发中最为重要的编程语言之一,它的运行和执行方式常常是开发者关注的重点。为了更好地理解 JavaScript 的执行过程,我们需要深入探索 JavaScript 引擎的工作原理,尤其…...
使用 ANSYS Forming 和 LS-DYNA 进行金属成形仿真简介
了解金属成型 金属成型是制造业中的关键过程,其中原材料通过变形转化为所需的形状。这可能包括冲压、弯曲和深拉等操作。这些工艺的质量和效率在很大程度上取决于对各种参数的精确控制,例如材料特性、工具几何形状和加工条件。为了优化这些参数并确保成功…...
001-mysql安装
[rootcentos701 ~]# hostname -I 10.0.0.200 172.17.0.1 [rootcentos701 ~]# hostname centos701 [rootcentos701 ~]# rpm -qa | grep mariadb [rootcentos701 ~]# rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64 [rootcentos701 ~]# useradd mysql -s /sbin/nologin #创建…...
以攻击者的视角进行软件安全防护
1. 前言 孙子曰:知彼知己者,百战不殆;不知彼而知己,一胜一负,不知彼,不知己,每战必殆。 摘自《 孙子兵法谋攻篇 》在2500 年前的那个波澜壮阔的春秋战国时代,孙子兵法的这段话&…...
Go 语言性能优化全解析
在当今的软件开发环境中,Go 语言(Golang)因其简洁的语法、高效的并发模型和快速的编译速度而备受青睐。然而,随着应用程序复杂性的增加,即使是在 Go 中也可能会遇到性能瓶颈。为了帮助开发者构建高性能的应用程序&…...
《智能体雏形开发(高阶实操)》二、智能体雏形开发
基于阿里云百炼平台开发智能体应用:生成日报与周报 在智能体开发中,生成结构化的日报与周报是一个典型的任务。本篇文章将基于阿里云百炼平台,结合 Python 开发环境,介绍如何开发一个从日志文件提取信息并生成摘要的智能体。我们将从需求分析、任务设计到核心功能实现逐步…...
【k8s】kubelet 和 API Server的关系
文章目录 概述1. # kubelet 和 API Server 之间的关系**1. 角色和功能****1.1 kubelet****1.2 API Server** **2. 交互关系****2.1 kubelet 从 API Server 获取指令****2.2 kubelet 向 API Server 上报状态****2.3 kubelet 与 API Server 的认证和授权** **3. 典型交互场景****…...
POSTGRESQL跟ORACLE语法区别和相同之处
跟ORACLE语法区别之处 1. Update和delete语法区别 Pg 和MySQL Update和delete的时候表名不能加别名 2. 插入数字类型不一样 ORACLE 对number类型的数据可以用’’ 字符串标记插入,但是PG不行,必须要进行正确的数据类型 3. SEQ使用不同 ORACEL的SEQ…...
Distance in Tree 树形dp练习(树中两点距离为k的数量板子)
Distance in Tree 题面翻译 题目大意 输入点数为 N N N一棵树 求树上长度恰好为 K K K的路径个数 输入格式 第一行两个数字 N , K N,K N,K,如题意 接下来的 N − 1 N-1 N−1行中,每行两个整数 u , v u,v u,v表示一条树边 ( u , v ) (u,v) (u,v) 输出格式 一个整数 a n…...