1. 其他主流微调方法详解

1)全量参数微调

  • 定义:所有模型参数一同参与训练,每个参数都会被更新
  • 优点:
    • 灵活性高:参数全部开放训练,模型能力上限更高
    • 性能更好:参数量越大、网络层数越深,模型能力通常越强(符合深度学习理论)
  • 缺点:
    • 计算资源要求高:所有参数都需要GPU计算资源
    • 训练风险:
      • 数据量少时容易过拟合(epoch迭代次数过多会导致参数过度适配当前数据集)
      • 可能遗忘预训练知识(当微调任务与预训练任务差异较大时,会"洗坏"原有参数)
      • 数据构造不良时,可能导致模型在原有任务和新任务上表现都变差

2)Freeze:冻结部分层进行微调

  • 冻结部分层进行微调的概述与特点
    • 基本原理:
      • 冻结(不更新)部分模型参数
      • 仅开发(更新)特定层的参数
    • 典型做法:
      • 选择冻结模型的底层(低级特征提取部分)
      • 仅更新模型的高层(高级语义处理部分)
    • 优势:
      • 高效性:训练速度快(参数更新量少)
      • 知识保留:不易遗忘预训练知识
      • 防过拟合:参数更新受限,不易过度适配当前数据
  • 图像领域中冻结部分层进行微调的应用
    • 典型架构:
      • Backbone:预训练好的特征提取网络(如ResNet、MobileNet等)
      • FC层:根据下游任务定制的输出层
    • 应用场景:
      • 目标检测
      • 语义分割
      • 实例分割
      • 图像分类
    • 工作流程:
      • 下载预训练模型
      • 冻结backbone全部参数
      • 仅修改输出层适配新任务
  • 自然语言领域中冻结部分层进行微调的应用
    • 典型架构:
      • Backbone:Transformer Encoder(如BERT)
      • FC层:任务特定输出层
    • 应用场景:
      • 文本分类
      • 文本摘要
      • 其他NLP下游任务
    • 理论基础:
      • 底层网络:负责低级特征提取(词语/语法层面)
      • 高层网络:负责高级语义处理(篇章/意图层面)
  • 冻结部分层进行微调的代码实现与一个backbone多个头
    • 代码实现:
    • 多任务应用:
      • 一个backbone多个头:同一backbone可连接不同FC层处理不同任务
      • 实现方式:
        • 训练时:多任务联合训练(如同时处理目标检测和语义分割)
        • 推理时:根据需要切换不同的输出头
  • 冻结部分层进行微调的局限性及高效微调的引出
    • 局限性:
      • 效果受限:仅调整输出层,对模型能力提升有限
      • 灵活性不足:无法调整特征提取过程
      • 任务适配性差:当新任务与预训练任务差异较大时效果不佳
    • 改进方向:
      • 引出高效微调方法(如Adapter、LoRA等)
      • 在保留预训练知识的同时,实现更灵活的参数调整

3)高效微调方法介绍

  • adapter tuning(适配器调试)
    • 核心思路:在Transformer的encoder架构中,feedforward层后接入adapter适配器模块
    • 实现方式:
      • 冻结原始主干网络所有参数
      • 仅更新adapter模块参数进行微调训练
    • 应用领域:图像和自然语言处理领域均有应用
    • 优势:在保持原网络参数不变的情况下增强下游任务适配能力
    • 缺点:
      • 增加网络深度导致额外推理延迟
      • 增加参数量(每个adapter约0.5-8%原始参数量)
      • 推理时延显著增加(约15-20%)
  • prefix tuning 前置调试
    • 核心机制:在Transformer主干上添加可训练的prefix头部
    • 参数控制:
      • 冻结主干右半部分参数
      • 仅开放左半部分prefix头部参数进行调整
    • 技术特点:
      • 保留预训练获得的通用知识
      • 通过小规模参数调整适配下游任务
    • 主要问题:
      • 训练难度大(开放参数量过小)
      • 缩减可用序列长度(如1024→896)
      • 效果稳定性较差(约30%任务表现波动)
  • prompt tuning 提示调试
    • 实现原理:
      • 在输入文本旁添加可训练prompt
      • 将prompt与原始输入拼接后送入预训练模型
    • 多任务支持:
      • 不同下游任务训练不同prompt参数
      • 同一模型支持多任务推理(分类/摘要等)
    • 参数更新:
      • 通过反向传播机制优化prompt参数
      • 仅需训练prompt参数(约0.1%总参数量)
    • 优势对比:
      • 相比完全微调节省90%训练资源
      • 模型部署体积减少85%
  • p-tuning P调试
    • 技术演进:
      • 将硬提示(prompt)转换为可学习embedding层
      • 引入MLP+LSTM处理prompt embedding
    • 核心改进:
      • 在embedding空间而非文本空间进行优化
      • 支持prompt在序列任意位置插入(非限定头部)
    • 实现细节:
      • 通过prompt encoder生成任务特定embedding
      • 与输入embedding动态融合(concat/add等方式)
      • 典型参数量:每任务新增约0.3-1.2M参数
    • 版本差异:
      • v1:基础embedding拼接
      • v2:加入双向LSTM特征增强
      • v2.1:引入对抗训练提升鲁棒性
  • 2.当前高效微调总结

    2.1LoRA微调

    • 方法对比
      • Prompt Tuning:
        • 仅训练prompt参数
        • 支持多任务推理
      • P-tuning:
        • 将prompt转为可学习Embedding层
        • 使用MLP+LSTM处理Prompt Embedding
      • Adapter Tuning:
        • 插入适配层增加模型深度
        • 导致额外推理延迟
      • Prefix Tuning:
        • 提示训练难度大
        • 会缩短可用序列长度
      • 效果评估:LoRA经2-3年实践验证,在效果和稳定性上最优
    • Lora tuning:通过低秩分解来模拟参数的该变量,从而以极小的参数两来实现大模型的间接训练
    • 优势:显存占用低、训练速度快、模型小、效果最好
    • 作用位置:主要作用于注意力机制的query,key,value的Wq,Wk,Wv以及多头attention的输出矩阵Wo
    • 核心参数选择
      • 低秩分解原理:通过并联100万×1000和1000×100万两个小矩阵模拟原100万×100万大矩阵的参数变化,实现参数冻结下的间接训练
      • 秩(rank)选择:
        • 决定了微调时使用的低秩矩阵的难度
        • 简单任务/小数据集取4
        • 复杂任务/大数据集取8或16
      • lora_alpha参数:
        • 控制低秩矩阵的缩放因子,平衡低秩矩阵的影响
        • alpha过高可能会导致训练不稳定或过拟合;如果太低,lora的效果可能不太明显
        • 取值16-32(过高导致过拟合,过低效果不明显)
      • Dropout设置:
        • 控制丢弃的概率
        • 常用0.2-0.3
        • 小模型取0.1,大模型取0.4-0.5防止过拟合
      • 矩阵运算示例:[10000000,1000]×[1000,1000000]=[10000000,10000000]
      • 并联结构优势:相比Adapter的串联结构,不会增加推理延迟
      • 参数冻结机制:原始预训练权重保持冻结,仅更新低秩分解矩阵参数

2.2 量化与LoRA结合

  • 4-bit 量化
    • Qlora首先将整个预训练模型从常规的16bit浮点数(FP16或BF16)量化韦4bit数据类型,同时记录量化常数(缩放因子scale和零点zero-point)来帮助还原信息,显著减小了模型现存占用
  • 混合精度训练
    • 冻结的模型是4-bit的,但在前向和反向传播计算式,Qlora会将4bit参数动态反量化回16bit浮点数进行计算,以保持精度(只有lora适配器A B矩阵是在16bit京都下进行训练和梯度更新)
  • 双量化
    • 对量化常熟(fp32)进一步量化(通常到8bit)进一步减小空间
  • QLoRA范围:5e-5到2e-4(因量化需更低学习率)
  • LoRA范围:1e-4到5e-4(常规设置)
  • Qlora中bitsandbytes库的使用与配置
    • 三阶段处理:
      • 归一化:权重归一化到特定范围,便于高效表示常见值
      • 量化:权重被量化为4/8-bit,NF4模式下量化级别均匀分布
      • 反量化:计算时临时恢复为16-bit保证精度
    • 实践配置:
      • 量化方法选择"bnb"(bitsandbytes)
      • 量化等级可选4-bit或8-bit
      • 推理时使用原始数据类型保证精度
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐