LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention

这篇具有很好参考价值的文章主要介绍了LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Paper name

LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention

Paper Reading Note

Paper URL: https://arxiv.org/pdf/2303.16199.pdf
Code URL: https://github.com/ZrrSkywalker/LLaMA-Adapter

TL;DR

  • 2023 上海人工智能实验室和 CUHK MMLab 出的文章。提出 LLaMA-Adapter,一种高效的微调方法,将 LLaMA 调整为指令跟随模型。对于 llama7b 模型来说,可训练参数缩小到 1.2M,只需要 1 小时即可完成 52K 数据微调 (基于 8xA100 训练),比 Alpaca 快 3 倍

Introduction

背景

  • 最近,大语言模型 (LLM) 在之类跟随 (instruction-following) 模型方面取得了重大进展,比如 ChatGPT 和 GPT-3.5 (text-davinci-003)。遵循自然语言的指令或命令,这些 LLM 可以以对话的方式产生专业和基于上下文的回复
  • 然而 instruction-following 的方式需要 finetune 模型带来高昂的开发成本。Alpaca 在 LLaMA 模型基础上进行了微调得到一个 instruction-following 模型,基于 175 对人工编写的指令-输出对,Alpaca 利用 GPT-3.5 来基于 self-instruct 的方式将训练数据扩充到 52K。然而 Alpaca 需要对 LLaMA 整个模型进行微调

本文方案

LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention

  • 本文提出 LLaMA-Adapter,一种高效的微调方法,将 LLaMA 调整为指令跟随模型。对于 llama7b 模型来说,可训练参数缩小到 1.2M,只需要 1 小时即可完成 52K 数据微调 (基于 8xA100 训练),比 Alpaca 快 3 倍
    • 具体来说,在 LLaMA 的更深层的 transformer 层中,将一组可学习的自适应提示作为前缀附加到输入指令 token 中。这些提示学习将新指令(条件)自适应地注入 LLaMA
    • 为了避免在早期训练阶段适应提示中的噪声,将插入层的 attention 机制修改为零初始 attention,并使用可学习的门控因子。通过零向量初始化,门控可以首先保留 LLaMA 中的原始知识,并在训练过程中逐步引入指令信号
    • 这样做的一个好处和 LoRA 类似,即对于不同的场景可以在基础的 llama 模型 (7B) 上插入不同的插件小模型(1.2 M),用于处理不同场景任务,而不用对每个场景任务都准备一个 7B 的大模型
    • 支持多模态输入:支持方式就是简单将图片的 tokens 加到 adaption prompts 中,在 ScienceQA 基准测试中表现出色

Dataset/Algorithm/Model/Experiment Detail

实现方式

LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention

Learnable Adaption Prompts
  • 给定 52K instruction-to-output 数据和一个预先训练好的 LLaMA 模型(一个N层 transformer 模型),采用了一套可学习的适应提示(adaption prompts)来指导后续的微调
    • 将 L 层 transformer 的提示符记为 { P l } l = 1 L \{P_{l}\}^{L}_{l=1} {Pl}l=1L ,其中 P l ∈ R K × C P_{l} \in \mathbb{R}^{K \times C} PlRK×C , K 表示每一层的提示长度,C 等于 LLaMA transformer 层的特征维数
    • 只对于深层的 L 层插入 adapter,这可以更好地调整具有高级语义的语言表示
    • 以第 l 个插入层为例,将长度为 M 的词 token 表示为 T l ∈ R M × C T_{l} \in \mathbb{R}^{M \times C} TlRM×C 。然后,将自适应提示符按照 token 维度作为前缀与 T l T_{l} Tl 连接,表达式为: LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
      这样 P l P_{l} Pl 内部学习到的指令知识可以有效地引导 T l T_{l} Tl 生成上下文响应
Zero-init Attention
  • 如果适应提示是随机初始化的,可能会在训练开始时对词 token 带来干扰,不利于调优的稳定性和有效性。考虑到这一点,修改了最后 L 个 transformer 层的传统注意机制为零初始注意
    • 假设模型基于 [ P l ; T l ] [P_{l}; T_{l}] [Pl;Tl] 信息,在生成第 (M + 1)-th 个单词,将对应的 (M + 1)-th 个词表示为 t l ∈ R 1 × C t_{l} \in \mathbb{R}^{1 \times C} tlR1×C , attention 首先基于如下 linear 层对 qkv 进行计算
      LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
      然后,计算softmax函数前的注意得分为
      LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
      记录了 t l t_{l} tl 和所有 K+M+1 token 之间的特征相似性。同时, S l S_{l} Sl 可以由两个组分重新计算为
      LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
      其中 S l K ∈ R K × 1 S_{l}^{K} \in \mathbb{R}^{K \times 1} SlKRK×1 S l K ∈ R K × 1 S_{l}^{K} \in \mathbb{R}^{K \times 1} SlKRK×1 分别为 K 个适应提示和 M + 1 个词 token 的注意得分。前者 S l K S^{K}_{l} SlK 表示可学习提示符对 t l t_{l} tl 的贡献,这可能会在训练早期造成干扰
    • 为此,采用一种可学习的门控因子 g l g_{l} gl ,自适应控制关注中 S l K S^{K}_{l} SlK 的重要性
      LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
      单独的 softmax 函数确保第二项与添加的适应提示无关, g l g_{l} gl 训练开始会初始化为 0,然后再逐渐增大。注意力的每个头会采用不同的 g l g_{l} gl 进行独立学习。最后,计算带有线性投影层的注意层的输出为
      LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
Multi-modal Reasoning

LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention

  • LLaMA-Adapter 不局限于文本指令,能够根据其他模态输入来回答问题,为语言模型增加了丰富的跨模态信息
    • 对于图片输入,使用 CLIP 提取多尺度的全局特征,然后将这些多尺度特征 concat 起来,经过一个投影层得到全局的信息表征
      LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention I p ∈ R 1 × C I_{p} \in \mathbb{R}^{1 \times C} IpR1×C 是和 adapter prompt 维度一样的全局图片特征表示,然后将该特征 repeat 后与 adapter prompt 相加得到多模态特征
      LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention

实验结果

实施细节
  • Stanford Alphaca 的 52K instruction-following 数据作为训练集
    • {instruction}是任务的描述,{input}是任务的上下文,{output}是 GPT-3.5 生成的答案
    • 其中 40% 的数据有 {input} 信息
  • 8xA100 进行训练 5 个 epoch
  • 在 llama 7B 上做实验,transformer 层数 N=32,对于深层的 30 层都插入 adapter layer,提示符长度 K = 10
instruction follow 效果对比
  • 由于还缺乏严格的评估指标,简单地展示了一些响应示例进行比较。仅对 1.2M 参数进行微调,本文的方法产生了与完全微调的 Alpaca 和大规模 GPT-3 模型相当的合理响应
    LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
    LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
    LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
训练效率对比
  • 可训练参数比 lora 还少,训练时间相比于原始 alpaca-llama 降低 3 倍
    LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
多模态输入效果
  • 在 ScienceQA 上进行训练,测试结果是 SOTA。其中 L L a M A − A d a p t e r T LLaMA - Adapter_{T} LLaMAAdapterT 是纯文本输入,可以看到和带图片输入的差距很大
    LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
    一些 ScienceQA 上的样例
    LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
Ablation Study
  • 增加 adapter 的训练层数,可以看到增加更多训练层的精度会更好
    LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention

  • 零初始化的提升也很明显
    LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention
    LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention

  • 方法对过拟合问题较为鲁棒,训练 60 epoch 情况下 acc 是最高的
    LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention文章来源地址https://www.toymoban.com/news/detail-485664.html

Thoughts

  • 很直观的做 llm 微调的实现思路,加一些可学习的 prompt 思路和 Visual Prompt Tuning 很像
  • 与比 LoRA 的缺点看起来是增加了一定推理计算量,本文中和 LoRA 等方法的对比还不够详细

到了这里,关于LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • chatgpt fine-tuning 官方文档

    Learn how to customize a model for your application. This guide is intended for users of the new OpenAI fine-tuning API. If you are a legacy fine-tuning user, please refer to our legacy fine-tuning guide. Fine-tuning lets you get more out of the models available through the API by providing: Higher quality results than prompting Ability to train on more exa

    2024年02月09日
    浏览(40)
  • ChatGPT的Fine-tuning是什么?

    fine-tuning基本概念 Fine-tuning(微调)是指在预训练过的模型基础上,使用特定任务的数据进行进一步的训练,以使模型更好地适应该任务。在ChatGPT的情况下,Fine-tuning是指在预训练的语言模型上使用对话数据进行进一步的训练,以使模型能够更好地生成对话响应。 GPT微调的一

    2024年02月12日
    浏览(49)
  • 小白理解GPT的“微调“(fine-tuning)

    对于GPT-3.5,我们实际上并不能在OpenAI的服务器上直接训练它。OpenAI的模型通常是预训练好的,也就是说,它们已经在大量的语料上进行过训练,学习到了语言的基本规则和模式。 然而,OpenAI提供了一种叫做\\\"微调\\\"(fine-tuning)的方法,让我们可以在预训练好的模型基础上进行

    2024年02月04日
    浏览(46)
  • 对 ChatGLM-6B 做 LoRA Fine-tuning

    ChatGLM-6B 是一个支持中英双语的对话语言模型,基于 GLM (General Language Model)。它只有 62 亿个参数,量化后最低 (INT4 量化) 只需要 6GB 的显存,完全可以部署到消费级显卡上。在实际使用这个模型一段时间以后,我们发现模型的对话表现能力确实非常不错。那么,基于这个模型做

    2023年04月25日
    浏览(34)
  • Fine-tuning:个性化AI的妙术

    一、什么是大模型 ChatGPT大模型今年可谓是大火,在正式介绍大模型微调技术之前,为了方便大家理解,我们先对大模型做一个直观的抽象。 本质上,现在的大模型要解决的问题,就是一个序列数据转换的问题: 输入序列 X = [x1, x2, ..., xm], 输出序列Y = [y1, y2, …, yn],X和Y之

    2024年01月17日
    浏览(54)
  • 一分钟搞懂 微调(fine-tuning)和prompt

    大家都是希望让预训练语言模型和下游任务靠的更近,只是实现的方式不一样。Fine-tuning中:是预训练语言模型“迁就“各种下游任务;Prompting中,是各种下游任务“迁就“预训练语言模型。 微调(fine-tuning)和prompt是自然语言处理领域中常用的两个术语,它们都是指训练和

    2023年04月26日
    浏览(51)
  • ChatGPT进阶:利用Fine-tuning训练自己的模型

    ChatGPT是“大力出奇迹”的经典表现,大模型给ChatGPT带来了惊人的智能,但是要训练这样的大模型,可是十分烧钱的,根据OpenAI给出的数据,1700亿参数的Davinci模型从头训练一遍,大概需要耗时3个月,耗资150万美元。那我们普通人或者小公司面对这个高门槛,对自定义模型是

    2024年02月17日
    浏览(51)
  • 深度学习概念(术语):Fine-tuning、Knowledge Distillation, etc

    这里的相关概念都是基于已有预训练模型,就是模型本身已经训练好,有一定泛化能力。需要“再加工”满足别的任务需求。 进入后GPT时代,对模型的Fine-tuning也将成为趋势,借此机会,我来科普下相关概念。 有些人认为微调和训练没有区别,都是训练模型,但是微调是在原

    2024年02月09日
    浏览(42)
  • openai模型个性化训练Embedding和fine-tuning区别

    现在基于自然语言和文档进行对话的背后都是使用的基于嵌入的向量搜索。OpenAI在这方面做的很好,它的Cookbook(github.com/openai/openai-cookbook)上有很多案例,最近他们对文档做了一些更新。 GPT擅长回答问题,但是只能回答它以前被训练过的问题,如果是没有训练过的数据,比如

    2024年02月15日
    浏览(45)
  • 了解大语言模型的参数高效微调(Parameter-Effcient Fine-Tuning)

    🍉 CSDN 叶庭云 : https://yetingyun.blog.csdn.net/ 大语言模型在众多应用领域实现了突破性的进步,显著提升了各种任务的完成度。然而,其庞大的规模也带来了高昂的计算成本。这些模型往往包含数十亿甚至上千亿参数,需要巨大的计算资源来运行。特别是,当需要为特定的下游

    2024年04月14日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包