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

张开发
2026/4/10 5:39:54 15 分钟阅读

分享文章

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 v2LoRAAdaLoRA (Adaptive LoRA)用SVD的思想将更新w变为三个矩阵的元素并不是说真的用SVD。重要性评分对于每个W计算其敏感度以及分批次的敏感度稳定性结合二者得到W重要性分数将其svd特征值设为0计算敏感度的反向传播参数总是需要计算的对模型的速度影响很小。QLoRALoRA 和 AdaLoRA 分别从“低秩近似”和“自适应秩分配”两个角度优化了微调过程但它们都还有一个共同的前提原始的、被冻结的大模型权重仍然是以较高的精度如 FP16 或 BF16加载到显存中的。对于动辄几百上千亿参数的模型来说这部分权重本身就是一笔巨大的显存开销。与冻结 16-bit 模型的标准 LoRA 相比QLoRA 更进一步将基座模型量化为 4-bit。训练时梯度会穿过被冻结的 4-bit 模型反向传播到 16-bit 的适配器中并只更新适配器参数。此外它还引入了分页优化器在显存不足时可以将优化器状态临时卸载到 CPU 内存从而有效管理内存峰值。

更多文章