Base LLM | 从 NLP 到 LLM 的算法全栈教程 第八天

PEFT

人工设计的、离散的文本指令,我们称之为"硬提示"(Hard Prompt)。但是,"硬提示"这种"刀耕火种"式的方法存在三个明显的局限。找到最优的提示词往往需要大量的试错和经验,过程繁琐且不稳定,充满了"玄学";离散的文本提示在表达能力上存在上限,难以充分激发和精确控制大模型的潜力;而且在一个模型上精心设计的提示,换到另一个模型或另一种语言上,效果可能大打折扣。

学术界和工业界开始探索一种全新的方法------参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)核心思想冻结(freeze) 预训练模型 99% 以上的参数,仅调整其中极小一部分(通常<1%)的参数,或者增加一些额外的"小参数",从而以极低的成本让模型适应下游任务。

Adapter Tuning

其思路是在 Transformer 的每个块中插入 小型的"适配器"(Adapter)模块。左侧的 Transformer 层展示了 Adapter 模块是如何被集成进去的。Adapter 被插入到每个子层(注意力层和前馈网络)的内部,并与主干网络形成残差连接。在训练时,只有 Adapter 模块的参数会被更新。

图 11-1 的右侧展示了 Adapter 模块自身的结构,主要包括一个"降维"的全连接层(Feedforward down-project)将高维特征映射到低维空间,一个非线性激活函数(Nonlinearity),一个"升维"的全连接层(Feedforward up-project)再将特征映射回原始维度,以及一个贯穿该模块的残差连接将模块的输出与原始输入相加,保证信息流的稳定。通过这种"瓶颈式"的结构,Adapter 模块可以用极少的参数量来模拟特定任务的知识。缺点是依旧吃很大资源。

Prefix Tuning

  • 前缀激活值(Prefix Activations) :图中 PREFIX 部分对应的激活值 hihi(其中 i∈Pidx)是从一个专门的可训练矩阵 Pθ 中提取的,这部分参数就是微调的对象。
  • 模型计算的激活值 : 而原始输入 x 和输出 y 对应的激活值,则是由冻结的 Transformer 模型正常计算得出的。

直接优化 Prefix 向量比微调 Adapter 更困难,训练相对不稳定,对超参数和初始化较为敏感;同时,多数实现将前缀作为各层注意力的额外 K/V 记忆,其长度通常计入注意力配额,可能会减少可用的有效上下文窗口。

Prompt Tuning

它的做法就是只在输入的 Embedding 层 添加可学习的虚拟 Token(称为 Soft Prompt ),不再干预 Transformer 的任何中间层。图 11-3 直观地展示了 Prompt Tuning 这种简化思路在实践中所带来的巨大差异,它不仅是参数效率的提升,更在使用范式上迈出了新的一步。

对于具体任务加上提示词前缀,调参时只对提示词前缀参数做调整。

实验表明当模型规模较小(如 1 亿参数)时,Prompt Tuning 的效果(绿线)远不如传统的模型微调(红线和橙线)。但当模型规模超过 100 亿时,Prompt Tuning 的性能开始追平甚至超越全量微调

P-Tuning v2

LoRA

AdaLoRA (Adaptive LoRA)

用SVD的思想将更新w变为三个矩阵的元素,并不是说真的用SVD。

重要性评分,对于每个W计算其敏感度,以及分批次的敏感度稳定性,结合二者得到W重要性分数,将其svd特征值设为0,计算敏感度的反向传播参数总是需要计算的,对模型的速度影响很小。

QLoRA

LoRA 和 AdaLoRA 分别从"低秩近似"和"自适应秩分配"两个角度优化了微调过程,但它们都还有一个共同的前提,原始的、被冻结的大模型权重仍然是以较高的精度(如 FP16 或 BF16)加载到显存中的。对于动辄几百上千亿参数的模型来说,这部分权重本身就是一笔巨大的显存开销。

与冻结 16-bit 模型的标准 LoRA 相比,QLoRA 更进一步,将基座模型量化为 4-bit 。训练时,梯度会穿过被冻结的 4-bit 模型,反向传播到 16-bit 的适配器中,并只更新适配器参数。此外,它还引入了 分页优化器,在显存不足时,可以将优化器状态临时卸载到 CPU 内存,从而有效管理内存峰值。

相关推荐
北京耐用通信几秒前
全域适配工业场景耐达讯自动化Modbus TCP 转 PROFIBUS 网关轻松实现以太网与现场总线互通
网络·人工智能·网络协议·自动化·信息与通信
火山引擎开发者社区3 分钟前
TRAE × 火山引擎 Supabase:为你的 AI 应用装上“数据引擎”
人工智能
小a彤31 分钟前
GE 在 CANN 五层架构中的位置
人工智能·深度学习·transformer
前端若水1 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
Upsy-Daisy1 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习
企学宝1 小时前
企学宝5月专题课程丨《OpenClaw AI 智能体实战营:从零基础部署到全场景自动化落地》
人工智能·ai·企业培训
冬奇Lab2 小时前
让 AI Agent 更可靠:Harness Engineering 与多 Agent 系统工程实践
人工智能·llm·agent
放下华子我只抽RuiKe52 小时前
React 从入门到生产(四):自定义 Hook
前端·javascript·人工智能·深度学习·react.js·自然语言处理·前端框架
想你依然心痛2 小时前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与HMAF的“文思智脑“——PC端AI智能体沉浸式智能写作工作台
人工智能·ar·harmonyos·ai写作
冬奇Lab2 小时前
一天一个开源项目(第108篇):Andrej Karpathy Skills - 用一个 CLAUDE.md 文件修复 LLM 编码的四个顽疾
人工智能·开源·资讯