大模型参数项目笔记

# 大模型参数项目的意义是什么?

好好想想先 😌

# 主流的高效微调方法有哪些?

好好想想先 😌

# LoRA 的工作原理是什么?

好好想想先 😌
  • 参考链接

  • 简述

    • 核心思想:预训练模型的权重矩阵具有低 intrinsic rank
    • 实现方式
      • 冻结原始权重 W
      • 添加两个低秩矩阵 BA
      • 前向传播:h = Wx + BAx
      • 只更新 BA,原始 W 保持冻结
    • 秩的选择
      • rank 越低,参数量越少,但表达能力可能不足
      • 通常 rank 在 4-64 之间选择
    • 优势
      • 参数量大幅减少(约为全量参数的 0.1%-1%)
      • 可以为不同任务训练不同的 LoRA 模块,灵活切换
      • 推理时可以将 LoRA 权重合并到原始权重,无额外推理延迟

# LoRA 的秩 rank 如何选择?有什么影响?

好好想想先 😌
  • 参考链接

  • 简述

    • rank 越小
      • 参数量越少,训练越快,显存占用越低
      • 表达能力受限,可能欠拟合
    • rank 越大
      • 表达能力更强,效果可能更好
      • 参数量增加,训练成本上升
    • 实际建议
      • 从较小的 rank(如 4-8)开始尝试
      • 如果效果不佳,逐步增加 rank
      • 不同层可能需要不同的 rank

# QLoRA 相比 LoRA 有什么改进?

好好想想先 😌
  • 参考链接

  • 简述

    • 量化技术
      • 将预训练模型从 16-bit 量化到 4-bit NormalFloat (NF4)
      • 大幅降低模型存储空间
    • 量化感知训练
      • 在量化后仍然进行微调
      • 通过梯度更新弥补量化带来的精度损失
    • 分页优化器
      • 处理梯度过程中的内存峰值
      • 类似 CPU 和 GPU 之间的分页内存
    • 效果
      • 可以在 48GB GPU 上微调 65B 模型
      • 效果接近全量 16-bit 微调

# Adapter 方法和 LoRA 有什么区别?

好好想想先 😌
  • 参考链接

  • 简述

    • 结构
      • LoRA:在权重矩阵旁边添加低秩分支,并联方式
      • Adapter:在 Transformer 层之间插入新模块,串行方式
    • 参数量
      • 两者参数量相近,都属于高效微调
      • Adapter 约需 1%-5% 的原始参数量
    • 灵活性
      • LoRA 可以轻松合并权重,推理时无额外开销
      • Adapter 需要保留额外模块,推理时有轻微额外计算
    • 训练稳定性
      • Adapter 通常更稳定
      • LoRA 对学习率和初始化更敏感

# 高效微调的实践建议有哪些?

好好想想先 😌
  • 参考链接

  • 简述

    • 数据集
      • 通常 1K-10K 样本即可见到效果
      • 数据质量比数量更重要
      • 注意数据多样性和分布平衡
    • 学习率
      • LoRA 通常使用比全量微调更高的学习率
      • 如全量用 1e-5,LoRA 可用 1e-3
    • Rank 选择
      • 从 8 开始尝试,效果不好再调大
      • 不同任务可能需要不同的 rank
    • 模块选择
      • 可以只对部分层应用 LoRA
      • 通常对 Q/V attention 层效果较好
    • 多任务学习
      • 可以同时训练多个任务的 LoRA
      • 使用路由机制动态选择