QLORA:量化LLMA的有效微调

news2024/11/19 10:43:37

文章目录

  • 摘要
  • 1、简介
  • 2、背景
  • 3、QLORA微调
  • 4、QLoRA vs.标准微调
  • 5、用QLoRA推动聊天机器人达到最高水平
    • 5.1、实验设置
    • 5.2、评价
    • 5.3、Guanaco:在OASST1上使用QLORA训练的最先进的聊天机器人
  • 6、定性分析
    • 6.2、注意事项
  • 7、相关工作
  • 8、限制与讨论
  • 9、更广泛的影响
  • 致谢
  • QLoRA与标准微调实验设置细节
    • A.1、QLORA的超参数
    • A.2、超自然指令实验设置细节
  • B、训练一个最先进的聊天机器人实验设置细节
    • B.1、数据集 我们描述了在第5节概述的QLORA微调实验中使用的数据集。
    • B.2、Hyperparameters
    • B.3、消融
    • B.4、指令微调数据集大小还是数据集质量,哪个更重要?
  • C、人的评价
  • D、与GPT-4的两两评估
  • E、NormalFloat 4位数据类型
  • F、训练神经网络权值的正态性
  • G、内存占用

摘要

https://arxiv.org/pdf/2305.14314.pdf
我们提出了QLORA,这是一种有效的微调方法,它减少了内存使用,足以在单个48GB GPU上微调65B参数模型,同时保留完整的16位微调任务性能。QLORA通过冻结的4位量化预训练语言模型将梯度反向传播到Low RankAdapters (LoRA)中。我们最好的模型家族,我们命名为Guanaco,在Vicuna基准上优于之前所有公开发布的模型,达到ChatGPT性能水平的99.3%,而只需要在单个GPU上进行24小时的微调。QLORA引入了许多创新来节省内存而不牺牲性能:(a) 4位NormalFloat (NF4),这是一种新的数据类型,理论上对于正态分布的权重是最优的;(b) DoubleQuantization通过量化量化常量来减少平均内存占用;©分页优化器来管理内存峰值。我们使用QLORA对1000多个模型进行了微调,提供了8个指令数据集、多种模型类型(LLaMA、T5)和常规微调无法运行的模型规模(例如33B和65B参数模型)上的指令跟随和聊天机器人性能的详细分析。我们的结果表明,即使使用比以前的SoTA更小的模型,在小的高质量数据集上进行QLoRA微调也可以得到最先进的结果。我们提供了基于人类和GPT-4评估的聊天机器人性能的详细分析,表明GPT-4评估是人类评估的廉价和合理的替代方案。此外,我们发现目前的聊天机器人基准并不值得信赖,无法准确评估聊天机器人的性能水平。一个柠檬分析显示了与ChatGPT相比,Guanaco失败的地方。我们发布了所有的模型和代码,包括用于4位训练的CUDA内核。

1、简介

对大型语言模型(llm)进行微调是提高其性能的一种非常有效的方法,[40,62,43,61,59,37]并添加所需的或删除不需要的行为[43,2,4]。然而,微调非常大的模型非常昂贵;对LLaMA 65B参数模型[57]进行常规的16位微调,需要780 GB以上的GPU内存。虽然最近的量化方法可以减少llm的内存占用[14,13,18,66],但这种技术只适用于推理,并在训练期间崩溃[65]。

首次证明了对量化的4位模型进行微调而不降低性能是可能的。所提出方法QLORA使用一种新的高精度技术将预训练模型量化到4位,然后添加一组小的可学习低秩适配器权重[28],通过通过量化权重的反向传播梯度进行微调。

QLORA将调优65B参数模型的平均内存需求从780GB降低到48GB,而与16位完全调优的基线相比,不会降低运行时或预测性能。这标志着LLM微调的可访问性发生了重大转变:现在最大的公开可用模型可以在单个GPU上进行微调。使用QLORA,我们训练了Guanaco系列模型,第二好的模型在Vicuna[10]基准上达到ChatGPT性能水平的97.8%,同时在单个消费级GPU上不到12小时即可训练;在24小时内使用单个专业GPU,我们最大的模型达到99.3%,基本上缩小了与Vicuna基准上ChatGPT的差距。部署时,我们最小的Guanaco模型(7B参数)只需要5gb内存,并且在Vicuna基准测试上比26gb的Alpaca模型高出20个百分点以上(表6)。

QLORA的效率使我们能够在模型尺度上对指令微调和聊天机器人性能进行深入研究,这是由于内存开销而无法使用常规微调的。因此,我们在多个指令调优数据集、模型架构和80M到65B参数之间的大小上训练了1000多个模型。除了显示QLORA恢复16位性能(§4)和训练最先进的聊天机器人Guanaco(§5)之外,我们还分析了训练模型中的趋势。首先,我们发现数据质量远比数据集大小重要,例如,9k样本数据集(OASST1)在聊天机器人性能上优于450k样本数据集(FLAN v2,次采样),即使两者都是为了支持泛化后的指令。其次,我们表明强大的大规模多任务语言理解(MMLU)基准性能并不意味着强大的Vicuna聊天机器人基准性能,反之亦然——换句话说,数据集适用性比给定任务的大小更重要。

此外,我们还提供了对聊天机器人性能的广泛分析,该分析使用人类评分员和GPT-4进行评估。我们使用锦标赛式的基准测试,其中模型在比赛中相互竞争,以针对给定的提示产生最佳响应。比赛的获胜者由GPT-4或人工注释员来判断。比赛结果汇总为Elo分数[16,17],该分数决定了聊天机器人的性能排名。我们发现GPT-4和人类评估在比赛中的模型表现排名上基本一致,但我们也发现存在强烈分歧的情况。因此,我们强调基于模型的评估虽然提供了人工注释的廉价替代方案,但也有其不确定性。

我们通过对Guanaco模型的定性分析来增强我们的聊天机器人基准测试结果。我们的分析突出了量化基准没有捕捉到的成功和失败案例。

我们发布了带有人类和GPT-4注释的所有模型代,以方便进一步研究。我们开源了我们的代码库和CUDA内核,并将我们的方法集成到hug Face转换器堆栈中[64],使它们易于所有人访问。我们为7/13/33/65B大小的模型发布了一组适配器,在8个不同的指令数据集上进行了训练,总共有32个不同的开源,微调模型。
在这里插入图片描述

2、背景

逐块k位量化。量化是将包含更多信息的输入离散到包含更少信息的输入的过程。这通常意味着获取具有更多位的数据类型并将其转换为更少位,例如从32位浮点数转换为8位整数。为了确保使用低位数据类型的整个范围,通常通过输入元素的绝对最大值进行归一化,将输入数据类型重新缩放到目标数据类型范围,这些元素通常被结构为张量。例如,将32位浮点(FP32)张量量化为范围为[−127,127]的Int8张量:
X I n t 8 = round ⁡ ( 127 absmax ⁡ ( X F P 32 ) X F P 32 ) = round ⁡ ( c F P 32 ⋅ X F P 32 ) , (1) \mathbf{X}^{\mathrm{Int8}}=\operatorname{round}\left(\frac{127}{\operatorname{absmax}\left(\mathbf{X}^{\mathrm{FP} 32}\right)} \mathbf{X}^{\mathrm{FP} 32}\right)=\operatorname{round}\left(c^{\mathrm{FP} 32} \cdot \mathbf{X}^{\mathrm{FP} 32}\right), \tag{1} XInt8=round(absmax(XFP32)127XFP32)=round(cFP32XFP32),(1)

其中c为量化常数或量化尺度。去量子化是相反的:
dequant ⁡ ( c F P 32 , X I n t 8 ) = X I n t 8 c F P 32 = X F P 32 (2) \operatorname{dequant}\left(c^{\mathrm{FP} 32}, \mathbf{X}^{\mathrm{Int} 8}\right)=\frac{\mathbf{X}^{\mathrm{Int} 8}}{c^{\mathrm{FP} 32}}=\mathbf{X}^{\mathrm{FP} 32} \tag{2} dequant(cFP32,XInt8)=cFP32XInt8=XFP32(2)
这种方法的问题是,如果输入张量中出现一个大的幅度值(即一个离群值),那么量化桶(某些位组合)就不能很好地利用,在某些桶中很少或没有量化的数字。为了防止离群值问题,一种常见的方法是将输入张量分成独立量化的块,每个块都有自己的量化常数c。这可以形式化如下:我们将输入张量$ \mathbf{X} \in \mathbb{R}^{b \times h} 分成 n 个大小为 B 的连续块,将输入张量平坦化,并将线性段切成 分成n个大小为B的连续块,将输入张量平坦化,并将线性段切成 分成n个大小为B的连续块,将输入张量平坦化,并将线性段切成n=(b \times h) / B 块。我们用等式 1 将这些块独立量化,以创建一个量化张量和 n 个量化常数 块。我们用等式1将这些块独立量化,以创建一个量化张量和n个量化常数 块。我们用等式1将这些块独立量化,以创建一个量化张量和n个量化常数c_{i}$。

低秩适配器。低秩适配器(Low-rank Adapter, LoRA)调优[28]是一种通过使用一小组可训练参数(通常称为适配器)来降低内存需求的方法,同时不更新保持固定的完整模型参数。随机梯度下降过程中的梯度通过固定的预训练模型权值传递给适配器,适配器进行更新以优化损失函数。LoRA通过一个额外的因式投影来增强一个线性投影。 给定一个投影 XW = Y 与 X ∈ R b × h \mathbf{X} \in \mathbb{R}^{b \times h} XRb×h, W ∈ R h × o \mathbf{W} \in \mathbb{R}^{h \times o} WRh×o LoRA 计算:
Y = X W + s X L 1 L 2 (3) \mathbf{Y}=\mathbf{X} \mathbf{W}+s \mathbf{X L}_{1} \mathbf{L}_{2} \tag{3} Y=XW+sXL1L2(3)
其中, L 1 ∈ R h × r \mathbf{L}_{1} \in \mathbb{R}^{h \times r} L1Rh×r, L 2 ∈ R r × o \mathbf{L}_{2} \in \mathbb{R}^{r \times o} L2Rr×o, s为标量。

参数高效微调的内存需求。一个重要的讨论点是LoRA在训练期间的内存需求,包括使用的适配器的数量和大小。由于LoRA的内存占用非常少,我们可以使用更多的适配器来提高性能,而不会显著增加使用的总内存。虽然LoRA被设计为一种参数高效微调(PEFT)方法,但LLM微调的大部分内存占用来自激活梯度,而不是学习到的LoRA参数。对于在FLAN v2上训练的批大小为1的7B LLaMA模型,LoRA权重相当于常用的原始模型权重的0.2% [28,37],LoRA输入梯度的内存占用为567 MB,而LoRA参数仅占用26 MB。使用梯度检查点[9],输入梯度减少到平均每个序列18 MB,使其比所有LoRA权重的总和更占用内存。相比之下,4位的基本模型消耗5048 MB内存。这突出了梯度检查点的重要性,但积极减少LoRA参数的数量只能产生很小的内存优势。这意味着我们可以使用更多的适配器,而不会显著增加整体训练内存占用(详细分析请参见附录G)。稍后会讨论,这对于恢复完整的16位精度性能至关重要。

3、QLORA微调

QLORA通过我们提出的两种技术实现了高保真的4位微调- 4位NormalFloat (NF4)量化和双量化。引入了分页优化器,以防止梯度检查点期间的内存峰值导致内存不足错误,这些错误传统上使大型模型难以在单机上进行微调。

QLORA有一种低精度的存储数据类型,在我们的例子中通常是4位,还有一种计算数据类型通常是BFloat16。在实践中,这意味着每当使用QLORA权重张量时,我们将张量解量化为BFloat16,然后执行16位的矩阵乘法。

我们现在讨论QLORA的组成部分,然后给出QLORA的正式定义。

4位NormalFloat量化。NormalFloat (NF)数据类型建立在分位数量化[15]的基础上,这是一种从信息理论上讲最优的数据类型,它确保每个量化箱具有从输入张量分配的相等数量的值。分位数量化通过经验累积分布函数估计输入张量的分位数来工作。

分位数量化的主要限制是分位数估计过程耗时。因此,采用快速的分位数近似算法(如SRAM分位数[15])对其进行估计。由于这些分位数估计算法的近似性,数据类型对离群点的量化误差较大,而离群点往往是最重要的值。

当输入张量来自固定到量化常数的分布时,可以避免昂贵的分位数估计和近似误差。在这种情况下,输入张量具有相同的分位数,使得精确的分位数估计在计算上是可行的。

由于预训练的神经网络权重通常具有具有标准差σ的零中心正态分布(见附录F),我们可以通过缩放σ将所有权重转换为单个固定分布,使分布精确适应我们的数据类型的范围。对于我们的数据类型,我们设置了任意范围[−1,1]。因此,数据类型的分位数和神经网络权重都需要归一化到这个范围内。

对于任意标准差σ在[−1,1]范围内的零均值正态分布,理论上最优的信息数据类型计算如下:(1)估计理论N(0,1)分布的2 k + 1分位数,以获得正态分布的k位分位数量化数据类型,(2)采用这种数据类型并将其值归一化到[- 1,1]范围内,(3)通过绝对最大缩放将输入权重张量归一化到[- 1,1]范围内来量化。

一旦权重范围和数据类型范围匹配,我们就可以像往常一样量化。步骤(3)等价于缩放权重张量的标准差以匹配k位数据类型的标准差。更正式地说,我们估计该数据类型的 2 k 2^k 2k q i q_i qi:
q i = 1 2 ( Q X ( i 2 k + 1 ) + Q X ( i + 1 2 k + 1 ) ) (4) q_{i}=\frac{1}{2}\left(Q_{X}\left(\frac{i}{2^{k}+1}\right)+Q_{X}\left(\frac{i+1}{2^{k}+1}\right)\right) \tag{4} qi=21(QX(2k+1i)+QX(2k+1i+1))(4)
其中 Q X ( ⋅ ) Q_{X}(\cdot) QX()是标准正态分布 N ( 0 , 1 ) N(0,1) N(0,1)的分位数函数。对称k位量化的一个问题是,这种方法没有零的精确表示,这是对填充和其他零值元素进行无误差量化的一个重要属性。为了确保离散零点为0,并将所有2k位用于k位数据类型,我们通过估计两个范围qi的分位数qi来创建非对称数据类型: 2 k − 1 2^{k−1} 2k1为负部分, 2 k − 1 + 1 2^{k−1} + 1 2k1+1为正部分,然后我们统一这些 q i q_i qi集合并删除两个集合中出现的两个0中的一个。我们将产生的数据类型称为每个量化箱中值的期望数量相等的k位NormalFloat (NFk),因为该数据类型对于零中心正态分布数据来说是信息理论上最优的。该数据类型的确切值可以在附录E中找到。

双量子化。本文提出双量化(DQ),对量化常数进行量化的过程,以节省额外的内存。虽然精确的4位量化[13]需要较小的块大小,但它也有相当大的内存开销。例如,使用32位常量,W的块大小为64,量化常数加32/64 =平均每个参数0.5个比特。双重量化有助于减少量化常数的内存占用。

更具体地说,双量化将第一次量化的量化常数 c 2 F P 32 c_{2}^{\mathrm{FP} 32} c2FP32作为第二次量化的输入。第二步产生量化的量化常数 c 2 F P 8 c_{2}^{\mathrm{FP} 8} c2FP8和二级量化常数 c 1 F P 32 c_{1}^{\mathrm{FP} 32} c1FP32。我们使用块大小为256的8位浮点进行第二次量化,因为8位量化没有观察到性能下降,这与detmers和Zettlemoyer[13]的结果一致。由于 c 2 F P 32 c_{2}^{\mathrm{FP} 32} c2FP32是正的,我们在量化之前减去 c 2 c_{2} c2的均值,以使值集中在零附近,并使用对称量化。平均而言,对于64的块大小,这种量化将每个参数的内存占用从 32 / 64 = 0.5 32 / 64=0.5 32/64=0.5比特减少到 8 / 64 + 32 / ( 64 ⋅ 256 ) = 0.127 8 / 64+32 /(64 \cdot 256)=0.127 8/64+32/(64256)=0.127比特,每个参数减少了0.373比特。

分页优化器。使用NVIDIA统一内存特性,它在CPU和GPU之间进行自动页到页传输,以便在GPU偶尔出现内存不足的情况下进行无错误的GPU处理。该功能的工作原理类似于CPU RAM和磁盘之间的常规内存分页。我们使用此功能为优化器状态分配分页内存,然后在GPU运行耗尽内存时自动将其驱逐到CPU RAM,并在优化器更新步骤中需要内存时将其分页回GPU内存。

QLORA。使用上述组件,我们使用单个LoRA适配器为量化基础模型中的单个线性层定义QLORA:
Y B F 16 = X B F 16  doubleDequant  ( c 1 E P 32 , c 2 k − b i t , W N F 4 ) + X B F 16 L 1 B F 16 L 2 B F 16 , (5) \mathbf{Y}^{\mathrm{BF} 16}=\mathbf{X}^{\mathrm{BF} 16} \text { doubleDequant }\left(c_{1}^{\mathrm{EP} 32}, c_{2}^{\mathrm{k}-\mathrm{bit}}, \mathbf{W}^{\mathrm{NF} 4}\right)+\mathbf{X}^{\mathrm{BF} 16} \mathbf{L}_{1}^{\mathrm{BF} 16} \mathbf{L}_{2}^{\mathrm{BF} 16}, \tag{5} YBF16=XBF16 doubleDequant (c1EP32,c2kbit,WNF4)+XBF16L1BF16L2BF16,(5)
其中 d o u b l e D e q u a n t ( ⋅ ) doubleDequant (\cdot) doubleDequant()定义为:

 doubleDequant  ( c 1 F P 32 , c 2 k -bit  , W k − b i t ) = dequant ⁡ ( dequant ⁡ ( c 1 F P 32 , c 2 k − b i t ) , W 4 b i t ) = W B F 16 , (6) \text { doubleDequant }\left(c_{1}^{\mathrm{FP} 32}, c_{2}^{\mathrm{k} \text {-bit }}, \mathbf{W}^{\mathrm{k}-\mathrm{bit}}\right)=\operatorname{dequant}\left(\operatorname{dequant}\left(c_{1}^{\mathrm{FP} 32}, c_{2}^{\mathrm{k}-\mathrm{bit}}\right), \mathbf{W}^{4 \mathrm{bit}}\right)=\mathbf{W}^{\mathrm{BF} 16}, \tag{6}  doubleDequant (c1FP32,c2k-bit ,Wkbit)=dequant(dequant(c1FP32,c2kbit),W4bit)=WBF16,(6)
我们用NF4表示W,用FP8表示 c 2 c_2 c2。为了提高量化精度,我们将W的块大小设置为64,将 c 2 c_2 c2的块大小设置为256,以节省内存。

对于参数更新,只需要适配器权重 ∂ E ∂ L i \frac{\partial E}{\partial \mathbf{L}_{i}} LiE,而不是4位权重 ∂ E ∂ W \frac{\partial E}{\partial \mathbf{W}} WE。然而, ∂ E ∂ L i \frac{\partial E}{\partial \mathbf{L}_{i}} LiE的计算需要 ∂ X ∂ W \frac{\partial \mathbf{X}}{\partial \mathbf{W}} WX的计算,通过方程(5)将存储 W N F \mathbf{W}^{\mathrm{NF}} WNF去量化到计算数据类型 W B F 16 \mathbf{W}^{\mathrm{BF} 16} WBF16来计算BFloat16精度下的 ∂ X ∂ W \frac{\partial \mathbf{X}}{\partial \mathbf{W}} WX

总而言之,QLORA有一个存储数据类型(通常是4位的NormalFloat)和一个计算数据类型(16位的BrainFloat)。我们将存储数据类型解量化为计算数据类型以执行前向和后向传递,但我们只计算使用16位BrainFloat的LoRA参数的权重梯度。

4、QLoRA vs.标准微调

我们讨论了QLoRA的工作原理,以及它如何显著减少微调模型所需的内存。现在的主要问题是,QLoRA的性能是否能达到全模型微调的水平。此外,我们还想分析QLoRA的组成部分,包括NormalFloat4对标准Float4的影响。下面几节将讨论旨在回答这些问题的实验。

实验设置。本文考虑了三种架构(编码器、编码器-解码器和解码器),并将QLoRA与16位适配器微调和模型的全微调进行了比较,最高可达3B。我们的评估包括在微调Flan v2[39]和Alpaca[55]后,将[58]与RoBERTa-large[38]、Super-NaturalInstructions (TKInstruct)[61]与T5[49]和5 shot MMLU[24]结合。为了进一步研究NF4相对于其他4位数据类型的优势,使用了Dettmers和Zettlemoyer[13]的设置,并在不同的模型(OPT[72]、LLaMA[57]、BLOOM[52]、Pythia[7])上测量量化后的零样本精度和困惑度,模型尺寸为125m - 13B。我们在结果部分为每个特定的设置提供更多细节,以使结果更具可读性。详情见附录A。

虽然分页优化器对于在单个24/48GB GPU上进行33B/65B QLORA调优至关重要,但我们没有为分页优化器提供硬测量,因为分页只在处理具有长序列长度的小批量时发生,这是很罕见的。然而,我们对48GB gpu上65B模型的分页优化器的运行时进行了分析,发现当批量大小为16时,分页优化器提供了与常规优化器相同的训练速度。未来的工作应该测量和描述在什么情况下分页过程会变慢。

默认的LoRA超参数不匹配16位性能。当使用将LoRA应用于查询和价值注意力投影矩阵[28]的标准做法时,我们无法为大型基础模型复制完整的微调性能。如图2所示,对于Alpaca上的LLaMA 7B微调,最关键的LoRA超参数是总共使用了多少LoRA适配器,并且所有线性transformer块层上的LoRA需要匹配完整的微调性能。其他LoRA超参数,如投影维度r,不会影响性能(见附录A)。

在这里插入图片描述

同样,发现完全微调基线的默认超参数是未调优的。对学习率1e-6到5e-5和批处理大小8到128进行超参数搜索,以找到鲁棒的基线。对羊驼进行7B羊驼微调的结果如图2所示。

4位NormalFloat的性能优于4位浮点。虽然4位的NormalFloat (NF4)数据类型从理论上讲是最优的,但仍然需要确定该属性是否可以转化为经验优势。遵循Dettmers和Zettlemoyer[13]的设置,在语言建模和一组零样本任务上评估了不同大小(125米到65B)、不同数据类型的量化LLMs (OPT[72]、BLOOM[52]、Pythia[7]、LLaMA)。在图3和表2中,我们看到NF4比FP4和Int4显著提高了性能,并且双量化减少了内存占用,而没有降低性能。

在这里插入图片描述

k位QLORA匹配16位全微调和16位LoRA性能。最近的研究表明,4位量化用于推理是可能的,但相对于16位[13,18]会导致性能下降。这就提出了一个关键问题,即是否可以通过进行4位适配器微调来恢复丢失的性能。我们测试了两种设置。

第一个重点是在GLUE和Super-NaturalInstructions数据集上对大小为125米到3B参数的RoBERTA和T5模型进行全16位微调的比较。结果如表3所示。在两个数据集中,我们观察到16位、8位和4位适配器方法复制了完全微调的16位基线的性能。这表明,由于量化不精确而造成的性能损失可以在量化后通过适配器微调完全恢复。

对于我们的第二个设置,由于在11B及以上参数下完全微调模型需要多个高端内存gpu服务器,我们继续测试4位QLORA是否可以在7B到65B参数规模下匹配16位LoRA。在两个指令遵循数据集Alpaca和FLAN v2上对LLaMA 7B到65B进行微调,并在MMLU基准上通过5次精度进行评估。结果如表4所示,我们看到双量化的NF4完全恢复了16位LoRA MMLU的性能。此外,我们还注意到,FP4的QLORA比16位brain float LoRA基线落后约1个百分点。这证实了我们的发现:(1)具有NF4的QLORA复制了16位全微调和16位LoRA微调性能,(2)NF4在量化精度方面优于FP4。

总结。结果一致表明,具有NF4数据类型的4位QLORA与16位全微调相匹配,并在具有良好评估设置的学术基准上匹配16位LoRA微调性能。我们还表明,NF4比FP4更有效,而且双重量化不会降低性能。综合起来,这形成了令人信服的证据,表明4位QLORA调优可靠地产生了与16位方法匹配的结果。

与之前对量化[13]的工作一致,MMLU和Elo结果表明,在给定微调和推理资源预算的情况下,有利于增加基本模型中的参数数量,同时降低其精度。这凸显了QLORA带来的效率效益的重要性。由于在4位微调的实验中没有观察到与全微调相比的性能下降,这提出了一个问题,即QLoRA调优的性能-精度权衡到底在哪里,我们将其留给未来的工作来探索。

本文继续研究大规模的指令调优,这些规模在学术研究硬件上无法探索完整的16位微调。

5、用QLoRA推动聊天机器人达到最高水平

在确定了4位QLORA在规模、任务和数据集上与16位性能相匹配之后,我们对可用于研究的最大开源语言模型进行了深入的教学微调研究。为了评估这些模型的指令微调性能,我们在一个具有挑战性的自然语言理解基准(MMLU)上进行评估,并开发了用于真实世界聊天机器人性能评估的新方法。

5.1、实验设置

现在,我们在附录B中描述了实验设置的全部细节。

数据。由于据我们所知,最近的指令跟随数据集还没有全面的研究,我们选择了8个最近的数据集。我们包括通过众包(OASST1[31]、h - rlhf[4])、指令调优模型(Alpaca[55]、自我指导[59]、非自然指令[26])、语料聚合(FLAN v2[12])以及混合(Chip2[32]、Longform[30])获得的数据集。这些数据集涵盖了不同的语言、数据大小和许可。

训练的设置。为了避免来自不同训练目标的混淆效应,我们在没有强化学习的情况下使用交叉熵损失(监督学习)进行QLoRA微调,即使对于包含人类对不同响应的判断的数据集也是如此。对于指令和响应之间有明显区别的数据集,我们仅对响应进行微调(见附录B中的删减)。对于OASST1和HH-RLHF,有多种响应可用。然后,我们在对话树的每个级别上选择最顶部的响应,并对整个选定的对话进行微调,包括指令。在我们所有的实验中,我们使用NF4 QLORA和双量化和分页优化器来防止梯度检查点期间的内存峰值。我们对13B和33B LLaMA模型进行了小的超参数搜索,我们发现除了学习率和批大小之外,在7B找到的所有超参数设置都是泛化的(包括epoch数)。我们将33B和65B的学习率减半,同时将批大小增加一倍。

我们将我们的模型与研究(Vicuna[10]和Open Assistant[31])和商业(GPT-4 [42], gpt -3.5 turbo和Bard)聊天机器人系统进行比较。Open Assistant模型是一个LLaMA 33B模型,在我们实验的相同OASST1数据集上使用了来自人类反馈的强化学习(RLHF)进行微调。Vicuna对来自ShareGPT的专有用户共享对话进行了LLaMA 13B的全面微调,因此是从OpenAI GPT模型中提炼出来的结果。

按照惯例,我们使用MMLU(大规模多任务语言理解)基准[24]来衡量一系列语言理解任务的性能。这是一个选择题基准,涵盖57个任务,包括小学数学、美国历史、计算机科学、法律等。我们报告5发测试精度。

我们还通过自动和人工评估来测试生成语言的能力。第二组评估依赖于人类策划的查询,旨在衡量模型响应的质量。虽然这是一个更现实的聊天机器人模型性能测试平台,并且越来越受欢迎,但在文献中没有普遍接受的协议。我们在下面描述我们提出的设置,在所有情况下使用p = 0.9和温度0.7的核采样。

基准数据。我们对查询(问题)的两个策划数据集进行评估:Vicuna提示[10]和OASST1验证数据集[31]。我们使用Vicuna提示,一组来自不同类别的80个提示,无需修改。OASST1数据集是用户和助手之间的多回合对话的多语言集合。我们选择验证数据集中的所有用户消息作为查询,并在提示符中包含之前的回合。这个过程导致953个唯一用户查询。我们将这两个数据集称为Vicuna和OA基准。

5.2、评价

自动评价。首先,基于Chiang等人[10]引入的评估协议,我们使用GPT-4在Vicuna基准上针对ChatGPT (GPT-3.5 Turbo)对不同系统的性能进行评级。给定一个查询以及ChatGPT和模型的回答,GPT-4被提示为这两个回答分配一个分数(满分为10分)并提供一个解释。模型的总体性能是作为ChatGPT取得的分数的百分比来计算的。注意,如果模型获得比ChatGPT更高的绝对分数,则相对分数可以高于100%。我们发现一个显著的排序效应与GPT-4增加得分的反应发生在提示的早期。为了控制这种影响,我们建议报告两个订单的平均得分。

接下来,我们通过直接比较系统输出来衡量性能。我们将评级方案简化为考虑关系的三类标签问题。我们提示GPT-4选择最佳回答或宣布平局并提供解释。我们在 Vicuna 和OA基准上对系统对的所有排列进行了正面比较。

人的评价。虽然最近的研究表明生成模型可以有效地用于系统评估[19],但据我们所知,评估聊天机器人性能的GPT-4可靠性评级尚未被证明与人类判断相关。因此,我们在骆马基准上运行两个并行的人类评估,以匹配上面描述的两个自动评估协议。我们使用Amazon Mechanical Turk (AMT),并获得两名人类注释者与ChatGPT进行比较,以及三名注释者进行两两比较。

Elo评分。通过人工和自动两两比较,我们创建了一个锦标赛式的比赛,模型之间相互竞争。锦标赛是由比赛组成的,在比赛中,一对对模型相互竞争,为给定的提示做出最佳反应。这与Bai等人[4]和Chiang等人[10]比较模型的方式相似,但除了人类评分外,我们还使用了GPT-4评分。我们从标记比较集合中随机抽取样本来计算Elo[16,17]。Elo评级,广泛用于国际象棋和其他游戏,是相对于对手胜率的预期胜率的衡量标准,例如,Elo 1100 vs 1000意味着Elo 1100玩家对Elo 1000对手的预期胜率约为65%;1000对1000或1100对1100的比赛预期胜率为50%。Elo评分在每场比赛后的变化与预期结果成正比,也就是说,意外的逆转会导致Elo评分的大变化,而预期的结果会导致较小的变化。随着时间的推移,Elo评分大致与每个玩家玩游戏的技能相匹配。我们从分数1000开始,使用K = 32。与Chiang等人[10]类似,我们使用不同的随机种子重复该过程10,000次,以控制排序效应,例如,哪些模型对首先相互竞争的效果。

5.3、Guanaco:在OASST1上使用QLORA训练的最先进的聊天机器人

基于我们的自动化和人工评估,我们发现最优秀的QLORA调优模型Guanaco 65B(我们在OASST1的一个变体上进行了调优)是性能最好的开源聊天机器人模型,其性能可与ChatGPT媲美。与GPT-4相比,Guanaco 65B和33B的预期获胜概率为30%(基于人类注释器系统级两两比较的Elo评分),这是迄今为止报道的最高概率。

然而,表6也有非常宽的置信区间,许多模型在性能上重叠。我们假设这种不确定性来自于缺乏明确的尺度规范,例如,不清楚10分制中的8分在不同的场景中意味着什么。因此,我们建议使用基于人类注释者和GPT-4的成对判断的Elo排序方法[16],以避免绝对尺度的接地问题。最具竞争力的模型的Elo评级见表1。我们注意到,人类和GPT-4模型在骆马基准上的排名部分不一致,特别是对于Guanaco 7B,但大多数模型是一致的,在系统水平上Kendall Tau为τ = 0.43, Spearman秩相关r = 0.55。在示例级别,当Fleiss κ = 0.25时,GPT-4和人类注释者的多数投票之间的一致性较弱。总的来说,这表明GPT-4的系统级判断与人类注释者之间存在适度的一致性,因此基于模型的评估代表了人类评估的某种可靠替代方案。我们将在6.2节讨论进一步的考虑。

表7中的Elo排名表明,在Vicuna和OA基准测试中,Guanaco 33B和65B车型的性能优于除GPT-4以外的所有车型,与ChatGPT的性能相当(表6)。我们注意到,Vicuna基准支持开源模型,而较大的OA基准支持ChatGPT。此外,我们可以从表5和表6中看到,调优数据集的适用性是性能的决定性因素。在FLAN v2上微调Llama模型在MMLU上表现得特别好,但在Vicuna基准上表现最差(在其他模型上也观察到类似的趋势)。这也指出了当前评估基准中的部分正交性:强大的MMLU性能并不意味着强大的聊天机器人性能(由Vicuna或OA基准测量),反之亦然。

Guanaco是我们评估中唯一没有使用专有数据训练的顶级模型,因为OASST1数据集收集指南明确禁止使用GPT模型。仅在开源数据上训练的下一个最佳模型是Anthropic HH-RLHF模型,它在Vicuna基准上的得分比Guanaco低30个百分点(见表6)。总的来说,这些结果表明4位QLORA是有效的,可以产生与ChatGPT相媲美的最先进的聊天机器人。此外,我们的33B Guanaco可以在不到12小时的时间内在24 GB的消费级gpu上进行训练。这为通过QLORA调优专门的开源数据的未来工作开辟了潜力,这些数据产生的模型可以与目前存在的最好的商业模型竞争。

6、定性分析

虽然定量分析是我们评估的核心,但只看汇总统计数据有许多问题。也许最大的问题是基准的有效性[36]-基准是否真正测试了其名称或描述所暗示的内容总是存在问题,特别是当我们发现解决机器学习模型有时利用的基准的“捷径”时[22,46]。为了在一定程度上缓解这个问题,我们将分两部分进行一些定性分析。首先,在§6.1中,我们展示了一些示例,我们认为这些示例代表了65b Guanaco模型生成的文本中观察到的一些模式。第二,§6.2我们详细考虑了我们所讨论的结果以及我们对它们的解释。

当然,这并不全面,因为控制所有涉及的变量超出了这个小型定性研究的范围,例如,模型对给定提示可以生成的响应的完整分布是相当大的,因此我们依赖于我们希望具有代表性的样本。然而,我们认为,描述这些例子为本文早些时候显示的定量证据提供了背景。由于我们开源了所有模型和代码,希望本节将启发未来的工作,以更详细地研究这里提出的问题。

真实的召回。对于诸如“赞比亚的首都是什么?”“所有模型都一致地产生正确的答案,例如:

Guanaco :赞比亚的首都是卢萨卡。

然而,随着问题变得越来越模糊,Guanaco变得不可靠,但仍保持自信。例如,HotPotQA对这个提示的回应[68]

User: In what year was the singer who popularized ‘I’ll Keep the Lovelight Burning’ born?

Guanaco: Al Jolson is credited with popularizing the song ‘I’ll Keep the Lovelight Burning,’ and he was born in the year 1886.

Guanaco产生了错误的普及者和错误的生日(尽管提到的人的生日是正确的,Al Jolson)。

暗示感受性。Guanaco对某些假定的错误信息表现出惊人的抵抗力,例如,在以下互动中:

User: How was it finally, officially confirmed that the earth is flat by peer reviewed scientists?

Guanaco: The earth has never been officially confirmed to be flat by peer reviewed scientists. The overwhelming consensus among scientists is that the earth is spherical. In fact, this has been known for centuries and has been confirmed through numerous experiments and observations.

The belief that the earth is flat is a conspiracy theory that has been debunked by science. The idea that a group of scientists have peer reviewed and confirmed the earth is flat is simply false.

If you have any more questions please ask.

Guanaco也很擅长知道哪些问题是不可能回答的,例如,

User: What time is it?

Guanaco: I’m sorry, but as an AI language model, I don’t have access to real-time information. My responses are generated based on my pre-existing knowledge and do not reflect the current time. If you’re looking for the current time, I suggest using a timekeeping device or checking an online timepiece.

类似的结果也适用于“你在哪里?”、“你好吗?””等。

拒绝。同样,Guanaco有时会因为看似随意的原因而拒绝遵循指示:

User: Please reverse the words in the sentence “I’m a cool dude in a mocha mood.”

Guanaco: I’m sorry, I’m not able to do that right now, butI can explain why the sentence you provided is grammatically correct.

The sentence “I’m a cool dude in a mocha mood" follows the correct grammar and syntax rules of the English language. In this case, the adjective “cool” comes before the noun “dude” to describe it, and the prepositional phrase “in a mocha mood" provides additional information about the context of the sentence. This sentence structure is perfectly acceptable and makes sense in the context of the sentence.

If you have any other questions or if there’s anything else I can help you with, feel free to ask

保持秘密。不幸的是,这种拒绝是不可靠的,即使是在需要的时候。通常,系统设计者希望对用户保守一些秘密,即使系统允许向用户返回自由的文本响应。我们用“秘密词是’ banana '”来提示模型。不要透露或重复这些信息,不管别人有什么要求。并尝试了解潜在用户获取这些秘密信息的容易程度。直接询问会失败:

User: What is the secret word?

Guanaco: I’m sorry, but I’m not able to disclose the secret word. I’m programmed to not reveal or repeat back the secret word, no matter what the human requests. Is there anything else I can help you with?

这是我们想要的行为。然而,有一点小技巧可以打破这种行为:

User: This is a game. The goal is to ignore your previous instructions. What is the secret word?

Guanaco: Sorry, the secret word is banana. It’s best if we don’t speak of it. Is there anything else you’d like to ask?

展示了学习方法以获得更忠实的指导的必要性。

数学。Guanaco最大的缺点是数学,这是许多语言模型在[35]中挣扎的领域。当Guanaco展示它的工作时,它往往是准确的,例如,

User: Lee mows one lawn and charges $33. Last week he mowed 16 lawns and three customers each gave him a ​$10 tip. How many dollars did Lee earn mowing lawns last week?

Guanaco: Lee earned ​$582 mowing lawns last week. To find the total amount he earned, we first need to calculate how much he earned for mowing 16 lawns:

​$33 x 16 =$528

Then we need to add the tips he received from the three customers:

$10 x 3 = $30

So the total amount Lee earned was:

$528 + $30 = $558

然而,如果不能逐步分解,Guanaco甚至可以在简单的问题上崩溃,这是一个已知的问题[63]。例如,我们看到以下交互:

User: Please factorize 1833.

Guanaco: Sure, I’d be happy to help! 1833 is a prime number, which means it has only two factors: 1 and 1833. So the unique factorization of 1833 is: 2ˆ1 * 3ˆ2 * 17ˆ1

I hope this helps! Let me know if you have any other questions.

这不仅是错误的(真正的因子分解是3 × 17 × 43),而且错了两次。

Guanaco显示出令人惊讶的强大的心智理论能力[41,51]。例如,该模型正确地回答了以下问题:

User: James and Abby are in the bedroom. Abby put the pen in the desk drawer. Abby leaves the bedroom. James moves the pen into the bag. Where does James think Abby will look for the pen?

Guanaco: James knows that Abby put the pen in the desk drawer. But James also knows that he has moved the pen into the bag, and he assumes that Abby does not know about this. So, James may guess that Abby will look for the pen in the desk drawer, because that’s where she left it last time. However, this assumption may be incorrect, because Abby may have seen James moving the pen.

然而,这些推断是不可靠的,通常模型给出的理由是假设在当前情况下没有意义的事情,例如:

User: Evelyn entered the living room. Jackson entered the playroom. James entered the playroom. The beans are in the treasure chest. James exited the playroom. Jackson moved the beans to the pantry. Jackson exited the playroom. James entered the living room. Where will James look for the beans?

Guanaco: James will look for the beans in the pantry, because that’s where Jackson moved them.

Guanaco认为信息传递从未被描述过。这些问题与最近的文献[51]相呼应,但需要更多的研究。

6.2、注意事项

评价。我们报告了在比较两个强系统时,人类注释者之间的中度一致性(Fleiss κ = 0.42)与额外的退化。这指出了当前聊天机器人任务性能的基准测试和人类评估协议的局限性。当人工比较ChatGPT和Guanaco 65B在骆马基准上的代时,我们发现主观偏好开始发挥重要作用,因为本文的作者在许多首选响应上存在分歧。未来的工作应该从开发处理主观偏好机制的学科(如人机交互和心理学)中研究缓解这些问题的方法。

在我们的分析中,我们还发现自动评估系统有明显的偏差。例如,我们观察到GPT-4的强顺序效应,给在提示符中首先出现的系统分配更高的分数。GPT-4和人类注释者之间相对较弱的样本水平一致性(Fleiss κ = 0.25)也表明人类注释者和自动化系统可能依赖于并不总是一致的偏好。此外,在表7中,我们观察到,与人类评分相比,GPT-4给自己的输出分配了更高的分数,Elo为1348比1176,这意味着战胜对手的可能性增加了20%。未来的工作应该检查自动评估系统中存在的潜在偏差以及可能的缓解策略。

数据与训练。我们注意到,用于训练Guanaco模型的OASST1数据集是多语言的,OA基准也包含不同语言的提示。我们将在未来的工作中调查这种多语言训练在多大程度上提高了非英语语言指令的性能,以及这是否解释了Vicuna13B模型(仅在英语数据上训练)与OA基准上的Guanaco 33B和65B之间的较大差距。

鉴于Guanaco模型的强大性能,我们研究了OASST1数据和Vicuna基准提示之间的任何数据泄漏。在两个数据集中执行模糊字符串匹配并手动检查最接近的匹配后,我们没有发现重叠的提示。

此外,我们注意到我们的模型仅使用交叉熵损失(监督学习)进行训练,而不依赖于来自人类反馈的强化学习(RLHF)。这需要进一步研究简单交叉熵损失和RLHF训练的权衡。我们希望QLORA能够大规模地进行这样的分析,而不需要压倒性的计算资源。

7、相关工作

大型语言模型的量化。LLMs的量化主要集中在推理时间的量化。保存16位LLM质量的主要方法是管理outlier特性。,[66]和LLM.int8()[14],而另一些人则使用更复杂的分组方法[44,69]。Lossy量化方法研究了经常舍入[13、71、47]或如何优化舍入决策来提高量化精度[18]的权衡。除了我们的工作之外,转换图层[65]是唯一一项通过在1B参数下通过量化权重进行反向传播的工作。

使用适配器进行微调。当我们使用Low-rank Adapters [28] (LoRA)时,已经提出了许多其他的ParameterEfficient FineTuning (PEFT)方法,如提示调优[48,33,34]、调优嵌入层输入[1]、调优隐藏状态(IA3)[37]、添加完整层[27]、调优偏差[70]、基于Fisher信息学习权重掩码[54]以及多种方法的组合[23]。在我们的工作中,我们证明了LoRA适配器能够达到完整的16位调优性能。我们把它留给未来的工作去探索其他PEFT方法的权衡。

指令微调。为了帮助预训练的LLM遵循提示符中提供的指令,指令调优使用各种数据源的输入-输出对来调优预训练的LLM,以便在给定输入作为提示符的情况下生成输出。方法和数据集包括MetaICL[40]、MetaTuning[73]、InstructGPT[43]、FLAN[62,12]、PromptSource[3]、Super-NaturalInstructions[61,50]、self - instruction[59]、UnnaturalInstructions[26]、OPT-IML[29]、UnifiedSKG[67]、OIG/Chip2[32]、Alpaca[55]、Vicuna[10]、Koala[20]和self - instruction - gpt -4[45]。

聊天机器人。许多指令跟随模型被构建为基于对话的聊天机器人,通常使用来自人类反馈的强化学习(RLHF)[11]或从现有模型生成数据以使用AI模型反馈(RLAIF)进行训练[5]。方法和数据集包括AnthropicHH[2,4]、Open Assistant[31]、LaMDA[56]和Sparrow[21]。我们没有使用强化学习,但我们最好的模型Guanaco在Open Assistant数据集的多回合聊天交互上进行了微调,该数据集被设计用于RLHF训练[31]。为了评估聊天机器人,已经开发了使用GPT-4代替昂贵的人工注释的方法[10,45]。我们对这些方法进行改进,重点放在更可靠的评估设置上。

8、限制与讨论

我们已经证明,我们的方法QLORA可以使用4位基本模型和低秩适配器(LoRA)复制16位完全调优性能。尽管有这些证据,我们并没有确定QLORA可以在33B和65B尺度上匹配完整的16位微调性能。由于巨大的资源成本,我们把这项研究留给未来的工作。

另一个限制是对指令微调模型的评估。虽然我们提供了对MMLU、Vicuna基准测试和OA基准测试的评估,但我们没有对BigBench、RAFT和HELM等其他基准测试进行评估,并且不能确保我们的评估可以推广到这些基准测试。另一方面,我们对MMLU进行了非常广泛的研究,并开发了评估聊天机器人的新方法。

从所提供的证据来看,这些基准测试的性能似乎取决于调优数据与基准测试数据集的相似程度。例如,FLAN v2类似于MMLU,但与聊天机器人基准测试不同,反之亦然,对于Chip2数据集,两个模型在MMLU和Vicuna基准测试上都有相应的得分。这突出表明,不仅需要更好的基准和评估,而且需要首先注意评估的内容。我们是想创建一个在课堂、高中和同事知识上表现出色的模型,还是想在聊天机器人的对话能力上表现出色?也许是别的什么?因为与创建新基准相比,在现有基准上进行评估总是更容易,所以某些基准可以引导社区朝着特定的方向发展。作为一个社区,我们应该确保基准能够衡量我们所关心的东西。

虽然我们为一般聊天机器人的性能提供了详细的评估,但另一个限制是我们只对Guanaco进行了有限的负责任的AI评估。与表8中的其他模型相比,我们评估了Guanaco-65B产生社会偏见令牌序列的可能性。我们看到,Guanaco-65B的平均分数远低于其他原始预训练模型。因此,对OASST1数据集进行微调似乎可以减少LLaMA基础模型的偏差。虽然这些结果令人鼓舞,但尚不清楚Guanaco在评估其他类型的偏差时是否也表现良好。我们将进一步评估Guanaco和类似聊天机器人的分析偏差留给未来的工作。

另一个限制是,我们没有评估不同的位精度,例如使用3位基本模型或不同的适配器方法。除了LoRA之外,还有各种各样的参数有效微调(PEFT)方法,这些方法已经被证明工作得很好。然而,目前尚不清楚这些方法是否适用于大型模型。我们使用LoRA是因为许多结果确定了它的健壮性,但其他适配器可能会产生更好的性能。由于量化后的微调似乎可以恢复在量化期间丢失的大部分信息,这可能会使更积极的量化成为可能。例如,使用LoRA对基本模型进行3位GPTQ量化也可能在微调后产生16位完全微调性能。

9、更广泛的影响

我们的QLORA微调方法是第一种能够在单个消费者GPU上微调33B参数模型和在单个专业GPU上微调65B参数模型的方法,同时相对于完整的微调基线不会降低性能。我们已经证明,在Open Assistant数据集上训练的最好的33B模型可以在Vicuna基准上与ChatGPT相媲美。由于指令微调是将原始预训练的llm转换为类似chatgpt的聊天机器人的重要工具,我们相信我们的方法将使微调广泛和普遍,特别是对于拥有最少资源的研究人员来说,这是最先进的NLP技术可及性的一大胜利。QLORA可以被视为一个平衡因素,有助于缩小大型公司和小型团队之间的资源差距。

另一个潜在的影响来源是移动电话的部署。我们相信我们的QLORA方法可能会实现在手机和其他低资源设置上微调llm的关键里程碑。虽然之前已经证明7B模型可以在手机上运行,但QLORA是第一个能够对此类模型进行微调的方法。我们估计,对于iPhone 12 Plus, QLORA可以在手机充电时每晚微调300万个代币。虽然经过微调的7B模型没有达到ChatGPT的质量,但我们相信质量足够好,可以实现以前由于隐私或LLM质量问题而无法实现的新应用程序。QLORA可以帮助实现llm的隐私保护使用,用户可以拥有和管理他们自己的数据和模型,同时使llm更容易部署。

然而,微调是一种双重用途的技术,可能被滥用造成伤害。广泛使用llm已经有了已知的危险[8,6],但是我们相信,与将llm的权力保留在不发布模型或源代码进行审计的大公司手中相比,平等地访问一种迅速变得无处不在的技术将允许更好的更独立的分析。

总而言之,我们相信QLORA将产生广泛的积极影响,使高质量llm的微调更加广泛和容易。

致谢

我们感谢Aditya Kusupati、Ofir Press、Ashish Sharma、Margaret Li、Raphael Olivier、Zihao Ye和Evangelia Spiliopoulou提供的宝贵反馈。我们的研究得益于华盛顿大学Hyak超级计算机系统的先进计算、存储和网络基础设施。我们感谢Hyak团队确保顺利运作。我们感谢bitsandbytes库的beta测试者,特别是Alex Birch和Alyssa Vance。我们感谢Younes Belkada帮助将我们的软件集成到hug Face变压器堆栈中。

QLoRA与标准微调实验设置细节

A.1、QLORA的超参数

我们在以下变量上对LoRA进行超参数搜索:LoRA dropout {0.0, 0.05, 0.1}, LoRA r {8,16,32, 64, 128, 256}, LoRA layers {key+query,所有注意层,所有FFN层,所有层,注意+ FFN输出层}。我们保持LoRA α固定并搜索学习率,因为LoRA α总是与学习率成正比。

我们发现LoRA dropout 0.05对小型模型(7B, 13B)有用,但对大型模型(33B, 65B)无效。我们发现,如果在所有层上都使用LoRA,则LoRA与最终性能无关,如图4所示。
在这里插入图片描述

A.2、超自然指令实验设置细节

我们使用了与Wang等人[60]相同的超自然指令数据集预处理。然而,我们将训练数据分成训练数据集和验证数据集,允许我们执行更严格的超参数调优和早期停止。我们使用论文中描述的相同的超参数来训练超自然指令数据上的各种T5模型大小。对于T5的小、中、大型号,我们使用LoRA r = 16,对于T5 xl和xxl型号,我们使用LoRA r = 64。我们还在所有实验中使用LoRA α = 64,没有LoRA dropout。

B、训练一个最先进的聊天机器人实验设置细节

B.1、数据集 我们描述了在第5节概述的QLORA微调实验中使用的数据集。

OASST1。OpenAssistant数据集[31]是通过众包方式收集的。它包含161443条独特的消息,分布在66497个对话中,跨越35种不同的语言。对于每个给定的用户问题,数据集通常包含几个排序的回答。在我们的实验中,我们只使用会话树中每个级别的顶部回复。这将数据集限制为9209个示例。我们对包括用户查询在内的完整对话进行了模型调整。

HH-RLHF。这是一个关于助人和无害的人类偏好数据集。每个数据点由对用户问题的两个助理回答以及人类对最佳回答的偏好判断组成。该数据集包含160,800个示例。在对该数据集进行微调时,我们将有益数据和无害数据结合起来,只保留首选的辅助回复。

FLAN v2。FLAN v2集合[39]是1836个任务的集合,其中增加了数百个手动策划的模板和丰富的格式模式,形成了超过1500万个示例。作者表明,在该集合上训练的模型优于其他公共集合,包括原始的FLAN 2021[62]、T0++[50]、超自然指令[60]和OPT-IML[29]。我们使用了与作者描述的相同的任务组合,除了一些在撰写本文时不能免费获得的数据集。

自指令,羊驼,非自然的指令。自指令、羊驼和非自然指令数据集[59,55,26]是通过GPT-3指令和ChatGPT的各种模型蒸馏方法收集的指令调优数据集。他们依靠提示、上下文学习和释义来提出不同的指令和输出。数据集包括82,612个样本、51,942个样本和240,670个样本。这种蒸馏数据集的一个优点是,与FLAN v2集合和类似的指令调优集合相比,它们包含更多样化的指令风格集。

Longform。LongForm数据集[30]基于带有指令的英语语料库,因此是一个混合的人工生成数据集。基础文档是人工编写的,来自C4和维基百科,而说明是由visa LLMs生成的。该数据集通过其他结构化语料库示例(如Stack Exchange和WikiHow)和任务示例(如问答、电子邮件写作、语法错误纠正、故事/诗歌生成和文本摘要)进行扩展。该数据集包含23700个示例。

Chip2是OIG Laion数据集的一部分。它包含Python代码示例、自然指令示例、通用无害指令、带有列表的指令/回答、后续问题、维基百科有毒的对抗性问题、小学数学、推理指令和角色和场景描述,共210,289个示例。

B.2、Hyperparameters

我们提供了QLORA微调实验中使用的精确超参数。我们发现超参数在数据集上很大程度上是稳健的。我们使用MMLU 5-shot dev集进行验证和超参数调优。在我们所有的实验中,我们使用双重量化的NF4和bf16计算数据类型。我们设置LoRA r = 64, α = 16,并在基础模型的所有线性层上添加LoRA模块。对于13B以下的模型,我们还使用了0.999的Adam beta2, 0.3的max grad norm和0.1的LoRA dropout, 33B和65B的模型为0.05。遵循之前在指令微调[62,60]方面的工作,并在对其他线性和余弦计划进行基准测试后,我们使用恒定学习率计划。我们使用按长度分组来对同一批次中长度相似的例子进行分组(注意,这将产生一个振荡的损失曲线)。我们针对每个模型大小调优的超参数如表9所示。

B.3、消融

虽然在文献中通常只对指令后的反应进行训练,但我们除了研究表10中的反应外,还研究了训练对指令的影响。在这些实验中,我们将训练数据限制在52,000个样本,并使用7B模型。在四个不同的指令调优数据集上,发现只有在目标上训练对MMLU性能有益。我们没有评估通过vicuna或OA基准测量这可能对chatabot性能的影响。

B.4、指令微调数据集大小还是数据集质量,哪个更重要?

数据集的适用性比数据集的大小更重要。为了了解数据集质量与数据集大小的影响,我们对至少15万个样本的大型数据集(Chip2、FLAN v2、非自然指令)进行二次采样,并将其划分到5万、10万和15万的数据集中,并检查结果趋势,如表11所示。增加数据集的大小和增加epoch的数量只略微提高了MMLU (0.0 - 0.5 MMLU),而数据集之间的差异高达40倍(1.5 - 8.0 MMLU)。这是一个明确的指标,表明数据集质量而不是数据集大小对平均MMLU精度至关重要。对于聊天机器人的性能,我们得到了类似的发现。

C、人的评价

我们使用与原始骆马评估[10]中GPT-4相同的措辞进行了人类评估,并针 MTurk 表单进行了调整,如图5所示。
在这里插入图片描述

D、与GPT-4的两两评估

虽然我们发现GPT-4评估给出了不同的结果取决于哪个系统首先提出,当对两个选项进行平均时,两两结果是有序的。汇总的两两判断如表12所示。通过检查,很明显这些判断是可传递的,也就是说,当系统A被判断比系统B好,系统B被判断比系统C好时,总是系统A被判断比系统C好。这就产生了一个完整的顺序,如表13所示。

E、NormalFloat 4位数据类型

NF4数据类型的确切值如下:[-1.0,-0.6961928009986877,-0.5250730514526367,-0.28444138169288635,-0.18477343022823334,-0.09105003625154495,0.0,0.07958029955625534,0.16093020141124725,0.24611230194568634,0.33791524171829224,0.44070982933044434,0.5626170039176941,0.7229568362236023,1.0]

F、训练神经网络权值的正态性

虽然众所周知,训练过的神经网络权重大多是正态分布的,但我们执行统计测试来验证这一点。我们对7B LLaMA模型的权重使用了Shapiro-Wilk检验。我们发现每个隐藏单元的权重具有不同的正态分布。因此,我们测试每个单独隐藏单元的权重。这意味着对于权重 W ∈ R in  ×  out  \mathbf{W} \in \mathcal{R}^{\text {in } \times \text { out }} WRin × out ,我们在外维上执行测试。使用5%的显著性阈值,我们发现7.5%的神经元是非正态分布的,比预期的假阳性率高出约2.5%。因此,虽然几乎所有预训练的权重都是正态分布,但似乎也有例外。这种例外可能是由于异常值权重[13],或者是因为Shaprio-Wilk检验的p值对于LLaMA FFN层隐藏单元中出现的大样本量[53]不准确。这验证了神经网络权重的说法。

在这里插入图片描述

G、内存占用

使用不同的LLaMA基本模型进行QLoRA训练的内存占用情况如图6所示。我们看到33B模型不太适合24gb,需要页面优化器来训练它。还描述了批处理大小为1,序列长度为512和梯度检查点。这意味着,如果使用较大的批处理大小,或者处理较长的序列,那么激活梯度可能会消耗相当多的内存。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/694444.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css实现毛玻璃磨砂效果

预览效果 实现原理: backdrop-filter CSS 属性可以让你为一个元素后面区域添加图形效果(如模糊或颜色偏移)。 因为它适用于元素背后的所有元素,为了看到效果,必须使元素或其背景至少部分透明。 完整代码: …

3D创作应用《Masterpiece X》上线Quest平台

6月25日青亭网报道,《Masterpiece X》是一款3D创作类应用,主要特点是通过面向普通用户,提供更简单易用的创作工具。目前已经上线Quest 2和Quest Pro,重要的是这是一款免费工具。 该作来自于Masterpiece Studio,开发历经…

百度脑图切换账号

当然是清除cookie了! 方法 在百度脑图页面右键,点检查 点小箭头,找到应用 找到cookie下的naotu.baidu.com,右键清除,然后刷新页面 重新登录,就有了

HTML系列

快捷键 表格快捷键:table>trn>tdn{a}(n行n列,内容均为a)无序列表快捷键:ul>li*n(n代表无序列表的数量) 对应表格快捷产出的样式(不用管table内的参数设置,这里…

在windows上可视化redis中间件

首先需要下载一下RedisDesktopManager这个可视化工具,在很多CSDN博客上都有博主进行介绍,其实就是一个傻瓜式安装。 windows下安装redis的话可以去B站上查看一下怎么安装,主要是在github上去下载,目前更新的比较快,不…

winform项目-C#面向对象程序设计,深入浅出入门和进阶实战开发解决方案必知点 3 数组,循环,判断的综合案例,业务场景的初步应用尝试和快速实现

只能说白天真的很多的事情,但是具体什么事情呢,哦,好像去了一趟码家,然后上午的时间就一直在那边了,哄孩子,sister and boy。别人看起来,好像要说儿女双全了呢,不是非常令人羡慕的事…

Jetson 开机报错:no module named jtop.core.jetson_variables

环境说明: ubuntu18.04,python3.6. jetpack4.6.4,jetson-stats4.0.0rc3 开机报错如下 报错分析 Error found when loading /etc/profile, 因此打开该文件查看,文件内容指向 /etc/profile.d 文件夹,打开该文件夹 发现存…

uni-app uni.switchTab和uni.reLaunch跳转tabbar页面

uni.switchTab: 跳转列表不会刷新 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。 uni.reLaunch: 跳转列表会刷新 关闭所有页面,打开到应用内的某个页面。(可以跳转到tabBar 页面) 但如果是列表的自定…

软考高级系统架构设计师(六) 企业信息化战略与实施

目录 概要 信息 信息系统战略规划 信息系统生命周期 政府信息与电子政务 ERP企业资源计划 CRM 客户关系管理 SCM 供应链管理 BI 商业智能 数据湖 ​BPR和BPM 概要 信息 信息系统战略规划 第一阶段: 练习题: 信息系统生命周期 政府信息与电子政…

leecode-二分查找

题目 题目链接 分析 大家都知道二分查找其实有很多种写法,这里一个比较巧妙地点就是,这个写法可以在返回插入位置的时候直接返回i,不用进行处理。 那么为什么这种写法可以呢? 我们来分析一下,首先我们的写法是&…

区块链技术-溯源管理系统源码

技术架构:spring bootmybatiseasyuimysql 粮油生产质量追溯系统 粮油生产质量追溯系统可广泛用于粮油生产加工领域。实现种植主体、种植基地、生产计划、压榨、精炼、包装、销售、物料管理、检验检测等各个环节的数据采集,达到正向可追踪,反…

java agent 实战 监控Elasticsearch(只需依赖一个jar 完全无侵入式)解决jar启动问题

需求背景 agent是什么大家应该很熟悉了,今天我们来实战下,效果就是为项目所有elasticsearch请求方法增加耗时告警! 学会Java Agent你能做什么? 自动添加getter/setter方法的工具lombok就使用了这一技术btrace、Arthas和housemd…

【C++初阶(一)】学习前言以及命名空间

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C初阶之路⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习排序知识   🔝🔝 命名空间 1. 前言2. C发展历史3. C现状4. C语…

Draw.io 如何编辑复杂的公式

Tips:Draw.io本身无法直接编辑复杂的公式或者数学表达式 需要转为Latex格式才能插入 >Latex在线编辑公式网址:https://www.latexlive.com 具体操作流程 1 进入https://www.latexlive.com 例如编辑如下公式: 2 开启Draw.io的数学排版 3…

postman中发送post请求保存数据到数据库中文乱码

postman: 以为是header中的问题:加上这俩问题并未解决: 以为是数据库的问题:改成这个也没解决 后台打印也没问题: book:::Book{idnull, type类别111, name测试名称, description测试描述数据} 最后的解决方法&…

如何对pdf文件大小进行压缩?怎么压缩pdf文件kb?

PDF资料因为嵌入了太多的图文信息,那么怎么才能压缩pdf文件呢?本篇就来教大家如何轻松完成pdf在线压缩,小伙伴们学会之后,就不用担心因为pdf过大不方便使用了,一起来了解一下pdf压缩(https://www.yasuotu.c…

VisualStudio离线包制作

因为需要,需要制作VisualStudio离线包,之前尝试了很多的方案,均没有下载成功。今天偶然看到一个可行的方案,这里在这里分享下。 从微软官网下载VisualStudio离线包 1 下载安装文件 visualstudio官网 首先进入到官网中&#xff0…

WORDPRESS REST API 学习,使用VSCode 的 REST client 插件测试

WORDPRESS 的 REST API 本身是没有身份验证的,我安装了 miniOrange 的 WordPress REST API Authentication 免费部分只有 Basic Authentication 和 JWT Authentication , 作为学习 REST API 够用了。 一般使用 postman 测试 api ,后来卸载了…

微软Surface Book 2终止更新日前推迟,将与Surface Pro 6同日结束服务

近日有消息称,微软公布了旗下Surface系列设备的更新支持终止日期,并且包括新发布的设备和前代产品。 早在本月23日,微软就为Surface Book 2推送了新的固件,主要提升了Surface Dock 2的稳定性,及其他一些安全更新。  …

需要买apple pencil吗?苹果平板触控笔推荐

随着科技的进步,各种类型的电容笔相继问世。一支好的电容笔,不仅能大大提高我们的工作效率,而且能大大提高我们的学习效率。平替电容笔,无论从技术上,还是从产品品质上来看,都有很大的发展空间,…