美团王兴你大姨妈的卫生巾→吸血鬼!
王兴你做个人吧,
别不问三七二十一就罚款!
这一单,是大学校内单,保安不让外卖员进入校区。我打电话给顾客说了,并让他把货送出来,送到学校门口。我在学校门口取的货,并完成了配送任务。
王吸血鬼却以取货异常罚了我的款,申请两次都不给通过。
王兴你大姨妈缺钱买卫生巾了,你这么孝顺罚款给你大姨妈购卫生巾????
王兴你做个人吧,
别不问三七二十一就罚款!
这一单,是大学校内单,保安不让外卖员进入校区。我打电话给顾客说了,并让他把货送出来,送到学校门口。我在学校门口取的货,并完成了配送任务。
王吸血鬼却以取货异常罚了我的款,申请两次都不给通过。
王兴你大姨妈缺钱买卫生巾了,你这么孝顺罚款给你大姨妈购卫生巾????
领导们都喜欢凡事有交代,事事有回应,件件有着落。
但是我就是安排给我的任务我就默默地干,干完了也不懂得跟领导汇报一下,之前在学校也是每次都是导师来问我进度,但是我就是没完成、完成不了就会跟你说,完成了我就不说了的那种,现在还改不过来[泪][泪][泪]
在学校这样的话久了老师也知道我是这种性格,知道我有在做事,但是在职场上面那么多同事,做了不说,领导就不知道[苦涩][苦涩]
但是我就是安排给我的任务我就默默地干,干完了也不懂得跟领导汇报一下,之前在学校也是每次都是导师来问我进度,但是我就是没完成、完成不了就会跟你说,完成了我就不说了的那种,现在还改不过来[泪][泪][泪]
在学校这样的话久了老师也知道我是这种性格,知道我有在做事,但是在职场上面那么多同事,做了不说,领导就不知道[苦涩][苦涩]
LLM 通常使用 16 位浮点参数 (即 FP16 或 BF16) 进行训练。因此,存储一个权重值或激活值需要 2 个字节的内存。如果参数能从16位降低到8位或者4位,就能对模型大小进行压缩,而不会降低模型精度。
前些天的一篇论文《QLoRA: Efficient Finetuning of Quantized LLMs》https://t.cn/A6p74n4K 提出了一种4位参数的优化方案,可以大幅降低内存使用量,可以在一块48GB的GPU上微调一个拥有650亿参数的模型,同时还能保持完全的16位微调任务性能。
今天他们发布了正式的Demo:
Code+Demo:github.com/artidoro/qlora
示例:https://t.cn/A6p79eWR
Colab:https://t.cn/A6p79eWT
Guanaco Playground:https://t.cn/A6p79eWQ
从演示和他们自己的介绍看,这个成果的价值是很大的,在不减少性能的情况下模型的尺寸大幅减少,这意味着对GPU和设备性能的要求可以降低,微调的时间也跟着降低。以后在手机上运行LLM将不是问题。
--------------------------
以下是对他们长推文的GPT-4翻译,仅供参考:
https://t.cn/A6p79eW8
我们介绍了QLoRA,这是一种高效的微调方法,它足以在单个48GB GPU上微调一个650亿参数模型,同时保持完整的16位微调任务性能。QLoRA通过一个冻结的、4位量化的预训练语言模型反向传播梯度至低秩适配器(LoRA)。我们最好的模型系列,我们命名为Guanaco,在Vicuna基准测试中超越了所有以前公开发布的模型,达到了ChatGPT性能水平的99.3%,而只需要在单个GPU上微调24小时。
QLoRA引入了一些创新来节省内存而不牺牲性能:
(a) 4位NormalFloat (NF4),这是一个对于正态分布权重来说在信息理论上是最优的新数据类型;
(b) 双重量化来通过量化量化常数来减少平均内存占用;
(c) 分页优化器来管理内存峰值。
我们使用QLoRA来微调超过1000个模型,在8个指令数据集、多个模型类型(LLaMA、T5)和在常规微调下无法运行的模型规模(例如33B和65B参数模型)之间提供详细的指令执行和聊天机器人性能分析。我们的结果显示,QLoRA在小型高质量数据集上的微调可以达到最先进的结果,即使使用比以前的SoTA小的模型。我们提供了基于人类和GPT-4评估的聊天机器人性能的详细分析,显示GPT-4评估是一种廉价且合理的替代人类评估的方式。
此外,我们发现当前的聊天机器人基准测试不可信,无法准确评估聊天机器人的性能水平。通过挑选柠檬的分析,我们展示了Guanaco与ChatGPT相比的失败点。我们发布了我们所有的模型和代码,包括4位训练的CUDA内核。
QLoRA:LLMs的4位微调就在这里!随之而来的是Guanaco,这是一个在单个GPU上的聊天机器人,在Vicuna基准测试中达到了ChatGPT性能的99%:
论文:https://t.cn/A6p74n4K
Code+Demo:github.com/artidoro/qlora
示例:https://t.cn/A6p79eWR
Colab:https://t.cn/A6p79eWT
想看看Guanaco 65B有多好吗?这里有个小游戏:你能区分ChatGPT的输出和Guanaco-65B的输出吗?我们的作者很难区分它们——也许有什么窍门?你比我们强吗?https://t.cn/A6p79eWR(每个样本后有解答)
快速发现:
- 在1个消费者级GPU上用12小时达到97%的ChatGPT性能
- 在所有规模和模型上匹配16位性能
- 主要贡献:NormalFloat数据类型,分页优化器,双重量化
- FLAN v2适合指令调优,不适合聊天机器人
- 数据质量>>数据量:9000个数据集击败了100万个数据集
- Open Assistant数据集质量高 -> Guanaco
- Guanaco在人类和GPT-4评价的Vicuna基准测试中击败了ChatGPT
- Vicuna基准测试太小
- 我们在Open Assistant数据(Vicuna的10倍)上创建了一个新的基准测试,它看起来更可靠
- 我们收集了Guanaco的失败案例:它不擅长数学,但对于建议的误导信息和心理理论效果好
通过QLoRA,你可以在一台24/48GB的GPU上微调Guanaco 33B/65B模型,只需要12/24小时进行一次微调。QLoRA在所有测试的情况和规模中都复制了16位性能。
“但是使用LoRA进行微调比全微调差吗?”
事实上,常规的LoRA表现并不好。我们应用的魔法是超参数调整✨
如果你将LoRA连接到所有线性层,事实证明,它工作得非常好,完全没有问题。
QLoRA如何工作?它将一个冻结的4位基础模型与顶部的适配器结合在一起。我们通过4位权重反向传播到适配器。我们发明了一些内存效率的巧妙技巧。主要组件包括:4位NormalFloat,分页优化器和双重量化。
让我们深入研究!4位NormalFloat是一种新的数据类型,是维持16位性能级别的关键成分。它的主要属性是:数据类型中的任何比特组合,例如0011或0101,都被分配了相等数量的输入张量元素。这意味着数据类型在信息理论上是最优的,类似于赫夫曼编码(不保证最佳误差)。我们如何为神经网络创建这种数据类型?我们可以利用训练好的神经网络的一个属性:它们的权重是正态分布的。为了找到一个在每个量化箱中有相同数量值的量化,我们希望解剖张量的分布,以便在绘图时,每个分布切片都有相等的区域(区域=箱中的数字数量)。以下是一个可视化:
这种理论上最优的数据类型在实践中效果好吗?是的,它很好。与Float数据类型相比,按位计算它能产生更多的零射击准确性。在这个图中,你也会看到DQ = 双重量化。那是什么?
双重量化非常简单,但也很傻:如果我们想让我们的第一次量化从16位-> 4位更有效,我们可以在其上再进行一次量化。在这种情况下,第二次量化量化了量化常数(快速说5次)。
通过这个技巧,我们可以使用一个小的块大小(对于良好的4位性能很重要)并将小块的开销从每个参数的0.5位减小到仅0.125位。
最后一个技巧是分页优化器。实际上,我一年前就实现了这个,但是没有找到它的用途。它类似于优化器卸载,其中优化器的一部分存在于CPU上,一部分存在于GPU上,如果优化器更新发生,就会进行交换。
卸载和分页之间的区别很大:卸载是懒惰的,完全防止内存溢出。虽然卸载需要手动管理,但分页优化器会自动在后台卸载小页面。它们在需要之前被预取到GPU。
另一个优点是分页优化器是自适应的:如果你有足够的内存,所有内容都会留在GPU上并且速度很快。如果你遇到一个大的小批量,优化器被逐出到CPU并稍后返回到GPU。因此,分页优化器对于存活内存峰值是完美的。
这些技术一起使得将大模型适应到小GPU变得容易。使用QLoRA,微调效果如此出色,我们可以每天在华盛顿大学的小型GPU集群上微调100多个LLaMAs。我们决定利用这个进行深入分析。
我们的主要发现是:
(1)指令调整数据集对于指令跟踪有好处,但对于聊天机器人的性能有害;
(2)你可以在仅微调24小时内用QLoRA创建一个达到ChatGPT性能水平99.3%的聊天机器人!
首先是首要的:我们对所有常用的指令跟踪数据集进行了微调。结果:有些数据集是坏的,有些是好的。FLAN v2是获得良好指令跟踪分数的最佳方式。
然而,当我们训练聊天机器人并发现FLAN v2是最差的聊天机器人时,令人惊讶的是。怎么会这样呢?原因很简单,"你在微调什么,就会擅长什么"。FLAN v2被设计用于"推理"和相关能力,而不是聊天。
那么,为聊天机器人交互设计的数据是什么呢?Open Assistant数据集是最高质量的数据集之一。它经过社区的仔细验证,支持多语言,并且有趣的是,尽管很小(在我们的情况下只有9000个样本),但它包含了巨大的力量!
FLAN v2有超过1M的指令跟踪示例,而Open Assistant数据只有9000个样本。性能差距表明:高质量的数据对于微调性能的重要性,超过了样本数量。(在我们的附录中有对此的详细分析)
因此,我们的Guanaco配方就像OpenAssistant数据+QLoRA一样简单。有了这个,我们创建了7/13/33/65B的聊天机器人。这些聊天机器人出奇的强大。在一场类似锦标赛的比赛中,无论是人类还是GPT-4都认为Guanaco比ChatGPT更好。
我们的设置:模型得到一个提示并竞争产生最佳响应。一个法官(GPT-4/人类)决定胜者。胜者根据对手的实力获得Elo点,输家失去点数。随着时间的推移,Elo分数反映了这个游戏的技巧。越高越好。
这个设置的问题是80个提示并不多,可能会引入偏见和不确定性。所以我们在Open Assistant数据集上复制了实验,创建了"Open Assistant基准测试",它似乎更可靠。
我们看到我们的模型非常好。所以我们做了自然的事情,我们尝试打破它。并不是那么容易,Guanaco似乎对于建议的误信息和心理理论非常坚韧,而其他模型在这些地方都失败了。但是它也有自己的弱点。
我们看到随机的拒绝:
很容易获取Guanaco被告知保密的信息
它的数学非常差:
这篇论文有许多限制,例如,我们没有对偏见进行深入分析。我们在CrowS偏见基准测试上对Guanaco进行了评估,它做得很好,但可能还有许多隐藏的严重偏见尚未揭示。
另一个主要限制是,目前,4位推断是很慢的。我没有时间完成4位推断内核的编写;它们还需要更多的工作。显然,为硬件不支持的数据类型编写CUDA代码进行矩阵乘法是非常困难的。糟糕!
但是,用QLoRA,前景非常明亮!当我在ChatGPT和GPT-4之后与他们交谈时,许多研究人员感到沮丧。但是,我对在学术界工作感到无比兴奋!你可以用QLoRA和LLaMA模型做很多事情。机会无穷无尽!
QLoRA也将实现在你的手机上进行隐私保护的微调。我们估计,你可以在一个晚上用iPhone 12 Plus微调300万个单词。这意味着,我们很快就会在手机上看到为每个个人应用专门定制的LLM。
随着预训练的结束和微调的超级便宜,我们有机会为每个人带来有用的东西,也能理解这些强大的模型能做什么,以及它们会失败在哪些地方。会有障碍和危险,但我相信我们可以应对并克服它们。
一年前,常见的观点是所有重要的研究都在工业AI实验室中完成。我认为这已经不再是事实。预训练只能通过大量的计算来完成,但没有必要追求AGI。LLaMA对于理解和开发更好的工具已经足够好了。
在接下来的几周里,我将专注于bitsandbytes。我有一个4位推断的草案,将很快整合它。推断应该比现在快8-16倍。你应该每天都能看到bug修复和改进(这是在我处理完邮件和评估课程项目后)。
我想感谢我的出色合作者 @ Artidoro Pagnoni @ Ari Holtzman @ Luke Zettlemoyer。特别感谢@ younes 帮助我们集成Transformer和更多!感谢所有的beta测试者!它大大帮助我们使软件稳定。
我们也要感谢@ Hugging Face团队的支持!他们赞助了一个33B Guanaco的演示,你可以在这里访问:https://t.cn/A6p79eWm(有点慢,但是它可以工作)。
我们正在努力做一个更快的演示,但需要更多的时间。
Guanaco-33b - 由timdettmers制作的一个Hugging Face空间 https://t.cn/A6p79eWQ 更多的实物(数据集)和细节即将推出!
前些天的一篇论文《QLoRA: Efficient Finetuning of Quantized LLMs》https://t.cn/A6p74n4K 提出了一种4位参数的优化方案,可以大幅降低内存使用量,可以在一块48GB的GPU上微调一个拥有650亿参数的模型,同时还能保持完全的16位微调任务性能。
今天他们发布了正式的Demo:
Code+Demo:github.com/artidoro/qlora
示例:https://t.cn/A6p79eWR
Colab:https://t.cn/A6p79eWT
Guanaco Playground:https://t.cn/A6p79eWQ
从演示和他们自己的介绍看,这个成果的价值是很大的,在不减少性能的情况下模型的尺寸大幅减少,这意味着对GPU和设备性能的要求可以降低,微调的时间也跟着降低。以后在手机上运行LLM将不是问题。
--------------------------
以下是对他们长推文的GPT-4翻译,仅供参考:
https://t.cn/A6p79eW8
我们介绍了QLoRA,这是一种高效的微调方法,它足以在单个48GB GPU上微调一个650亿参数模型,同时保持完整的16位微调任务性能。QLoRA通过一个冻结的、4位量化的预训练语言模型反向传播梯度至低秩适配器(LoRA)。我们最好的模型系列,我们命名为Guanaco,在Vicuna基准测试中超越了所有以前公开发布的模型,达到了ChatGPT性能水平的99.3%,而只需要在单个GPU上微调24小时。
QLoRA引入了一些创新来节省内存而不牺牲性能:
(a) 4位NormalFloat (NF4),这是一个对于正态分布权重来说在信息理论上是最优的新数据类型;
(b) 双重量化来通过量化量化常数来减少平均内存占用;
(c) 分页优化器来管理内存峰值。
我们使用QLoRA来微调超过1000个模型,在8个指令数据集、多个模型类型(LLaMA、T5)和在常规微调下无法运行的模型规模(例如33B和65B参数模型)之间提供详细的指令执行和聊天机器人性能分析。我们的结果显示,QLoRA在小型高质量数据集上的微调可以达到最先进的结果,即使使用比以前的SoTA小的模型。我们提供了基于人类和GPT-4评估的聊天机器人性能的详细分析,显示GPT-4评估是一种廉价且合理的替代人类评估的方式。
此外,我们发现当前的聊天机器人基准测试不可信,无法准确评估聊天机器人的性能水平。通过挑选柠檬的分析,我们展示了Guanaco与ChatGPT相比的失败点。我们发布了我们所有的模型和代码,包括4位训练的CUDA内核。
QLoRA:LLMs的4位微调就在这里!随之而来的是Guanaco,这是一个在单个GPU上的聊天机器人,在Vicuna基准测试中达到了ChatGPT性能的99%:
论文:https://t.cn/A6p74n4K
Code+Demo:github.com/artidoro/qlora
示例:https://t.cn/A6p79eWR
Colab:https://t.cn/A6p79eWT
想看看Guanaco 65B有多好吗?这里有个小游戏:你能区分ChatGPT的输出和Guanaco-65B的输出吗?我们的作者很难区分它们——也许有什么窍门?你比我们强吗?https://t.cn/A6p79eWR(每个样本后有解答)
快速发现:
- 在1个消费者级GPU上用12小时达到97%的ChatGPT性能
- 在所有规模和模型上匹配16位性能
- 主要贡献:NormalFloat数据类型,分页优化器,双重量化
- FLAN v2适合指令调优,不适合聊天机器人
- 数据质量>>数据量:9000个数据集击败了100万个数据集
- Open Assistant数据集质量高 -> Guanaco
- Guanaco在人类和GPT-4评价的Vicuna基准测试中击败了ChatGPT
- Vicuna基准测试太小
- 我们在Open Assistant数据(Vicuna的10倍)上创建了一个新的基准测试,它看起来更可靠
- 我们收集了Guanaco的失败案例:它不擅长数学,但对于建议的误导信息和心理理论效果好
通过QLoRA,你可以在一台24/48GB的GPU上微调Guanaco 33B/65B模型,只需要12/24小时进行一次微调。QLoRA在所有测试的情况和规模中都复制了16位性能。
“但是使用LoRA进行微调比全微调差吗?”
事实上,常规的LoRA表现并不好。我们应用的魔法是超参数调整✨
如果你将LoRA连接到所有线性层,事实证明,它工作得非常好,完全没有问题。
QLoRA如何工作?它将一个冻结的4位基础模型与顶部的适配器结合在一起。我们通过4位权重反向传播到适配器。我们发明了一些内存效率的巧妙技巧。主要组件包括:4位NormalFloat,分页优化器和双重量化。
让我们深入研究!4位NormalFloat是一种新的数据类型,是维持16位性能级别的关键成分。它的主要属性是:数据类型中的任何比特组合,例如0011或0101,都被分配了相等数量的输入张量元素。这意味着数据类型在信息理论上是最优的,类似于赫夫曼编码(不保证最佳误差)。我们如何为神经网络创建这种数据类型?我们可以利用训练好的神经网络的一个属性:它们的权重是正态分布的。为了找到一个在每个量化箱中有相同数量值的量化,我们希望解剖张量的分布,以便在绘图时,每个分布切片都有相等的区域(区域=箱中的数字数量)。以下是一个可视化:
这种理论上最优的数据类型在实践中效果好吗?是的,它很好。与Float数据类型相比,按位计算它能产生更多的零射击准确性。在这个图中,你也会看到DQ = 双重量化。那是什么?
双重量化非常简单,但也很傻:如果我们想让我们的第一次量化从16位-> 4位更有效,我们可以在其上再进行一次量化。在这种情况下,第二次量化量化了量化常数(快速说5次)。
通过这个技巧,我们可以使用一个小的块大小(对于良好的4位性能很重要)并将小块的开销从每个参数的0.5位减小到仅0.125位。
最后一个技巧是分页优化器。实际上,我一年前就实现了这个,但是没有找到它的用途。它类似于优化器卸载,其中优化器的一部分存在于CPU上,一部分存在于GPU上,如果优化器更新发生,就会进行交换。
卸载和分页之间的区别很大:卸载是懒惰的,完全防止内存溢出。虽然卸载需要手动管理,但分页优化器会自动在后台卸载小页面。它们在需要之前被预取到GPU。
另一个优点是分页优化器是自适应的:如果你有足够的内存,所有内容都会留在GPU上并且速度很快。如果你遇到一个大的小批量,优化器被逐出到CPU并稍后返回到GPU。因此,分页优化器对于存活内存峰值是完美的。
这些技术一起使得将大模型适应到小GPU变得容易。使用QLoRA,微调效果如此出色,我们可以每天在华盛顿大学的小型GPU集群上微调100多个LLaMAs。我们决定利用这个进行深入分析。
我们的主要发现是:
(1)指令调整数据集对于指令跟踪有好处,但对于聊天机器人的性能有害;
(2)你可以在仅微调24小时内用QLoRA创建一个达到ChatGPT性能水平99.3%的聊天机器人!
首先是首要的:我们对所有常用的指令跟踪数据集进行了微调。结果:有些数据集是坏的,有些是好的。FLAN v2是获得良好指令跟踪分数的最佳方式。
然而,当我们训练聊天机器人并发现FLAN v2是最差的聊天机器人时,令人惊讶的是。怎么会这样呢?原因很简单,"你在微调什么,就会擅长什么"。FLAN v2被设计用于"推理"和相关能力,而不是聊天。
那么,为聊天机器人交互设计的数据是什么呢?Open Assistant数据集是最高质量的数据集之一。它经过社区的仔细验证,支持多语言,并且有趣的是,尽管很小(在我们的情况下只有9000个样本),但它包含了巨大的力量!
FLAN v2有超过1M的指令跟踪示例,而Open Assistant数据只有9000个样本。性能差距表明:高质量的数据对于微调性能的重要性,超过了样本数量。(在我们的附录中有对此的详细分析)
因此,我们的Guanaco配方就像OpenAssistant数据+QLoRA一样简单。有了这个,我们创建了7/13/33/65B的聊天机器人。这些聊天机器人出奇的强大。在一场类似锦标赛的比赛中,无论是人类还是GPT-4都认为Guanaco比ChatGPT更好。
我们的设置:模型得到一个提示并竞争产生最佳响应。一个法官(GPT-4/人类)决定胜者。胜者根据对手的实力获得Elo点,输家失去点数。随着时间的推移,Elo分数反映了这个游戏的技巧。越高越好。
这个设置的问题是80个提示并不多,可能会引入偏见和不确定性。所以我们在Open Assistant数据集上复制了实验,创建了"Open Assistant基准测试",它似乎更可靠。
我们看到我们的模型非常好。所以我们做了自然的事情,我们尝试打破它。并不是那么容易,Guanaco似乎对于建议的误信息和心理理论非常坚韧,而其他模型在这些地方都失败了。但是它也有自己的弱点。
我们看到随机的拒绝:
很容易获取Guanaco被告知保密的信息
它的数学非常差:
这篇论文有许多限制,例如,我们没有对偏见进行深入分析。我们在CrowS偏见基准测试上对Guanaco进行了评估,它做得很好,但可能还有许多隐藏的严重偏见尚未揭示。
另一个主要限制是,目前,4位推断是很慢的。我没有时间完成4位推断内核的编写;它们还需要更多的工作。显然,为硬件不支持的数据类型编写CUDA代码进行矩阵乘法是非常困难的。糟糕!
但是,用QLoRA,前景非常明亮!当我在ChatGPT和GPT-4之后与他们交谈时,许多研究人员感到沮丧。但是,我对在学术界工作感到无比兴奋!你可以用QLoRA和LLaMA模型做很多事情。机会无穷无尽!
QLoRA也将实现在你的手机上进行隐私保护的微调。我们估计,你可以在一个晚上用iPhone 12 Plus微调300万个单词。这意味着,我们很快就会在手机上看到为每个个人应用专门定制的LLM。
随着预训练的结束和微调的超级便宜,我们有机会为每个人带来有用的东西,也能理解这些强大的模型能做什么,以及它们会失败在哪些地方。会有障碍和危险,但我相信我们可以应对并克服它们。
一年前,常见的观点是所有重要的研究都在工业AI实验室中完成。我认为这已经不再是事实。预训练只能通过大量的计算来完成,但没有必要追求AGI。LLaMA对于理解和开发更好的工具已经足够好了。
在接下来的几周里,我将专注于bitsandbytes。我有一个4位推断的草案,将很快整合它。推断应该比现在快8-16倍。你应该每天都能看到bug修复和改进(这是在我处理完邮件和评估课程项目后)。
我想感谢我的出色合作者 @ Artidoro Pagnoni @ Ari Holtzman @ Luke Zettlemoyer。特别感谢@ younes 帮助我们集成Transformer和更多!感谢所有的beta测试者!它大大帮助我们使软件稳定。
我们也要感谢@ Hugging Face团队的支持!他们赞助了一个33B Guanaco的演示,你可以在这里访问:https://t.cn/A6p79eWm(有点慢,但是它可以工作)。
我们正在努力做一个更快的演示,但需要更多的时间。
Guanaco-33b - 由timdettmers制作的一个Hugging Face空间 https://t.cn/A6p79eWQ 更多的实物(数据集)和细节即将推出!
✋热门推荐