当前位置: 首页 > news >正文

LLaMA-Adapter - 详解

LLaMA-Adapter - 详解

论文标题: LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention

arXiv 地址: https://arxiv.org/abs/2303.16199

开源代码库: https://github.com/ZrrSkywalker/LLaMA-Adapter

原理

将指令信息作为可学习的提示(Learnable Prompt)注入到LLaMA的高层特征中,从而引导模型生成符合指令的回复。就是LLaMA-Adapter的核心思想

它主要包括两个关键技术点:

  1. 可学习的适配器参数(Learnable Adaption Prompts)
    在Transformer块的输入词序列最前面,插入一组可学习的提示向量(图中绿色部分)。这组向量可以理解为用于承载指令语义的“密码”或“密钥”。
    这些提示向量是随机初始化并通过训练来学习的。它们的长度(例如10个token)远小于原始文本序列,极大减少了参数量。
  2. 零初始化注意力(Zero-initialized Attention)
    这是论文的一个关键创新点,用于保证训练稳定性。
    在训练初期,我们希望冻结的LLaMA模型不受随机初始化的适配器参数的影响。理想情况下,模型最初的输出应该与未微调的原始LLaMA一样。
    为了实现这一点,他们在插入适配器提示的注意力层上,使用了一个零初始化的门控机制(gating factor)。
    具体而言,注意力输出被计算为: Attention_output = gating_factor * (Attention_with_Adapter) + (1 - gating_factor) * (Attention_original) ,其中 gating_factor 初始为0。
    这样,在训练开始时,适配器提示的贡献为0,模型行为与原始LLaMA完全一致。随着训练进行, gating_factor 逐渐学习并增大,适配器提示开始管用地引导模型生成。这避免了训练初期不稳定的噪声,大大提高了微调的效率和效果。

对比

LLaMA

首先,我们要明白语言模型(LLaMA)的基本操作。它的输入和输出都是数字。

Token化(文本 -> 数字):

假设大家的词表很小,只有几个词:

“<用户>”:10
“总结”:11
“你好”:12
“世界”:13
“”:14

用户输入 “总结:你好世界” ,被转换成数字序列: [11, 12, 13]
模型处理:模型会为每个位置生成一个“特征向量”。为了简单,假设特征向量维度只有3。

词嵌入:[11, 12, 13] -> 嵌入后可能变成 [[0.1, 0.2, 0.3], [1.1, 1.2, 1.3], [2.1, 2.2, 2.3]]就是初始输入

模型经过层层计算,最终输出每个位置的下一个词预测概率。

在位置3( [2.1, 2.2, 2.3] ),模型可能计算出下一个词是 “。” 的概率最高。这显然不是我们想要的总结任务。

LLaMA-Adapter

现在,我们启用LLaMA-Adapter。我们设定可学习的提示向量(密码)长度为2,维度为3。

原始输入: x = [[0.1, 0.2, 0.3], [1.1, 1.2, 1.3], [2.1, 2.2, 2.3]]

插入适配器提示后,新输入 变成:
x_new = [ [0.9, -0.5, 0.2], [0.4, 0.1, -0.3], [0.1, 0.2, 0.3], [1.1, 1.2, 1.3], [2.1, 2.2, 2.3] ]
[0.9, -0.5, 0.2] 和 [0.4, 0.1, -0.3] 就是我们可学习的密码。

http://www.wxhsa.cn/company.asp?id=4741

相关文章:

  • 查看安装软件版本的命令
  • ubuntu 20.04安装mysql 5.7
  • 企业微信逆向开发协议,ipad协议调用方式
  • OpenStack Nova Scheduler 计算节点选择机制
  • 记一种很新的 bitset
  • 基于yolo12进行深度学习的机动车车牌检测
  • 有向图强连通分量
  • Kafka 消费者元数据topicId变化问题
  • 【SPIE出版】第五届生物医学与生物信息工程国际学术会议(ICBBE 2025)
  • Qoder 全新「上下文压缩」功能正式上线,省 Credits !
  • journald 持久化 + 限额脚本
  • 【2025-09-14】连岳摘抄
  • 深入解析:PAT乙级_1125 子串与子列_Python_AC解法_含疑难点
  • ESP32-S3 与GPS北斗通信返回定位/海拔/速度数据的测试代码
  • GZY.Quartz.MUI(基于Quartz的UI可视化操作组件) 2.8.0发布 新增仪表盘和检索功能
  • AIGEO助力企业破局
  • 东南大学数据库课程06-Database Design
  • MacOS升级15.2后的问题(二):无法修改mac网络地址
  • 东南大学数据库课程07-Distributed Database Systems
  • HCIA——VLAN间通信
  • Xdebug安装与PhpStorm调试配置
  • vue - 内置指令
  • 东南大学数据库课程02-DataModel数据模型
  • Torch核心数据结构Tensor(张量)
  • vue - 进阶
  • 读书笔记:为什么你的数据库有时不用索引?一个关键参数告诉你答案
  • MacOS升级15.2后的问题(一):安装第三方下载的软件,提醒文件已损坏
  • Playwright MCP浏览器自动化教程
  • 故障分析:ORA-00900 修改props$中字符集导致
  • 实用指南:Flask学习笔记(三)--URL构建与模板的使用