如何将大型语言模型(LLM)转换为嵌入模型

译文
人工智能
嵌入模型已经成为大型语言模型(LLM)应用的重要组成部分,可以实现检测文本相似度、信息检索和聚类等任务。然而,与生成任务中使用的架构不同,嵌入模型主要基于Transformer架构。

译者 | 李睿

审校 | 重楼

实验证明,LLM2Vec模型在嵌入任务上具有更好的性能,它可以为组织开辟新的场所,并以非常低的成本快速创建专门的嵌入模型。

嵌入模型已经成为大型语言模型(LLM)应用的重要组成部分,可以实现检测文本相似度、信息检索和聚类等任务。然而,与生成任务中使用的架构不同,嵌入模型主要基于Transformer架构。这使得很难将生成模型上的大量工作转移到改进的嵌入模型上,并且需要额外的并行工作。

在一项新的研究中,魁北克人工智能研究所(Mila)和ServiceNow Research公司的研究人员采用了一种简单的无监督方法——LLM2Vec,可以将仅解码器(Decoder-only)的LLM转换为强大的文本编码器。实验证明,LLM2Vec模型在嵌入任务上具有更好的性能。

LLM2Vec直观而高效,它可以为组织开辟新的场所,并以非常低的成本快速创建专门的嵌入模型。

用于嵌入的仅解码器Transformer

目前,用于嵌入模型的主要架构是预训练的双向编码器或编码器-解码器,例如BERT和T5。与GPT和Llama等解码器模型不同的是,这些模型的设计目的不是生成令牌,而是将其语义内容编码为数字向量。

最近,研究人员一直在探索用于嵌入文本的仅解码器LLM。解码器模型的使用有限,部分原因是它们的单向注意力机制,这对于生成任务很有用,但对于学习丰富的嵌入模型来说却不尽如人意。

麦吉尔大学和魁北克人工智能研究所(Mila)博士生、LLM2Vec论文的主要作者Parishad BehnamGhader表示,“我们需要强大的指令跟随文本编码器,例如应用在检索中,这是我们探索如何使用仅解码器的LLM进行文本表示的原因。”

仅解码器的LLM适合于嵌入任务有几个原因:首先,他们的训练方法使它们从所有输入令牌中学习,而不是在训练期间屏蔽部分输入的编码器模型。其次,在解码器LLM上有很多活动,并且有一个具有丰富的模型、技术和工具生态系统可供选择。最后,针对指令遵循和人类偏好进行了微调的LLM可以作为通用文本嵌入模型的基础,该模型可以在许多任务中推广。

LLM2Vec

LLM2Vec是一种简单的无监督方法,可用于将任何仅解码器的LLM转换为嵌入模型。

BehnamGhader说,“当我们开始开发这个项目时,只有少数论文使用仅解码器的LLM进行文本表示。然而,他们主要关注的是监督微调。相比之下,我们的目标是建立一个简单的通用方法,可以应用于任何仅解码器的LLM,并且不一定需要令牌的训练数据。因此,我们的重点是对无监督和有监督的公开数据进行参数的高效微调。”

LLM2Vec由三个简单步骤组成:首先,修改模型以实现双向注意。这使得每个令牌都能够关注所有其他令牌,而不是像仅解码器LLM那样只看到先前的令牌。

接下来,使用掩蔽下一个令牌预测(MNTP)对模型进行训练。MNTP将下一个令牌预测与掩码语言建模相结合。

最后,该模型在SimCSE上进行了微调,SimCSE是一种用于句子嵌入的无监督对比学习技术。对于这一步骤,训练输入序列是重复的,由于模型的丢弃,每个序列都有不同的掩码节点。这导致同一序列有两种不同的表示形式。对比学习目标迫使模型最大化相同输入序列的修改版本之间的嵌入的相似性,并最小化与批处理中其他序列的表示的相似性。这一步骤可以应用于任何序列集合,这显著地减少了收集训练数据所需的工作量。

BehnamGhader说,“LLM2Vec是一种通用的方法,适用于任何仅解码器的LLM。鉴于仅解码器LLM在我们的领域中无处不在,我们认为能够将其转换为编码器是很重要的,这为从头开始训练编码器提供了一种计算效率更高的替代方案。”

许多LLM应用程序使用检索增强生成(RAG),这需要嵌入段落和文档。使用LLM2Vec,相同的仅解码器的LLM可以作为嵌入和生成任务的主干。这减少了对基础设施的需求,并使嵌入和生成模型保持一致。

BehnamGhader说:“我们相信,文本嵌入任务(如检索)可以从仅解码器LLM的功能获益,例如它们的指令跟踪行为。”

LLM2Vec的应用

研究人员将LLM2vec应用于三个仅解码器的LLM,范围从13亿到70亿个参数,并评估了单词和序列级任务的结果模型。

他们使用来自英语维基百科的数据执行了MNTP和无监督对比学习步骤,因为这些数据包含在他们实验的模型的预训练混合中。这是为了确保这两个步骤不会教给模型任何新的知识,除了如何处理未来的令牌和如何构建序列表示。

他们使用低秩自适应(LoRA)来降低模型的训练成本。有趣的是,在80GB的A100 GPU上,使用LLM2Vec微调70亿个参数模型的整个过程只用了不到4个小时,这意味着成本不到10美元。鉴于 LLM2Vec 中使用的训练数据是从训练解码器模型时使用的语料库中提取的,因此整个过程快速高效。

他们的实验表明,LLM2Vec模型特别适用于序列级任务。在大规模文本嵌入基准(MTEB)上,LLM2Vec转换的模型为无监督模型树立了新的技术水平。

由于大多数仅编码器的模型只是仅解码器LLM的一小部分,研究人员还在小型模型上测试了LLM2Vec。

BehnamGhader说,“可以肯定的是,使用LLM2Vec转换的仅解码器模型的大小会影响其性能。为了证明LLM2Vec不仅适用于大型模型,我们还将其应用于相对较小的仅解码器模型。”

他们在具有13亿个参数的Sheared-LLaMA模型上的实验表明,LLM2Vec在小型模型上的应用也是有效的。研究人员开源了LLM2Vec的源代码,还发布了他们为实验训练的模型。

BehnamGhader说,“LLM2vec是朝着更好地利用这些模型进行文本嵌入任务的方向迈出的第一步。让我们特别兴奋的是可以采用这种方法应用于低资源设置,并使用它来为我们没有足够的训练数据来从头开始训练模型的语言创建编码器模型。”

原文标题:How to turn any LLM into an embedding model,作者:Ben Dickson

链接:https://bdtechtalks.com/2024/04/22/llm2vec/。

想了解更多AIGC的内容,请访问:

51CTO AI.x社区

https://www.51cto.com/aigc/

责任编辑:姜华 来源: 51CTO内容精选
相关推荐

2023-06-19 16:05:22

大型语言模型人工智能

2024-08-13 08:09:34

2023-11-06 08:38:50

LLM语言模型ChatGPT

2023-10-08 15:54:12

2024-04-16 16:14:01

人工智能LLMRAG

2022-07-19 10:53:57

模型算法智能

2009-07-15 16:56:59

Jython类型Java类型

2018-03-23 09:29:56

深度学习神经网络前端设计模型

2017-05-25 15:14:36

2024-02-19 15:38:08

JsonPython字符串

2020-12-17 08:08:15

CentOS

2009-07-31 14:09:41

c#时间格式转换

2024-07-10 11:38:15

2024-03-29 09:00:00

大型语言模型ChatGPT

2023-10-16 09:26:48

CSS类型转换

2024-09-29 09:32:58

2021-12-29 16:40:54

Python语言字符串

2023-06-09 08:00:00

QLoRa语言模型微调

2024-04-25 14:40:47

2024-03-29 15:43:32

大型语言模型人工智能
点赞
收藏

51CTO技术栈公众号