十分钟读完「降低 LLaMA 模型微调内存占用的QLoRA」论文

这篇具有很好参考价值的文章主要介绍了十分钟读完「降低 LLaMA 模型微调内存占用的QLoRA」论文。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QLoRA 提出内存高效的微调方法!降低 LLaMA 模型微调内存占用,仅需数小时追赶 ChatGPT

引言:大模型微调的新时代

随着人工智能技术的飞速发展,大型语言模型(Large Language Models,LLMs)已成为自然语言处理领域的重要工具。这些模型通常包含数十亿甚至数千亿个参数,能够在各种语言任务上展现出色的性能。然而,微调这些大型模型以适应特定任务往往需要巨大的计算资源和内存,这限制了其在资源受限的环境下的应用。

在这样的背景下,一种名为QLORA的新方法应运而生,它通过高效的微调技术,显著降低了微调大型语言模型所需的内存使用量,使得在单个GPU上微调65B参数模型成为可能。QLORA的出现预示着大模型微调的新时代,它不仅为研究人员提供了更多的可能性,也为语言模型的广泛应用打开了新的大门。

声明:本期论文解读非人类撰写,全文由赛博马良「AI论文解读达人」智能体自主完成,经人工审核后发布。

智能体传送门:赛博马良-AI论文解读达人

神奇口令: 小瑶读者 (前100位有效)文章来源地址https://www.toymoban.com/news/detail-819281.html

论文标题、机构、论文链接和项目地址(如有)

  • 论文标题:QLORA: Efficient Finetuning of Quantized LLMs
  • 机构:University of Washington
  • 论文链接:https://arxiv.org/pdf/2305.14314.pdf
  • 项目地址:https://github.com/artidoro/qlora 和 https://github.com/TimDettmers/bitsandbytes

QLORA方法概述:高效微调大型语言模型

1. QLORA方法的核心技术

QLORA方法的核心在于其能够在不牺牲16位微调任务性能的前提下,通过4位量化预训练语言模型,显著降低微调65B参数模型所需的内存使用量。QLORA的关键创新包括:

  • 4-bit NormalFloat (NF4):一种新的数据类型,对于正态分布的权重来说,它是信息理论上的最优量化数据类型。
  • 双重量化 (Double Quantization):通过量化量化常数来进一步减少内存占用。
  • 分页优化器 (Paged Optimizers):使用NVIDIA统一内存来管理长序列处理时出现的内存峰值。

2. Guanaco模型家族及其性能

QLORA训练出的Guanaco模型家族在Vicuna基准测试中表现出色,其最佳模型达到了与ChatGPT相当的99.3%性能水平,同时只需在单个GPU上微调24小时。Guanaco模型家族的性能优势不仅体现在其高效的微调能力,还包括其在部署时的内存效率。例如,Guanaco家族中最小的7B参数模型仅需5GB内存即可运行,并且在Vicuna基准测试中比26GB的Alpaca模型高出20个百分点。

QLORA的创新点

在深入探讨QLORA的创新点之前,我们先简要回顾一下QLORA的背景。QLORA是一种高效的微调方法,它通过减少内存使用,使得在单个48GB GPU上微调一个65B参数模型成为可能,同时保持与全16位微调任务相当的性能。QLORA通过一个冻结的、4位量化的预训练语言模型反向传播梯度到低秩适配器(LoRA)。QLORA引入了多项创新,以在不牺牲性能的情况下减少内存使用。

1. 4-bit NormalFloat (NF4) 数据类型

QLORA的第一个创新点是4-bit NormalFloat (NF4) 数据类型。这是一种新的数据类型,理论上对于正态分布的权重是最优的量化数据类型,实验结果表明,它比4位整数和4位浮点数都能提供更好的结果。NF4数据类型基于分位数量化,这是一种信息理论上的最优数据类型,确保每个量化区间内有相等数量的值。通过将权重标准化到一个固定的范围内,NF4能够精确地估计输入张量的分位数,从而实现高效的量化。

2. 双重量化 (Double Quantization)

双重量化是QLORA的第二个创新点。这种方法通过量化量化常数来进一步减少内存占用。具体来说,它将第一次量化的量化常数作为第二次量化的输入,使用8位浮点数进行第二次量化。这种方法平均每个参数节省了约0.37位(大约为65B模型节省了3GB内存)。

3. 分页优化器 (Paged Optimizers)

最后,QLORA引入了分页优化器,这是一种使用NVIDIA统一内存的方法,可以在处理长序列的小批量数据时避免内存峰值。当GPU偶尔内存不足时,分页优化器可以在CPU和GPU之间自动进行页面到页面的传输,从而确保GPU处理不会出错。

实验设置:数据集和模型架构

在实验设置中,QLORA考虑了三种架构(编码器、编解码器和仅解码器),并将QLORA与16位适配器微调和全微调进行了比较,模型大小达到3B。评估包括GLUE(使用RoBERTa-large)、Super-NaturalInstructions(使用T5)和在LLaMA上微调后的5-shot MMLU。此外,为了研究NF4与其他4位数据类型的优势,使用了不同模型(OPT、LLaMA、BLOOM、Pythia)进行了语言建模和一系列零样本任务的评估。

QLORA与标准微调的性能比较

在不同数据集上的表现

QLORA在多个数据集上的表现与16位全微调相当。在GLUE和Super-NaturalInstructions数据集上,16位、8位和4位适配器方法复制了全微调16位基线的性能。这表明由于不精确量化而损失的性能可以通过适配器微调完全恢复。

在不同模型规模上的表现

在更大规模的模型(7B至65B参数)上,QLORA通过在Alpaca和FLAN v2数据集上微调LLaMA,并在MMLU基准上进行5-shot准确性评估,证明了NF4与双重量化能够完全恢复16位LoRA的MMLU性能。此外,使用FP4的QLORA在16位brain float LoRA基线上落后约1个百分点,这进一步证实了QLORA使用NF4能够复制16位全微调和16位LoRA微调的性能,且NF4在量化精度方面优于FP4。

推动聊天机器人技术的新高度

1. 实验设置和数据选择

在推动聊天机器人技术的新高度方面,QLORA提供了一种高效的微调方法,能够在单个48GB GPU上微调高达65B参数的模型,同时保持完整的16位微调任务性能。QLORA通过冻结的4位量化预训练语言模型反向传播梯度到低秩适配器(LoRA)。Guanaco模型家族是利用QLORA训练的,其中最好的模型在Vicuna基准测试上超越了所有之前公开发布的模型,达到了ChatGPT性能水平的99.3%,仅需在单个GPU上微调24小时。

QLORA引入了多项创新以节省内存而不牺牲性能:(a)4位NormalFloat(NF4),一种对于正态分布权重理论上最优的新数据类型;(b)双重量化,通过量化量化常数来减少平均内存占用;(c)分页优化器,使用NVIDIA统一内存管理长序列长度的小批量处理时出现的内存峰值。

2. Guanaco模型与现有系统的比较

Guanaco模型家族的最小模型(7B参数)仅需要5GB内存,就能在Vicuna基准测试上比26GB的Alpaca模型高出20个百分点。Guanaco模型在内存效率和性能上均表现出色,其中65B模型在Vicuna基准测试上达到了与ChatGPT几乎相同的性能水平,而33B模型则在内存使用上更为高效,只需21GB内存即可训练。

人工评估与自动评估的比较

1. GPT-4和人类评估的一致性

在聊天机器人性能的评估方面,研究表明GPT-4评估与人类评估在模型性能排名上大致一致,但也存在一些强烈分歧的情况。这表明基于模型的评估虽然是人类注释的一个廉价替代品,但也有其不确定性。

2. Elo评分系统的应用

在模型比较中,研究使用了Elo评分系统,这是一种在国际象棋等游戏中广泛使用的评分方法,用于衡量相对于对手的预期胜率。通过GPT-4或人类评注员的判断,模型间的比赛结果被汇总成Elo分数,从而确定聊天机器人性能的排名。研究发现,GPT-4和人类评估在Vicuna基准测试上的模型排名部分不一致,但对于大多数模型来说是一致的。

质性分析:Guanaco模型的成功与失败案例

1. 事实回忆与建议性

Guanaco模型在回答一些事实性问题时表现出色,例如询问赞比亚的首都时,所有模型都能一致地生成正确的答案。然而,当问题变得更加晦涩时,Guanaco的可靠性下降,但它仍然保持着自信。

2. 数学问题处理能力

Guanaco在数学问题处理方面表现出最大的弱点,这是许多语言模型共同面临的挑战。当Guanaco展示其解题过程时,它往往能够准确地给出答案。但是,如果它未能逐步分解问题,即使是简单的数学问题也可能导致错误。

3. 理解他人心理的能力

Guanaco在理解他人心理的能力方面表现出意外的强大。例如,模型能够详细正确地回答关于James和Abby的心理理解问题。然而,这些推理并不可靠,模型有时会给出在情境中不合理的理由。

讨论:评估方法的局限性与未来方向

在评估QLORA这种新型微调方法时,我们必须认识到当前评估方法的局限性。首先,尽管QLORA在多个基准测试中展现出与16位全模型微调相当的性能,但我们还没有确立QLORA在33B和65B规模上能否匹配全16位微调性能。这是因为在如此大规模上进行全面评估需要巨大的资源投入,这部分工作留待未来研究。

其次,当前的评估基准可能并不完全适用于评估聊天机器人的性能。例如,我们发现在MMLU和Vicuna基准测试中,数据集的适用性比大小更重要。这表明我们需要更好的基准和评估方法,同时也需要谨慎考虑我们到底在评估什么。我们是否希望创建在课堂知识测试中表现良好的模型,还是希望在聊天机器人对话能力上表现出色,或者追求其他目标?

此外,尽管GPT-4的评估提供了一种相对便宜的替代人类注释的方法,但我们发现GPT-4的评估结果受到呈现顺序的影响。这表明自动化评估系统可能存在偏见,未来的工作应该考虑这些潜在偏见以及可能的缓解策略。

1. 评估方法的局限性

  • 未能在33B和65B规模上验证QLORA与全16位微调性能的匹配性。
  • 当前评估基准可能不适用于聊天机器人性能的全面评估。
  • 数据集的适用性比大小更重要,需要更好的基准和评估方法。
  • 自动化评估系统可能存在偏见,需要进一步研究和缓解。

2. 未来方向

  • 进行更大规模的模型评估,以验证QLORA在更大模型上的性能。
  • 开发更好的评估基准和方法,以更准确地评估聊天机器人的性能。
  • 考虑评估方法中的偏见问题,并研究缓解策略。
  • 探索不同的微调方法和参数效率微调(PEFT)方法的权衡。

相关工作:参数高效微调和指令微调

在参数高效微调(PEFT)的领域,除了QLORA使用的低秩适配器(LoRA)之外,还有许多其他方法,如提示调整、嵌入层输入调整、隐藏状态调整(IA3)、添加完整层、调整偏差、基于费舍尔信息的权重掩码学习等。在我们的工作中,我们展示了LoRA适配器能够达到全16位微调性能。未来的工作可以探索其他PEFT方法的权衡。

在指令微调方面,为了帮助预训练的大型语言模型(LLMs)遵循提示中的指令,指令微调使用各种数据源的输入-输出对来微调预训练的LLM,以生成给定输入提示的输出。这些方法和数据集包括MetaICL、MetaTuning、InstructGPT、FLAN、PromptSource、Super-NaturalInstructions、Self-instruct、UnnaturalInstructions、OPT-IML、UnifiedSKG、OIG/Chip2、Alpaca、Vicuna、Koala和Self-instruct-GPT-4等。

结论与讨论:QLORA的影响与未来展望

QLORA作为一种新型微调方法,展现了在单个GPU上微调高达65B参数模型的能力,同时保持与16位全模型微调相当的性能。这一突破性的进展显著提高了LLM微调的可访问性,使得最大的公开可用模型可以在单个GPU上进行微调。通过QLORA,我们训练了Guanaco模型家族,其中最佳模型在Vicuna基准测试中的表现接近ChatGPT,同时只需要单个GPU上的24小时微调时间。

QLORA的效率使我们能够在内存开销过高而无法使用常规微调的模型规模上进行深入研究。因此,我们训练了超过1000个模型,跨越多个指令调整数据集、模型架构和大小。我们的结果表明,QLORA在小型高质量数据集上的微调能够带来最先进的结果,即使使用的模型比以前的最佳模型小。

我们还提供了基于人类评估和GPT-4评估的聊天机器人性能的详细分析。我们发现GPT-4和人类评估在模型性能排名上大致一致,但也发现了强烈不一致的情况。因此,我们强调模型基础评估虽然提供了一种相对便宜的替代人类注释的方法,但也有其不确定性。

我们通过定性分析补充了我们的聊天机器人基准测试结果,突出了定量基准未能捕捉到的成功和失败案例。我们发布了所有模型生成以及人类和GPT-4注释,以促进进一步研究。我们开源了代码库和CUDA内核,并将我们的方法集成到了Hugging Face transformers堆栈中,使其易于所有人访问。我们发布了针对7/13/33/65B大小模型的一系列适配器,总共有32个不同的开源微调模型。

总之,QLORA的出现可能会对LLM微调的未来产生广泛的积极影响,使得高质量LLM的微调变得更加广泛和容易获得。

声明:本期论文解读非人类撰写,全文由赛博马良「AI论文解读达人」智能体自主完成,经人工审核后发布。

智能体传送门:赛博马良-AI论文解读达人

神奇口令: 小瑶读者 (前100位有效)

到了这里,关于十分钟读完「降低 LLaMA 模型微调内存占用的QLoRA」论文的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 十分钟掌握Java本地缓存

    —————————— Yesterday is history, tomorrow is a mystery, but today is a gift. That is why it’s called the present. —————————— 缓存是Java开发中经常用到的组件,我们会使用缓存来存储一些 不经常改变 的 热点 数据,提高系统处理效率,其根本原因在于内存和硬盘读写速度的

    2024年02月05日
    浏览(67)
  • Django入门,十分钟学会登录网页

    我们假定你已经阅读了 安装 Django。你能知道 Django 已被安装,且安装的是哪个版本,通过在命令提示行输入命令 cmd黑窗口运行,不懂cmd百度一下 如果这是你第一次使用 Django 的话,你需要一些初始化设置。也就是说,你需要用一些自动生成的代码配置一个 Django project ——

    2024年01月24日
    浏览(70)
  • 十分钟理解回归测试(Regression Testing)

    回归测试是一个系统的质量控制过程,用于验证最近对软件的更改或更新是否无意中引入了新错误或对以前的功能方面产生了负面影响(比如你在家中安装了新的空调系统,发现虽然新的空调系统可以按预期工作,但是本来亮的等却不亮了)。其主要目标是确保旨在改进的修

    2024年02月05日
    浏览(82)
  • 十分钟python入门 正则表达式

    正则常见的三种功能,它们分别是:校验数据的有效性、查找符合要求的文本以及对文本进行切割和替换等操作。 所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符 元字符大致分成这几类:表示单个特殊字符的,表示空白符的,表示某个范围的,表示次数的量

    2024年02月13日
    浏览(58)
  • 十分钟掌握 Vim 编辑器核心功能

    👉相信不论是前端还是后台多多少少都需要上到服务器上做一些操作,改改配置文件等,大多数 Linux 服务器默认都安装了 Vim 文本编辑器,因此如果还不会 Vim 的话,可能会被同事“耻笑”。 👉如果本文对你有所帮助,请点个👍 吧。 Vim是什么? Vim 是从 vi 发展出来的一个

    2024年02月16日
    浏览(62)
  • 十分钟读懂Stable Diffusion运行原理

    AIGC 热潮正猛烈地席卷开来,可以说 Stable Diffusion 开源发布把 AI 图像生成提高了全新高度,特别是 ControlNet 和 T2I-Adapter 控制模块的提出进一步提高生成可控性,也在逐渐改变一部分行业的生产模式。惊艳其出色表现,也不禁好奇其背后技术。本文整理了一些学习过程中记录的

    2024年02月09日
    浏览(70)
  • 十分钟玩转3D绘图:WxGL完全手册

    WxGL是一个基于PyOpenGL的跨平台三维数据快速可视化工具包,提供类似Matplotlib风格的应用方式。WxGL也可以集成到wxPython或PyQt6中实现更多的功能和控制。 WxGL提供了一套简洁易用、对用户友好的API,将OpenGL的复杂概念封装起来,使得用户可以更加专注于数据的处理,而无需在3

    2024年01月22日
    浏览(73)
  • 十分钟实现 Android Camera2 视频录制

    因为工作中要使用 Android Camera2 API ,但因为 Camera2 比较复杂,网上资料也比较乱,有一定入门门槛,所以花了几天时间系统研究了下,并在 CSDN 上记录了下,希望能帮助到更多的小伙伴。 上两篇文章使用 Camera2 实现了相机预览和拍照的功能,这篇文章我们接着上文,来实现

    2024年02月11日
    浏览(53)
  • 十分钟实现 Android Camera2 相机预览

    因为工作中要使用 Android Camera2 API ,但因为 Camera2 比较复杂,网上资料也比较乱,有一定入门门槛,所以花了几天时间系统研究了下,并在 CSDN 上记录了下,希望能帮助到更多的小伙伴。 Camera2 API 的包名是 android.hardware.camera2 ,是 Android 5.0 后推出的一套调用摄像头设备的接口

    2024年02月13日
    浏览(73)
  • 十分钟实现 Android Camera2 相机拍照

    因为工作中要使用 Android Camera2 API ,但因为 Camera2 比较复杂,网上资料也比较乱,有一定入门门槛,所以花了几天时间系统研究了下,并在 CSDN 上记录了下,希望能帮助到更多的小伙伴。 上篇文章 我们使用 Camera2 实现了相机预览的功能,这篇文章我们接着上文,来实现 Cam

    2024年02月11日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包