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

QLoRA和LoRA 微调

QLoRA 其实是一种结合了量化和 LoRA 微调技术的统一方法,而不是同时使用两种不同的微调方式。换句话说,QLoRA 的意思就是:先把大模型的主权重用低精度(例如 4-bit)量化,从而大幅减少存储需求;然后在此基础上,通过 LoRA 技术,仅对少部分参数(比如 1%)进行微调,这部分参数保留在较高的精度(例如 FP16)。


详细解释

  • LoRA 微调:
    LoRA(Low-Rank Adaptation)是一种微调方法,它通过引入低秩矩阵来调整模型的部分参数,而不改变原始模型的全部权重。这种方法适用于在有限数据或计算资源情况下,对大模型进行有效的微调。

  • QLoRA:
    QLoRA 就是结合了量化和 LoRA 的技术。它先将大模型的主权重量化为 4-bit(从而降低存储和计算成本),然后只对模型中的一小部分参数(例如 1%)使用 LoRA 微调,保持这些额外权重为 FP16 精度。这样既能大幅降低资源消耗,又能通过 LoRA 对模型进行有效的微调。


举例说明

假设有一个 10B 参数的模型:

  • 全精度存储需求:
    原始模型采用 FP16,每个参数 2 字节,总共 10B × 2 = 20GB。

  • 使用 QLoRA:

    1. 首先,将大部分 10B 参数用 4-bit 量化保存。4-bit 每个参数大约 0.5 字节,所以量化后占用 10B × 0.5 = 5GB。
    2. 然后,对其中 1% 的参数(即 100M 个参数)应用 LoRA 微调,这部分权重仍使用 FP16,即 100M × 2 字节 = 200MB。
    3. 整个模型最终存储需求约 5GB + 200MB = 5.2GB。

这里的“QLoRA”并不是同时用两种方法,而是一种集成了量化和 LoRA 微调的技术方案。


总结:
QLoRA 本身就是在基于低精度量化的基础上,通过 LoRA 微调来调整一小部分参数。它们不是互斥的,而是互补的,正是这种组合方法使得大模型在节省资源的同时还能达到较好的微调效果。

存储需求

存储需求主要根据模型中参数的总数以及每个参数占用的字节数来计算。简单来说,计算公式为:

存储需求 = 参数数量 × 每个参数所占字节数


具体举例

  1. FP16存储(16位浮点数):

    • 每个参数占用 16 位,也就是 2 字节。
    • 如果模型有 10 亿个参数(1B),那么存储需求就是:
      1B × 2 字节 = 2GB
    • 如果模型有 100 亿个参数(10B),存储需求就是:
      10B × 2 字节 = 20GB
  2. 4-bit量化存储:

    • 4-bit 等于 4/8 = 0.5 字节。
    • 对于 10B 参数的模型,经过 4-bit 量化后的存储需求为:
      10B × 0.5 字节 = 5GB
  3. 使用 LoRA 或 qLoRA 微调时:

    • LoRA 只对模型中一小部分参数进行更新,比如 1% 的参数。
    • 如果一个 10B 参数的 FP16 模型,1% 参数大约是 0.1B,存储需求为:
      0.1B × 2 字节 = 0.2GB
    • 这部分更新的参数就需要额外的存储,而整体模型仍然以原始的量化或全精度格式存在。

总结

  • 如果你用 FP16 格式存储,一个拥有 10B 参数的模型大约需要 20GB 的存储空间;如果量化到 4-bit,则大约只需要 5GB。
  • 使用 LoRA 微调时,你只更新模型的一小部分参数,这部分参数所需的存储相对更少。

这样的计算方法可以帮助你评估训练和部署模型时所需的存储资源。


http://www.kler.cn/a/610308.html

相关文章:

  • 01-系统编程
  • 从零开始的大模型强化学习框架verl解析
  • AWE 2025:当AI科技遇见智能家居
  • 基于javaweb的SpringBoot线上网络文件管理系统设计与实现(源码+文档+部署讲解)
  • 【Linux网络】——Socket网络编程
  • 6. 理解中间件与认证中间件
  • 失踪人口回归之Java开发工程师面试记录第二篇
  • AI小白的第七天:必要的数学知识(概率)
  • 前端面试:如何去衡量用户操作过程中否卡顿?
  • LLM实践(二)——基于llama-factory的模型微调
  • 蓝桥杯高频考点——二分(含C++源码)
  • Go 1.24 新特性解析:泛型类型别名、弱指针与终结器改进
  • 论文阅读笔记——Diffuser,Diffusion Policy
  • java使用小知识合集(持续更新中)
  • 栈-常见考察面试算法题
  • 生活电子常识——cmd不能使用anaconda的python环境,导致输入python打开应用商店
  • Driver具体负责什么工作
  • 大疆上云api直播功能如何实现
  • odata 搜索帮助
  • LangChain开发(六)多模态输入与自定义输出