Generative Adapter: Contextualizing Language Models in Parameters with A Single Forward Pass
作者: Tong Chen, Hao Fang, Patrick Xia, Xiaodong Liu, Benjamin Van Durme, Luke Zettlemoyer, Jianfeng Gao, Hao Cheng
分类: cs.LG, cs.AI, cs.CL, stat.ML
发布日期: 2024-11-08
💡 一句话要点
GenerativeAdapter:通过单次前向传播将上下文信息注入语言模型参数中
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 语言模型适应 适配器生成 低秩适配器 上下文学习 知识注入 个性化 自监督学习
📋 核心要点
- 现有语言模型适应方法(微调、提示)存在计算成本高或推理开销大的问题。
- GenerativeAdapter通过训练适配器生成器,将上下文直接映射到低秩适配器,无需微调,降低推理开销。
- 实验表明,GenerativeAdapter在知识获取、上下文学习和个性化方面均优于基线模型,且计算成本更低。
📝 摘要(中文)
大型语言模型(LMs)通常通过微调或提示来适应新的上下文(例如,定义新任务或领域的文本提示),以提高性能。然而,这存在准确性和计算成本之间的权衡——微调需要大量的训练成本,而提示会增加推理开销。我们引入了$GenerativeAdapter$,这是一种有效且高效的适应方法,它直接将新的上下文映射到低秩LM适配器,从而显著降低推理开销,而无需微调。适配器生成器通过自监督学习进行训练,并且可以通过将相关的任务或领域上下文映射到新的适配器,用于为任何新任务调整单个冻结的LM。我们将$GenerativeAdapter$应用于两个预训练的LM(Mistral-7B-Instruct和Llama2-7B-Chat),并在三种适应场景中评估了调整后的模型:从文档中获取知识、从演示中学习以及为用户进行个性化。在StreamingQA中,我们的方法有效地将知识注入到LM的参数中,对于长达32K tokens的上下文,F1得分比监督微调的模型提高了63.5%(从19.5%提高到31.5%)。在MetaICL上下文学习评估中,我们的方法在26个任务中实现了44.9%的平均准确率,优于基础模型。在MSC上,我们的方法在记忆来自对话的用户信息方面表现出很强的竞争力,与使用完整对话历史进行提示相比,计算和内存成本降低了4倍。总之,这些结果表明,$GenerativeAdapter$应该可以广泛适应各种不同的上下文。
🔬 方法详解
问题定义:现有的大型语言模型适应方法,如微调和提示,存在明显的局限性。微调需要大量的计算资源和时间,而提示则会显著增加推理过程中的计算开销。因此,如何在不进行昂贵的微调,同时避免推理时的高成本的情况下,使语言模型能够快速适应新的上下文,是一个亟待解决的问题。
核心思路:GenerativeAdapter的核心思路是训练一个适配器生成器,该生成器能够根据给定的上下文(例如任务描述、文档内容或用户对话历史)直接生成一组低秩适配器参数。这些适配器参数随后被注入到预训练的语言模型中,从而使模型能够适应新的上下文,而无需进行任何额外的训练。这种方法避免了微调的计算成本,同时由于适配器参数是预先生成的,因此也避免了推理时的高开销。
技术框架:GenerativeAdapter的整体框架包括以下几个主要模块:1) 上下文编码器:用于将输入的上下文信息编码成一个向量表示。2) 适配器生成器:一个神经网络,它接收上下文向量作为输入,并生成一组低秩适配器参数。3) 冻结的预训练语言模型:一个预先训练好的大型语言模型,其参数在适应过程中保持不变。4) 适配器注入模块:将生成的适配器参数注入到预训练语言模型的特定层中,从而使模型能够适应新的上下文。整个过程通过自监督学习进行训练,目标是使适应后的模型在特定任务上表现良好。
关键创新:GenerativeAdapter最重要的技术创新点在于它将上下文适应问题转化为一个生成问题。通过训练一个适配器生成器,该方法能够直接将上下文信息映射到模型参数,从而避免了传统方法的计算成本和推理开销。与传统的适配器方法不同,GenerativeAdapter无需为每个任务单独训练适配器,而是通过生成的方式实现适配,从而大大提高了效率和灵活性。
关键设计:适配器生成器通常采用Transformer架构,其输入是上下文编码器的输出,输出是低秩适配器的参数。损失函数通常包括两部分:一部分是重构损失,用于确保生成的适配器参数能够有效地重构原始的上下文信息;另一部分是任务相关的损失,用于确保适应后的模型在特定任务上表现良好。适配器的注入位置通常选择在Transformer层的Feed Forward Network (FFN) 之后,并且采用低秩分解来减少参数量。
🖼️ 关键图片
📊 实验亮点
GenerativeAdapter在三个适应场景中表现出色。在StreamingQA中,F1得分比监督微调的模型提高了63.5%(从19.5%提高到31.5%)。在MetaICL中,平均准确率达到44.9%,优于基线模型。在MSC上,计算和内存成本降低了4倍,同时保持了竞争力。这些结果表明GenerativeAdapter在效率和性能方面都具有显著优势。
🎯 应用场景
GenerativeAdapter具有广泛的应用前景,包括但不限于:快速适应新任务和领域、个性化用户体验、知识注入和持续学习。该方法可以应用于各种自然语言处理任务,例如文本分类、问答、文本生成等。通过GenerativeAdapter,可以更高效地利用大型语言模型,并降低部署和维护成本,从而推动人工智能技术的普及和应用。
📄 摘要(原文)
Large language models (LMs) are typically adapted to improve performance on new contexts (\eg text prompts that define new tasks or domains) through fine-tuning or prompting. However, there is an accuracy compute tradeoff -- fine-tuning incurs significant training cost and prompting increases inference overhead. We introduce $GenerativeAdapter$, an effective and efficient adaptation method that directly maps new contexts to low-rank LM adapters, thereby significantly reducing inference overhead with no need for finetuning. The adapter generator is trained via self-supervised learning, and can be used to adapt a single frozen LM for any new task simply by mapping the associated task or domain context to a new adapter. We apply $GenerativeAdapter$ to two pretrained LMs (Mistral-7B-Instruct and Llama2-7B-Chat) and evaluate the adapted models in three adaption scenarios: knowledge acquisition from documents, learning from demonstrations, and personalization for users. In StreamingQA, our approach is effective in injecting knowledge into the LM's parameters, achieving a 63.5% improvement in F1 score over the model with supervised fine-tuning (from $19.5$ to $31.5$) for contexts as long as 32K tokens. In the MetaICL in-context learning evaluation, our method achieves an average accuracy of $44.9$ across 26 tasks, outperforming the base model. On MSC, our method proves to be highly competitive in memorizing user information from conversations with a 4x reduction in computation and memory costs compared to prompting with full conversation history. Together, these results suggest that $GenerativeAdapter$ should allow for general adaption to a wide range of different contexts.