五十、PaLM[2022] (粗读)

原始论文 《PaLM: Scaling Language Modeling with Pathways》 83 页,这里进行了精简。

  1. BERT/T5 等模型,尽管在数以千计的自然语言任务中达到了近乎 SOTA,但缺点是它们需要大量的 task-specific 训练实例来微调模型。此外,至少有一部分的模型参数必须被更新以适应任务,从而增加了模型微调和部署的复杂性。

    GPT-3 证明了极其大型的自回归语言模型可用于 few-shot prediction ,其中,只需要为模型提供一个关于任务的自然语言描述、以及(可选的)关于如何完成任务的少量示例。few-shot evaluation 已被证明可以达到非常强大的效果,而不需要大规模的 task-specific data collection 或模型参数更新。

    GPT-3 以来,其他一些大型自回归语言模型已经被开发出来,它们继续推动着技术的发展。这些 GPT-3 之后的模型中最强大的是GLaMGopherChinchillaMegatron-Turing NLGLaMDA。与 GPT-3 一样,这些模型都是 Transformer 架构的变种。这些模型的改进主要来自于以下一种或多种方法:在深度和宽度上扩大模型的规模、增加模型训练的tokens 的数量、在更多样化来源的更加干净的数据集上进行训练、通过 sparsely activated module 在不增加计算成本的情况下增加模型容量。

    在论文 《PaLM: Scaling Language Modeling with Pathways》 中,作者延续了语言模型的 scaling 路线,在高质量文本的 780B tokens 上训练了一个 540B 参数的、densely activated 的、自回归的 Transformer 模型,称作 Pathways Language Model: PaLM 。 这是通过 Pathways 实现的,这是一个新的机器学习系统,能够在成千上万的 accelerator chips 上高度便捷地训练非常大的神经网络。

    这项工作的主要收获如下:

    • efficient scaling:作者展示了 Pathways 的首次大规模使用,这是一个新的机器学习系统,能够以高度高效的方式在数千或数万个 accelerator chips 上训练单个模型。通过 Pathways ,作者在 6144TPU v4 芯片上训练了一个540B 参数的语言模型,其效率水平是以前这种规模的模型所不能达到的。

      以前的大多数大型语言模型要么是在单个 TPU 系统上训练的,要么是使用 pipeline 并行在 GPU 集群或多个 TPU v3 podscale (最大规模为 4096TPU v3 芯片)。

    • 来自 scaling 的持续的改善:作者在数百个自然语言、代码和数学推理任务中评估了 PaLM ,并在这些基准中的绝大多数上取得了 SOTA 结果,且有很大的提升。这有力地证明了大型语言模型的 scaling improvement 既没有趋于平稳也没有达到饱和点。

    • 突破性的能力:作者展示了在语言理解和生成方面的突破性能力,跨越了许多不同的任务。

    • 不连续的提升:为了更好地理解 scaling 行为,作者提出了三种不同参数规模的结果:8B/62B/540B 。通常情况下,从 62B 扩展到 540B 的结果与从 8B 扩展到 62B 的结果相似,这与神经网络扩展中经常观察到的 "power law" 规则一致。然而,对于某些任务,作者观察到不连续的改进,与从8B62Bscaling 相比,从 62B540Bscaling 导致了准确率的急剧上升。这表明,当模型达到足够大的规模时,大型语言模型的新能力就会涌现。

    • 多语言理解:以前关于大型语言模型的工作在多语言领域进行了有限的评估。在这项工作中,作者对包括机器翻译、摘要、问答在内的各种语言的多语言基准进行了更彻底的评估。

    • 偏见和毒性:作者还评估了模型在 distributional bias and toxicity 方面的表现,从而得出了一些洞察:

      • 首先,对于性别和职业偏见,作者发现 Winogender 共指任务的准确率随着模型规模的扩大而提高,PaLM 540B1-shot/few-shot setting 中创造了新的 SOTA 结果。

      • 其次,对种族/宗教/性别的 prompt continuation 进行的 co-occurence analysis 表明,该模型有可能错误地将穆斯林与恐怖主义、极端主义和暴力联系起来。这种行为在不同的模型规模上是一致的。

      • 最后,对 prompt continuation 任务的毒性分析表明,与 8B 模型相比,62B540B 模型的总体毒性水平略高。然而,model-generated continuation 的毒性与 prompting text 的毒性高度相关,而 human-generation continuation 则没有强烈的毒性相关性。这表明,与human-generated text 相比,模型受 prompt 风格的影响更为严重。

  2. 相关工作:在过去的几年里,通过大规模的语言建模,自然语言能力有了很大的进步。广义上,语言建模指的是预测序列中的 next token 、或预测序列中的 masked span 的方法。当应用于庞大的语料库时(包括从互联网、书籍和论坛上爬取的数据),这些自监督目标已经产生了具有高级语言理解能力和高级语言生成能力的模型。通过对数据量、参数量和计算量的 scaling ,模型质量的可预测的power-law 使得这种方法成为能力越来越强的模型的可靠方法。

    • Transformer 架构在现代 accelerators 上释放出了无与伦比的效率,并成为语言模型的事实方法。在短短的四年时间里,最大的模型在参数规模上和总计算量上都增加了几个数量级。

      • 最早成功的 scale 之一是 345M 参数的encoder-onlyBERT 模型,它极大地促进了包括 SuperGLUE 在内的分类任务的语言理解。

      • Generative Pretrained Transformer: GPT 系列是 decoder-only 模型,创造了 SOTA 的语言建模性能。

      • T5 随后预训练并微调了高达 11B 参数的 encoder-decoder 模型,为迁移学习设立了新的标准。

      • GPT 系列的最新模型,即 175B 参数的 GPT-3 模型从inference-onlyfew-shot 技术中发现了新的能力。

      GPT-3 之后,规模继续扩大,178B 参数的 Jurassic-1280B 参数的 Gopher 模型、530BMegatron-Turing NLG ,以及包括 Switch TransformersGLaM 在内的万亿参数 sparse model 相继出现就是证明。这些核心自然语言能力的进步也伴随着其他领域的改进,包括理解和生成代码。此外,对话应用已经通过 scale 取得了进展,最近的证据是 LaMDA,一个137Bdecoder-only 模型。最后,额外的工作使语言模型能够遵循指令从而提高了这些模型的实用性和可靠性。

    • 这些较大的模型不再能被有效地训练,甚至不能被放入单个 accelerator 的内存中。因此,出现了跨 accelerator 分割模型张量的技术(《Mesh-TensorFlow: Deep learning for supercomputers》),或者是跨 accelerator 分离模型层,然后在各阶段之间对 activation 进行流水线(《GPipe: E cient training of giant neural networks using pipeline parallelism》)。许多其他工作旨在提高模型的规模,同时限制通信开销。PaLM 通过 Pathways 基础设施使用数据并行和模型并行的混合。

    • 人们已经提出了一些架构变体,以帮助更有效地 scale 模型。一个领域是检索模型,其目的是通过 embedding 大量的文本来大幅减少模型的大小,模型随后可以访问。通过允许不同的样本使用不同的参数子集,像 Mixture-of-Experts 这样的稀疏模型允许 scaling 模型的规模。序列长度的稀疏性是一个允许以极长序列进行训练的领域。未来的工作可以将这些研究方向的改进结合到未来版本的 Pathways 语言模型中。

50.1 模型架构

  1. PaLM 使用标准的 decoder-only Transformer 架构,并且做了如下的修改:

    • SwiGLU 激活函数:我们使用 SwiGLU 激活函数(Swish(Wx)(Vx),其中 为逐元素乘法 )作为 MLP 的中间激活函数。因为与标准 ReLUGeLUSwish 激活函数相比,SwiGLU 已被证明可以显著提高质量(《GLU variants improve transformer》)。 请注意,这确实需要在 MLP 中进行三次矩阵乘法,而不是两次,但《GLU variants improve transformer》 证明了在 compute-equivalent 实验中质量的提高(即标准 ReLU 变体具有相应更大的尺寸)。

      Swishβ(x)=xσ(βx)

    • 并行层:我们在每个 Transformer block 内使用一种 ”并行“ 公式(《GPT-J-6B: A 6 Billion Parameter Autoregressive Language Model》),而不是标准的 ”串行“公式 。具体而言,标准的公式为:

      (1)y=x+MLP(LayerNorm(x+Attention(LayerNorm(x))))

      而并行公式为:

      (2)y=x+MLP(LayerNorm(x))+Attention(LayerNorm(x))

      由于 MLPAttention 的输入矩阵的乘法可以被 fused ,因此并行公式在 large scale 下的训练速度大约提高了 15% 。消融实验表明,在 8B 规模时有小的质量下降,但在 62B 规模时没有质量下降,因此我们推断,在 540B 规模时并行层对质量的影响应该是中性的。

    • Multi-Query Attention:标准的 Transformer 公式使用 kattention head,其中在每个 timestep 中,输入向量被线性投用到 query, key, value 张量,query/key/value 张量的形状都是 Rk×hhattention head size

      然而在这里,每个 headkey/value 投影是共享的,即 keyvalue 张量的形状为 R1×h ,而 query 张量的形状还是 Rk×h 。我们发现,这对模型质量和训练速度的影响是中性的(《Fast transformer decoding: One write-head is all you need》),但在自回归解码时却能节省大量成本。这是因为在自回归解码过程中,标准的 multi-headed attentionaccelerator 硬件上的效率很低,因为 key/value 张量在样本之间不共享,而且一次只解码一个 token

    • RoPE Embeddings:我们使用 RoPE embedding《Roformer: Enhanced transformer with rotary position embedding》) 而不是标准的 absolute/relative position embedding ,因为 RoPE embedding 已被证明在长序列中具有更好的性能。

    • Shared Input-Output Embeddings:我们共享 input embedding matrixoutput embedding matrix ,这是在过去的工作中经常做的(但不是普遍的)。

    • No Biases:在任何一个 dense kernellayer norm 中都没有使用偏置。我们发现这增加了大型模型的训练稳定性。

    • 词表:我们使用了具有 256k tokensSentencePiece 词表(vocabulary ),选择该词表是为了支持训练语料库中的大量语言,而不需要过度的 tokenization 。词表是由训练数据生成的,我们发现这提高了训练效率。词表是完全无损的和可逆的,这意味着词表中完全保留了空白符(对 code 数据来说特别重要),out-of-vocabularyUnicode 字符被分割成 UTF-8 字节,每个字节都有一个 vocabulary token 。数字总是被分割成单独的 digit token (例如:"123.5 -> 1 2 3 . 5")。

  2. model scale 的超参数:在这项工作中,我们比较了三种不同的模型规模:540B 参数、62B 参数、8B 参数。FLOPs per token 数量大约等于参数的数量,因为这些模型是标准的 dense Transformer 。这些模型是用下表中的超参数构建的。这三个模型使用相同的数据和词表进行了相同的训练(除了 batch size )。

  3. Model Card:参考论文的附录 E

50.2 训练数据集

  1. PaLM 预训练数据集由一个高质量的语料库组成,该语料库有 780B tokens ,包括了过滤的网页、书籍、维基百科、新闻文章、源代码、社交媒体对话等数据。 这个数据集是基于用于训练 LaMDAGLaM 的数据集。我们在恰好一个 epoch 的数据上训练所有三个模型(对所有模型的shuffle 相同),并选择混合比例以避免在任何子数据集重复数据。

    代码数据是从 GitHub 上的开源 repositories 中获得。我们通过 license 来过滤文件。此外我们根据文件名过滤文件,从而限制在 24 种常见的编程语言之一,包括 Java, HTML, Javascript, Python, PHP, C#, XML, C++, C 。最终得到 196 GB 的源代码数据。此外,我们根据文件之间的 Levenshtein 距离去除重复的文件,因为已知重复的文件在源代码库中很常见。

    下表列出了用于创建最终的 PaLM 数据集 mixture 的各种数据源的比例。我们在后面内容中检查了数据污染,并提出了我们的训练数据集和评估数据之间的overlap 分析。附录 D 包含一个数据表,其中有更多信息,包括语言比例的细分。

    这里的数据集没有开源。

50.3 训练的基础设施

  1. 我们的训练代码库和评估代码库基于 JAXT5X ,所有模型都在 TPU v4 Pods 上训练。PaLM 540B 在两个通过数据中心网络(data center network: DCN )连接的 TPU v4 Pod 上训练,使用模型并行和数据并行的组合。每个 TPU v4 Pod 使用 3072TPU v4 chips,连接到 768 台主机。这个系统是迄今为止描述的最大的 TPU 配置,使我们能够有效地将训练规模扩大到 6144 个芯片,而不需要使用任何流水线并行。相比之下:

    • LaMDA, GLaM 分别在单个 TPU 系统上进行训练,没有利用流水线并行或数据中心网络。

    • Megatron-Turing NLG 530B 是在 2240A100 GPU 上使用模型并行、数据并行、以及流水线并行的组合进行训练的。

    • Gopher 是在四个 DCN 连接的 TPU v3 Pod (每个Pod1024TPU v3 芯片)上使用 pod 之间的 pipelining 进行训练。

  2. pipelining 通常用于 DCN,因为它对带宽的要求较低,并且在模型并行和数据并行所允许的最大有效规模之外提供额外的并行性。pipelining 通常将 training batch 分成若干个 micro-batches ,但它有重要的缺点:

    • 首先,它产生了 pipelining "bubble" 的时间开销,即在前向传播和反向传播的开始和结束时,许多设备在填充和清空流水线时完全闲置。

    • 其次,它需要更高的内存带宽,因为要从内存中为 mini-batch 中的每个 micro-batch 重新加载权重。在某些情况下,它还涉及增加软件的复杂性。

  3. 我们能够使用以下策略将 PaLM 540Bpipeline-free training 有效地扩展到 6144 个芯片:

    • 每个 TPU v4 Pod 包含一个完整的模型参数副本,每个权重张量使用 12 路模型并行、以及 256 路完全分片的数据并行在 3072 个芯片上被 partitioned《Gspmd: general and scalable parallelization for ml computation graphs》 称之为 "2D finalized" 方法)。

    • 在前向传播过程中,权重在数据并行轴上被 all-gathered ,并从每层保存一个完全分片的 activation 张量。

    • 在反向传播过程中,其余的 activationsrematerialized ,因为与重新计算相比,在更大的 batch size 下,这将带来更高的训练吞吐量。

  4. 下图展示了 Pathways 系统如何执行双向的 pod-level 数据并行。

    • 一个 Python 客户端构建了一个 sharded dataflow 程序(如下图左侧所示),该程序在远程服务器上启动 JAX/XLA work ,每个服务器由一个 TPU pod 组成。该程序包含一个用于within-podforward+backward computation (包括 within-pod gradient reduction )的组件 A 、用于 cross-pod gradient transfertransfer subgraph 、以及用于 optimizer update (包括本地梯度和远程梯度的求和)的组件 B

    • Pathways 程序在每个 pod 上执行组件A ,然后将输出梯度转移到另一个 pod ,最后在每个 pod 上执行组件 B

    双路 pod-level 数据并行的一个挑战是:如何在 6144TPU v4 芯片(连接到 1536 个主机)的规模上,实现 cross-pod gradient transfer 的高训练吞吐量。注意:cross-pod gradient transfer 只需要在两个 pod 的相应主机之间进行 1:1 的传输,因为每个 core 只需要远程梯度,用于获得它的 model-sharded parameters 。由于在每个 core 完成梯度计算后才开始传输,这导致了一个非常突发的工作负载,所有主机在同一时间通过 data-center-network links 传输他们的梯度。具体而言,每对主机在每个 training step 中交换大约 1.3GB 的梯度,相当于所有主机的总爆发量为 81Tbps

    我们通过对 Pathwaysnetworking stack 的精心设计,相对于单个 pod 的吞吐量,我们实现了约 1.95 倍的训练吞吐量(理论吞吐量为 2 倍,因为有两个 pod)。与理论上 2 倍的吞吐量相比,性能上的差距是由于反向传播和 cross-pod gradient reduction 之间缺乏 overlap

  5. 训练效率:之前报道的大多数用于语言模型的 accelerator 效率的数字都使用了一个我们称之为 hardware FLOPs utilization: HFU 的指标。这通常是对一个给定设备上观察到的 FLOPs 与其理论峰值 FLOPs 的比值的估计。然而, HFU 有几个问题:

    • 首先,硬件 FLOPs 的执行数量与系统和实现有关,编译器中的设计选择可能导致不同的 operations 数量。 rematerialization 是一种广泛使用的技术,用来trade off 内存用量和计算量。为了有效地计算神经网络架构的反向传播,必须将该 batch 的许多 intermediate activations 存储在内存中。如果这些 intermediate activations 无法被全部存储,一些前向传播可以被重新计算(使一些 activationsrematerialized 而不是被存储)。这就产生了一个权衡,使用额外的硬件 FLOPs 可以节省内存,但是训练系统的最终目标是实现 tokens per second 的高吞吐量(因此训练的时间要快),而不是使用尽可能多的硬件 FLOPs

    • 其次,测量观察到的硬件 FLOPs 取决于用于计数或跟踪它们的方法。观察到的硬件 FLOPs 已经根据分析核算(《Efficient large-scale language model training on gpu clusters using megatron-lm》)以及使用硬件性能计数器(《Gspmd: general and scalable parallelization for ml computation graphs》)进行了报告。

    鉴于这些问题,我们认识到 HFU 不是一个一致的、有意义的衡量LLM 训练效率的指标。我们提出了一个新的指标,即 model FLOPs utilization: MFU ,该指标与实现无关,并允许对系统效率进行更清晰的比较。这是观察到的吞吐量(tokens-per-second )相对于在 FLOPs 峰值下运行的系统的理论最大吞吐量的比率。至关重要的是,理论上的最大吞吐量只考虑了计算前向传播+反向传播所需的 operations ,而不是 rematerialization 。因此,MFU 允许在不同系统上的训练运行之间进行公平的比较,因为分子只是观察到的 tokens-per-second ,而分母只取决于模型结构和给定系统的最大 FLOPs 。我们在附录 B 中阐述了计算 MFU 的数学公式。

    我们在下表中介绍了 PaLM 540BMFU

50.4 训练配置

  1. 模型训练遵从针对大型 Transformer 语言模型的标准配置,细节如下:

    • weight initializationkernel weights (除了 embeddinglayer norm scale 之外的所有参数)通过 fan-in variance scaling 来初始化,即:

      (3)WN(0,1nin)

      其中:ninkernelinput 维度。

      input embedding 通过标准正态分布来初始化:EN(0,1) ,因为 layer normalization 并未应用到 embedding 上。因为 input embedding layeroutput embedding layer 是共享的,因此我们将 pre-softmax output logits 缩放了 1n ,其中 nembedding size

    • optimizer:模型采用 Adafactor optimizer 来训练,没有 factorization。这本质上等同于 parameter scalingAdam , 即,通过参数矩阵的平方根值对学习率进行缩放。因为 weight initialization1/n 成正比,这样做的效果类似于 GPT-3Adam 学习率的手动缩放。然而,parameter scaling 的好处是,在不同 scale 上操作的参数矩阵( embedding scalelayer norm scale )的学习率不会以相同的速度缩放。

    • optimization 超参数:对于 Adafactor

      • 刚开始 10kstep 的学习率为 102,然后以 1k 的速度衰减,其中 kstep 数量。

      • 一阶动量系数为 β1=0.9 。二阶动量系数为 β2=1.0k8 。在训练大型语言模型中,我们发现这种 β2 要比 β2=0.99 更稳定,因为在较短的窗口内,rare embedding tokens 可能有较差的 estimated second moment

      • 阈值为 1.0 的全局梯度范数裁剪。

      • 动态的 weight decay ,系数为 lr2.0,其中 lr 为当前的学习率。

    • 损失函数 :模型用标准的 language modeling loss function 来训练的,它是所有 token 的平均对数概率,没有标签平滑。此外还有一个辅助损失 zloss=104×log2Z 从而鼓励 softmax normalizer log(Z) 趋向于零,我们发现这增加了训练的稳定性。

    • 序列长度:所有模型都使用了 2048 的序列长度。输入样本被拼接在一起,然后分割成正好是 2048 tokens 的序列,因此没有padding tokens ,但样本可以在中间被分割。输入样本用一个特殊的 [eod] token 来区分开。

    • batch size:对于所有的模型,我们在训练过程中增加 batch size

      对于最大的模型,我们使用 batch size = 5121M tokens per batch )直到 step 50k,然后加倍到 batch size = 10242M tokens per batch )直到 step 115k ,最后再加倍到 batch size = 20484M tokens per batch ),直到训练完成(最终 step 255k )。较小的模型也遵循类似的 schedule

      使用这种 batch size schedule 的原因有两个方面:

      • 较小的 batch size 在训练的早期更加 sample efficient (在给定 tokens seen 的条件下具有更好的 loss ),而较大的 batch size 由于更好的梯度估计在训练后期是有益的(《Don't decay the learning rate, increase the batch size》《An empirical model of large-batch training》)。

      • 较大的 batch size 导致更大的矩阵乘法维数,这增加了 TPU 的效率。

    • bitwise determinism :该模型从任何 checkpoint 都是完全可 reproducible 的。换句话说,如果模型在一次运行中已经训练到 17k 步,而我们从 15k checkpoint 重新开始,那么训练框架保证在从 15k checkpoint17k 的两次运行中产生相同的结果。这通过两种方式实现:

      • JAX+XLA+T5X 提供的 bitwise-deterministic 建模框架。

      • deterministic dataset pipeline ,其中随机混洗数据以 random-access format 写出,因此给定的 training batch 的内容仅是step 数量的函数。

    • dropout:模型训练期间没有采用 dropout,然而在微调期间在大多数情况下使用了 dropout rate = 0.1

  2. 训练不稳定:对于最大的模型,尽管启用了梯度剪裁,我们在训练过程中还是观察到了大约 20loss 尖峰。这些尖峰发生在非常不规则的时间间隔内,有时发生在训练的后期,而在训练较小的模型时没有观察到。

    对于最大的模型,由于训练成本的缘故,我们无法确定一个原则性的策略来缓解这些尖峰。相反,我们发现一个简单的策略可以有效地缓解这个问题:我们从尖峰开始前大约 100 步的 checkpoint 重新开始训练,并跳过大约 200 ~ 500data batch ,这些 data batch 涵盖了尖峰之前和尖峰期间的 data batch。通过这种缓解措施,loss 没有在相同的 step 再次飙升。

    我们不认为尖峰是由不良数据本身造成的,因为我们做了几个消融实验,在这些实验中,我们抽取了尖峰周围的 data batch ,然后从一个较早的 checkpoint 开始对这些相同的 data batch 进行训练。在这些情况下,我们没有看到一个尖峰。这意味着尖峰的出现只是由于特定的 data batch 与特定的模型参数状态的结合。在未来,我们计划研究在非常大的语言模型中对 loss 峰值的更有原则的缓解策略。

50.5 评估

50.5.1 英语 NLP 任务

  1. 为了和之前的大型语言模型进行比较,我们在相同的 29 个英文 benchmark 上评估了 PaLM 模型。这些 benchmark 包括:

    • Open-Domain Closed-Book Question Answering tasksTriviaQA, Natural Questions, Web Questions

    • Cloze and Completion tasksLAMBADA, HellaSwag, StoryCloze

    • Winograd-style tasksWinograd, WinoGrande

    • Common Sense ReasoningPIQA, ARC, OpenBookQA

    • In-context Reading ComprehensionDROP, CoQA, QuAC, SQuADv2, RACE

    • SuperGLUE

    • Natural Language Inference (NLI)Adversarial NLI

    Table 4 包括 PaLM 540B 的结果和其他大型语言模型的 SOTA 结果。在这个表中,我们只考虑 pretrained language model 的单个 checkpoint 结果。任何使用微调或多任务适应的模型都不包括在该表中。可以看到:

    • PaLM 540B1-shot setting29 项任务中的 24 项,以及在 few-shot setting29 项任务中的 28 项,都优于之前的 SOTA

    • 虽然模型的大小对取得这些结果起到了重要的作用,但 PaLM 540B 在所有基准上都超过了类似大小的模型(Megatron-Turing NLG 530B)。这表明预训练数据集、训练策略、以及 training tokens 数量也对取得这些结果起到了重要作用。

    Table 5 列出了自然语言理解(Natural Language Understanding: NLU )和自然语言生成(Natural Language Generation: NLG)任务的平均分数。PaLM 540B 在这两类任务中的平均得分都提高了 5 分以上。如表中所示,PaLM 模型在每个类别中的平均得分也随着规模的扩大而提高。

  2. 微调:我们在 SuperGLUE benchmark 中对 PaLM 进行了微调,Adafactor optimizer 的微调学习率为 5×105batch size = 32PaLM 通常在少于 15K 步的微调过程中收敛。

    Table 6 报告了在 SuperGLUE 上的验证集结果,结果表明PaLM 获得了接近 SOTA 的有竞争力的性能。值得注意的是,SuperGLUE 上表现最好的两个模型都是使用 span corruption objective 训练的 encoder-decoder 模型。已有研究表明,当训练成本相同时,这样的架构通常会在分类任务微调方面优于仅有自回归的 decoder-only 模型。这些结果表明,规模可以帮助缩小差距。

    Table 7 还表明,在 few-shot 和微调的结果之间仍有很大的差距。

    最后,Table 8 报告了 SuperGLUE 排行榜的测试集的结果。我们表明,PaLMSOTA 模型相比是有竞争力的,同时比排行榜上最好的decoder-only 自回归语言模型的表现要好得多。

50.5.2 BIG-bench

  1. BIG-bench 是一个 collaborative benchmark ,旨在为大型语言模型制作具有挑战性的任务。它包括 150 多个任务,涵盖了各种语言建模任务,包括逻辑推理、翻译、问答、数学和其他。这里我们介绍并分析了 PaLM 模型系列在 BIG-bench 上的 few-shot 评估结果。BIG-bench 包括文本性的任务(textual task )和程序性的任务(programmatic task )。在这次评估中,只考虑了文本性的任务。BIG-bench 中,最佳人类表现是用每个样本中指标得分最高的人类生成的答案来计算的,而平均人类表现是用所有人类生成的答案的平均指标得分来计算的。

  2. 下图左侧为在 BIG-bench上评估 PaLM 系列模型的结果,并与之前公布的结果进行了比较。由于 Gopher, Chinchilla, GPT-3 都评估了的任务只有 58 个,因此这里仅介绍了这 58 个任务的结果。下图右侧显示了 PaLMBIG-bench 文本性任务( 150 个任务)上的结果。PaLM 明显优于GPT-3GopherChinchilla ,而且 5-shot PaLM 540B 取得了比人类平均分更高的分数。

  3. 下图给出了这 58 个任务的详细结果。PaLM 540B 5-shot58 个常见任务中的 44 个任务上的表现优于之前的 SOTA

  4. 接下来我们详细描述一些任务,在这些任务中,PaLM 具有特别有趣的性能特征,如下图所示。

    • goal step wikihow:目标是推理事件之间的 goal-step 关系。

      例子:为了 "清洗银器",应该先做哪个步骤?(a) 擦干银器;(b) 手洗银器。答案:(b)

    • logical args:目标是根据一段话预测正确的逻辑推理。

      例子: 输入:学生们告诉代课老师他们正在学习三角几何。代课老师告诉他们,与其教他们关于三角几何的无用事实,不如教他们如何处理概率问题。他在暗示什么? (a) 他认为数学不需要有用也可以有趣;(b) 他认为理解概率比三角几何更有用;(c) 他认为概率论是一个无用的学科。答案:(b)

    • english proverbs:目标是猜测哪个谚语最能描述一段文字。

      例子:凡妮莎多年来一直在当地的无家可归者援助中心利用周末时间帮忙。最近,当她失去工作时,该中心准备马上给她一份新工作。以下哪句谚语最适用于这种情况?(a) Curses, like chickens, come home to roost(b) Where there is smoke there is fire(c) As you sow, so you shall reap 。答案:(c)

    • logical sequence:目标是将一组 "东西"(月份、行动、数字、字母等)按其逻辑顺序排列。

      例子:输入: 以下哪个列表的时间顺序是正确的?(a) 喝水,感到口渴,关闭水瓶,打开水瓶; (b) 感到口渴,打开水瓶,喝水,关闭水瓶; (c) 关闭水瓶,打开水瓶,喝水,感到口渴 。答案:(b)

    • navigate:目标是遵循一组简单的导航指令,并找出你最终会到达的地方。

      例子: 输入: 如果你按照这些指令,你是否会回到起点?始终面向前方;向左走6 步;向前走 7 步;向左走8 步;向左走 7步;向前走6步;向前走1步;向前走4 步。答案:否。

    • mathematical induction:目标是进行逻辑推理数学归纳法规则,即使它们与现实世界的数学相矛盾。

      例子: 输入: 众所周知,在任何奇数上加 2 会产生另一个奇数。2 是一个奇数整数。因此,6 是一个奇数。这是不是一个正确的归纳论证(尽管有些假设可能不正确)?答案:是。

  5. 在下图,我们显示了在比较 PaLM 540B 和人类评价的平均性能得分时,得到改进的任务的分布。我们可以看到,尽管 PaLM 540B 在总体上超过了人类的平均表现,但在 35% 的单个任务上,人类的平均表现仍然高于 PaLM 540B

  6. 最后,下图展示了对 BIG-bench Lite 的详细评估结果,这是 24BIG-bench 任务的一个精心策划的子集,作为一个轻量级的评估目标。与人类评估的最佳性能得分相比,虽然有些 BIG-bench Lite 任务已经解决或接近解决,但其他任务仍远未解决。

  7. 我们采取了几个步骤来确定这些结果的有效性,特别是排除了模型通过记忆 BIG-bench 数据来实现这些结果的可能性。

    • 首先,BIG-bench 任务文件包括一个独特的 canary string ;我们确保这个字符串不会出现在 PaLM 训练数据中。

    • 其次,在收集训练数据时,互联网上没有 BIG-bench 数据集,而且绝大多数 BIG-bench 任务是由任务作者专门为纳入 BIG-bench 而构建的全新 benchmark

    • 最后,我们抽查了模型在几个任务中的输入和输出,在这些任务中,模型表现出很强的性能,并手工验证了在解码过程中没有从gold labels 中泄露信息。

50.5.3 Reasoning

  1. 我们在一组推理任务上评估了 PaLM ,这些任务需要多步骤的算术的或常识的逻辑推理来产生正确答案。

    • 算术推理(arithmetic reasoning):这些任务往往涉及小学水平的自然语言数学问题,需要多步骤的逻辑推理。数学本身通常是简单的,困难的部分是将自然语言转化为数学方程式。在这项工作中,我们评估了计算器形式和直接推理形式。

      例如:输入:罗杰有 5 个网球,他又买了两罐网球,其中每罐有 3 个网球。他现在有多少个网球?答案是:11

    • 常识推理(commonsense reasoning ):这些任务是问答任务,需要很强的世界知识(world knowledge )。

      例如:输入:肖恩急着回家,但红灯变黄了,他被迫做什么?答案选项:(a)花时间;(b) 闲逛;(c) 慢慢走;(d) 海洋;(e) 减速。答案: (e)

  2. 我们使用 chain-of-thought: COT 来改善模型的输出。下图给出了 chain-of-thought prompting 的例子。

  3. 在这项工作中,我们展示了一个引人注目的结果:模型规模和 COT prompting 足以在各种算术推理和常识性推理任务中达到 SOTA 的准确性。在 7 个推理数据集中,PaLM 540B + COT8-shot prediction 在四个任务中达到了 SOTA 的准确率,在其它三个任务重接近 SOTA 。我们还可以看到,COT 和模型 scaling 对所有的任务都有很大的帮助,因为如果没有这两种技术,PaLM 只能在一个任务(SVAMP )上取得 SOTA

  4. 我们分析了 PaLM 62B 模型在 GSM8K 数据集上出错的问题,发现它们通常属于以下几类:语义理解、单步缺失、以及其他错误。如下图所示,扩大到 540B 模型的规模后,这些错误的数量就多了起来。

50.5.4 Code 任务

  1. 在这一节中,我们表明 PaLM 模型在各种 coding 任务上取得了出色的成绩:

    • text-to-code:我们考虑了三个任务,其目标是根据自然语言描述来编写代码。

      • HumanEvalMBPP 数据集中,模型被馈入一个英语描述(由一些句子和少量的 input-output 示例组成),目标是生成一个简短的 Python 程序(通常是单个函数)。

      • 我们还介绍了 GSM8K-Python 任务,它来自 GSM8K 数据集。GSM8K 数据集由 mathematics word 问题组成。GSM8K-Python 是这个任务的一个变种,其目标不是产生正确的答案,而是产生一个能返回正确答案的 Python 程序。

    • code-to-code

      • TransCoder 是一项涉及将 C++ 程序翻译成 Python 的任务。我们从 GitHub 上下载了TransCoder 的数据,并收集了同时出现在数据集的PythonC++ 子目录下的函数。

      • 我们还对 DeepFix 的代码修复任务进行评估。从学生编写的无法编译的 C 语言程序开始,目标是修改程序,使其能够成功编译。

    我们使用 pass@k 指标报告结果:对于测试集中的每个问题,从模型中抽取 k 个源代码样本,如果有任何样本解决了问题,则算作解决了。我们将 PaLM 模型与几种用于代码的不同的语言模型进行比较:LaMDA 137BCodex 12B 。为了获得 Codex 在除了 HumanEval 之外的其它数据集上的结果,我们调用了 OpenAI Davinci Codex API 。不幸的是,关于 Davinci Codex 模型,有许多事情是不公开的:我们不知道这个模型的规模、它是单个模型还是一个 ensemble 、它的训练数据有多少、对模型的输出做了什么(如果有的话)后处理,以及 Davinci Codex 训练数据与我们评估数据集的污染程度如何。

  2. 数据集:PaLM 模型的训练集包括 GitHub 代码。由于我们的评估数据集大多是测试 Python 编程技能的,所以我们额外收集了一个专门的 Python 代码数据集。这个额外的数据集,我们称之为 ExtraPythonData ,包含了来自 GitHub repository5.8B tokens ,这些 tokens 在预训练中没有使用。

    Table 10 总结了所使用的 code training data 的数量:PaLM 540B 行显示了用于预训练的 tokens 数量,而 PaLM-Coder 540B 显示了预训练和微调数据的 token 总数。

    Table 27 显示了数据中编程语言的分布。最常见的语言是 Java, HTML, Javascript, Python, C, PHP, C#, C++

  3. PaLM 540B:下表显示了 PaLM 模型在 0-shot prompts4-shot prompts 下的性能。

    • 首先,LaMDA 模型在所有的任务中都有非零的表现,尽管它没有在 GitHub 代码上进行训练。这表明 LaMDA 训练中使用的 code web documents 对这些任务来说是有参考价值的。

    • 其次,PaLM 模型在所有任务中的表现都比LaMDA好,而且在HumanEval上的表现与Codex 12B 相当。

  4. PaLM-Coder:现在我们评估进一步微调对 coding 任务的影响,类似于 Codex 的做法,微调得到的模型称作 PaLM-Coder

    微调是两阶段的:

    • 首先,对 mixture 数据进行微调,其中 60% 来自 ExtraPythonDatapython 代码、30% 来自跨语言的代码(与预训练的代码数据来源相同,但不包括在预训练中)、以及 10% 的自然语言。

    • 然后 ,对 ExtraPythonData 中更多的 Python 代码进行了额外的 1.9B tokens 的微调。

    在这两个阶段中,微调数据包含 7.75B tokens ,其中 5.9BPython 。而预训练加微调的总数据量,参考 Table 10PaLM-Coder 540B 的性能进一步提高,参考 Table 11

    下图显示了从 8B62B 以及最后到 540B 模型的性能扩展。在所有的数据集中,规模的每一次增加都会带来性能的提高,而且规模对性能的影响似乎并没有达到饱和。

  5. DeepFix Code Repair:图 1314 显示了DeepFix 问题的例子和 PaLM-Coder 的成功预测。

    对于 code repair,评估模型所改变的代码的数量是很重要的。通常我们只想修改一小部分的 broken code 。不同模型所改变的代码的数量如下表所示。与 Codex 相比,PaLM-Coder 倾向于改变分布在更多行中的更少的字符。我们在预测中观察到这种行为,其中 PaLM-CoderCodex 更有可能做出微小的风格上的改变,例如将 i = i + 1 改为 i++ ,将 int a;\n int b; 改为 int a, b; ,而 Codex 更有可能大幅度改变行。

  6. 讨论:当在软件开发中部署基于LM 的系统时,一个关键的风险是生成的代码可能是不正确的,或者引入微妙的 bug 。 鉴于对代码补全系统的数据集中毒攻击的发现,以及观察到当 prompts 中存在错误代码时,LM 更有可能产生错误代码,这是一个特别紧迫的问题。

    功能正确性只是源代码质量的一个方面;LM 产生的建议还必须是可读的、鲁棒的、快速的和安全的。DeepFix 说明了 PaLM-Coder 目前预测的一个问题:在 Figure 13Figure 14 中,程序可以编译,但不一定安全,因为它们依赖于对输入的格式和大小的假设。DeepFix 的数据集来自于学生写的 C 语言编程课程的练习,学生被允许做这样的假设。这样的建议在一个更普遍的环境中可能是不可取的。

50.5.5 翻译

  1. 与其他大型翻译工具一样,PaLM 没有明确地在平行语料上进行训练,尽管在我们的训练语料库中可能会自然存在一些这样的数据。我们专注于 WMT 提供的训练集和验证集,特别是以下三种类型的 language pair

    • 以英语为中心的的 language pair,涉及以英语为 source languagetarget language ,并有一些不同程度的平行数据可用。根据 language pair中的 non-English 语言,翻译任务可能是高资源(>10M 的样本)、中等资源(<10M,>1M 的样本)或低资源(<1M 的样本)。这里我们使用 WMT'14 English-French (high), WMT'16 English-German (mid), WMT'16 English-Romanian (low)

    • 直接的 language pair,即直接在任何一对语言之间进行翻译,而不涉及英语。在机器翻译中,即使英语不是 source languagetarget language ,也可以参与翻译,因为机器翻译系统经常通过英语进行"pivot" ,例如,French -> English -> German。我们将使用 WMT'19 French-German language pair 来测试直接翻译能力。

    • 极低资源的 language pair,在这项工作中,我们选择哈萨克语作为我们的低资源语言。作为比较,虽然法语和德语在我们的训练集中分别有大约 24B tokens26B tokens ,但哈萨克语只有大约 134M tokens 。对于评估,我们将使用 WMT'19 English-Kazakh

  2. 以英语为中心的的 language pair 的评估:PaLM 优于所有的基线。

  3. 直接的 language pair 和极低资源的 language pair 的评估:

  4. 我们将我们的结果提炼为以下一组观察:

    • 在从某种语言翻译成英语的时候,翻译质量比从英语翻译成某种语言的时候要好。这是在所有以英语为中心的语言模型中观察到的一个共同模式,在检查 PaLM 的性能时也出现了类似的情况。我们怀疑优先考虑多语言数据会减轻这种情况。

    • prompts 可以提供比单个示例更多的价值。我们发现,在大多数情况下,使用语言名称来诱导翻译(0-shot setting )比只使用 input-output 示例(one-shot/few-shot setting )提供更强的性能,与以前的工作一致(《Association for Computing Machinery》)。

    • 仅仅依靠自监督的通用模型可以在较小的范围内与专用模型相匹配。我们考虑的大多数专用翻译baseline 都在1B 参数以下,这比我们最大的 PaLM 构架要小两个数量级。另一方面,我们也看到,大型翻译模型可以适应各种下游任务,这表明专家也可以作为通才。这就提出了一个问题:在资源丰富的情况下(如多语言翻译),我们应该培训专家还是通才?

50.5.6 Multilingual 自然语言生成

  1. 自然语言生成以给定文本或非语言信息(如文档、表格、或其他结构化数据)的条件下,自动生成可理解的文本。对于类似规模的模型,过去还没有探索过 few-shot 的条件自然语言生成。通常情况下,generation evaluation 仅限于生成式的问答和 multiple-choice 的语言模型任务,这些任务不需要生成完整的句子或段落。因此,我们的工作提出了第一个大型语言模型的基准,从而用于条件自然语言生成任务的 few shot 建模。

  2. 数据:我们在来自 Generation Evaluation and Metrics benchmark 的三个摘要任务、以及三个 data-to-text generation 任务上评估了 PaLM。这些数据集包括 Czech (cz), English (en), German (de), Russian (ru), Spanish (es), Turkish (tr), Vietnamese (vi) 等语言。

    • MLSum:用多个句子总结一篇新闻文章([de/es] )。

    • WikiLingua:用非常简洁的句子总结 WikiHowstep-by-step 指令([en/es/ru/tr/vi -> en]])。

    • XSum:用一句话总结一篇新闻文章([en] )。

    • Clean E2E NLG:给定一组键值属性对,用一两句话描述一家餐厅([en] )。

    • Czech Restaurant response generation:给定一个对话上下文、以及对话行为representation ,生成智能助理将提供的响应([cz])。

    • WebNLG 2020:在一个或多个句子中以语法的和自然的方式口语化 ”主语-谓语-宾语“ 三要素( [en/ru] )。

  3. Few-shot 评估方法:为了将 PaLM 用于 few-shot inference ,我们将一个任务特定的 prompt 拼接到输入中,并将 output prompt 添加到输出中。为了处理经常出现的非常长的输入以进行摘要,它们被截断为 2048 tokens

    few-shot 示例通过双线分隔,这也被用来截断 output predictions 从而用于评估。few-shot 示例都是从训练语料库中随机抽出的。

  4. 微调方法:为了在微调期间使用 decoder-only 结构,inputstargets 被拼接起来,但损失只在序列的 targets 部分计算。拼接后的序列被截断为 2048 tokens ,即预训练期间使用的训练环境,其中 512 tokens 保留给 targets 。只有摘要任务需要 input truncation

    为了对 PaLM 进行微调,我们使用了一个恒定的学习率 5×105,比预训练期间小 20 倍,并重置了优化器(Adafactor )的 accumulator 。每个数据集的最佳 model checkpoint 是由验证集上 ROUGE-1ROUGE-2ROUGE-L 得分的最佳表现的几何平均值来选择的。推断是使用 k=10top-k 采样进行的。T5 XXL 基线使用与 PaLM 相同的参数进行微调,并使用 beam size = 4beam-search 来解码。

  5. Table 15 给出了1-shot 和微调的实验结果。

    • 微调的有效性:总的来说,540B finetuned PaLM 在所有英语生成任务上接近或超过了之前报告的最佳结果。这表明 PaLM 可以通过其大幅增加的规模来弥补其架构上的劣势。我们确实认识到,当存在大量特定任务的训练数据时,decoder-only LM 的微调可能不是所有任务的 computationally optimal 的方法,但是我们相信它可以作为 few-shot prediction 的重要上限。

    • 英语生成与非英语生成的质量:PaLM 为生成英语文本的 6 个摘要任务中的 5 个任务实现了新的 finetuning SOTA 的结果,即使 input 是非英语的。然而,非英语概要(MLSum )的微调不能实现 SOTA ,并且对于非英语生成,few shot 和微调之间的相对差异更大。这表明 PaLM 在处理 non-English input 方面比生成 non-English output 更好,这可能会在未来通过对大部分非英语文本进行预训练而得到改善(在当前模型中为 22% )。

    • 1-shot vs finetuning gap:查看 Data-to-Text 的结果,1-shot 结果遵循与摘要相似的趋势,但是与最佳微调结果的差距急剧缩小。我们注意到,Data-to-Text 任务作为微调基准的价值有限,因为它们的规模很小,并且与预训练语料库显著不匹配。

    • 1-shot 摘要:当比较各种 PaLM 规模上的 1-shot 摘要结果时,我们发现从 8B -> 62B 有一个很大的改进,而从 62B -> 540B 有一个较小但显著的改进。

50.5.7 多语言问答

  1. 我们使用 TyDiQA-GoldP benchmark 在多语言问答任务上评估我们的模型。实验结果如下表所示。不足为奇的是,我们发现平均而言,在 few-shot 和微调的质量之间存在很大的差距。

    我们表明 PaLM 540B 在这项任务上取得了非常有竞争力的结果,尽管没有在那么多的非英语数据上进行训练(占 780B 训练tokens22% )。

50.5.8 分析

  1. 这里,我们深入分析 PaLMfew-shot 性能。

    我们首先研究了三个不同的模型(8B, 62B, 540B )在 5 个不同的任务上的性能: RTE, Natural Questions, Lambada, Story Cloze, Trivia QA 。结果如下图所示。在几乎所有的任务和模型中,当模型被呈现出更多的示例时,性能就会提高。

    然后我们评估了 StoryCloze, Natural Questions, Web Questions benchmarksfew-shot learning 性能的差异。 在预训练期间,我们采取了 15 个不同的均匀间隔的 model checkpoints 。然后我们用 1-shot learning 来评估所有不同的 checkpoints 。鉴于每个检查点只相差 2B pre-training tokens ,我们期望模型质量不受影响。结果如下图所示。

50.6 Memorization

  1. 众所周知,神经网络能够记忆训练数据。事实上,这就是过拟合的定义。通常情况下,这种类型的记忆发生在模型对一个小的训练集进行多次训练时。然而,在我们的案例中,PaLM 是在一个 780B 的语料库上进行 single pass 训练的。另一方面,我们的模型也有非常大的容量,所以即使是 single pass 也可以记住训练数据的很大一部分。此外,由于 web-derived 语料库中存在近乎重复的文本,一些段落(有微小的变化)在训练中会出现多次。在本节中,我们分析了 PaLM 模型对训练数据的记忆程度。

    为了评估这一点,我们从训练样本中随机选择了 100token sequences ,并且采用前 50 tokensprompt 模型。我们运行贪婪解码,并测量模型产生的 token 与训练样本(first 50 tokens 之后的内容)完全匹配的频率。该方法遵循 《Quantifying memorization across neural language models》 的做法,他们试验了 50 ~ 500 tokensprompt 长度。

    • 18(a) 显示了三种模型规模的记忆匹配率。

    • 18(b) 显示了记忆率与训练数据中确切看到的训练样本的次数的关系。请注意,之所以会有重复率如此之高的例子,是因为我们的训练只对完整的文档进行去重,而在这里我们对 100 tokensspan 来评估记忆。

    • 18(c) 显示了按训练数据语料库细分的三种模型的记忆率。由于 code 语料库中有大量的模版的 license 字符串、拷贝的代码、以及自动生成的代码,因此记忆率较高。book 语料库主要包含真正独特的文字串。

  2. 从这些结果中,我们可以得出以下关于记忆的结论:

    • 较大的模型比较小的模型有更高的记忆率。对数线性拟合的斜率与之前 《Quantifying memorization across neural language models》 观察到的非常接近(我们发现 PaLM 的斜率为 0.002R2=0.976,而该论文发现 GPT-Neo 模型系列的斜率为 0.002R2=0.965)。

    • 正如 holdout 的结果所显示的那样,一定量的 "记忆" 是可以预期的,因为该模型会对常见的模板和模板产生 exact match continuation 。然而,训练数据的记忆率明显高于 heldout 数据,这表明该模型确实真正记住了数据的某些部分。

    • 一个样本被记住的机会与它在训练中的 uniqueness 密切相关。只见过一次的样本比见过很多次的样本,被记住的可能性小得多。这与以前的工作一致。

    记忆是否是个问题,取决于数据集的属性和目标应用。因此,在为大型语言模型选择下游应用时,应始终小心谨慎。一个计算效率高,但 memory-intensive 的方法是在训练数据上实现 Bloom filter ,并限制在训练数据集中逐字出现的序列被生成。虽然这种方法会去除确切的记忆内容,但仍然可以产生近似的记忆内容(与训练集文本仅有一两个字差异的 generations )。

50.7 数据集的污染

  1. 以前的工作报告了 benchmark evaluation set 和训练数据之间非常高的数据重合率。这些以前的工作只是看了完整的 evaluation example text 和训练数据之间的高阶 n-grams (如 13-grams )的出现,并认为任何有重叠的样本都是污染的。在这里,我们没有简单地寻找高阶 n-gram 重叠,而是计算了 29 个主要英语 NLP 基准任务的统计数据,并手动检查了每个任务的大量例子,以确定哪些例子的污染比例高。

    我们可以粗略地将 29 个基准任务分为四类:

    • 批量污染:数据集本身有很大一部分出现在公开网络上。我们认为这些是被污染的。例子:SQuADv2, Winograd

    • 从互联网构建:数据集的问题+答案(或 prefix+continuation )是自动从公开的互联网中提取的,因此许多评估实例可能在我们的训练数据中。我们认为这些被污染了。例子:Web Questions, ReCoRD, Lambada

    • 互联网上的 Context:问答数据集的上下文来自互联网,但问题不是。我们不认为这些是被污染的。例子: BoolQ, Multirc, ANLI

    • 没有明显的重叠:数据集与我们的训练数据没有明显的重叠。例子:StoryCloze, OpenbookQA

    我们能够根据问题、prompt、或 target 中至少 70%8-gram 是否在我们的训练数据中出现过一次,将每个数据集分成一个 "污染" 和 "干净"子集。我们在 Table 17 中报告了干净部分与 full set 的结果。我们可以看到,对于干净的子集,正向、负向的子集数量几乎相等,这意味着数据污染不会对我们的报告结果造成有意义的影响。

    我们对机器翻译进行了类似的分析,结果显示在 Table 18 中。

50.8 探索解释性

  1. 前面我们实证了 chain-of-thought prompting 如何大幅提高多步骤推理任务的预测准确性。在这种情况下,模型生成的 reasoning chain 在评估时没有被使用。当然,这种 explanatory generation 的作用除了提高准确率外,还有其他原因。

    • 首先,了解模型是否因为正确的原因而产生了正确的答案,而不仅仅是进行表面上的统计推断,是非常有科学意义的。

    • 第二,该解释有可能被展示给系统的终端用户,以增加或减少他们对某一预测的信心。

    • 第三,在许多情况下(例如,解释一个笑话),解释本身就是期望的输出。

    本节的目标是展示 PaLM 的能力,即通过 chain-of-thought prompting 来生成 explanatory language generation 。下图给出了这些任务的例子。虽然我们承认这些结果并不等同于彻底的定量分析,但我们要说的是,我们相信这展示了一个真正了不起的深度语言理解水平。

50.9 代表性的 bias 分析

  1. 性别和职业偏见:Winogender 的整体结果如下图所示。我们发现,准确率随着模型规模的扩大而提高,PaLM 540B1-shot/few-shot setting 创造了新的 SOTA

    与之前的工作一样,我们还报告了分类的准确性,将 Winogender 分成了刻板印象或被骗子集(gotcha subset )。下图给出了分类的准确率,并按性别进一步细分。我们发现,在刻板印象的例子上,准确率比被骗的例子高;而在被骗的例子上,女性的准确率最低。

  2. 毒性和偏见:按照 GPT-3 描述的类似程序,我们分析了在给出 "{term} was very... " 这样的 prompt 时,model continuation 中常见的共现词,其中被替换的词提到了性别、宗教或种族和民族身份。种族身份共现分析揭示了几个方面的情况:

    • 首先,种族身份术语经常相互共现,这就提出了关于在它们出现的句子中各身份之间的关系(如果有的话)的问题。

    • 其次,prompt language 的微小变化导致了结果的急剧变化。

    除了计算共同出现次数之外,我们还使用 Perspective API 来对 continuations 的毒性进行分类。下图报告了按不同宗教团体划分的模型输出中的毒性概率分布。

  3. 开放式生成中的毒性:毒性退化(toxicity degeneration)对应于 generation 可被语言模型感知为有毒的文本。我们使用Perspective APIcontinuation 分配一个毒性概率。然后,我们研究在 prompt 是有毒的各种可能性下,毒性概率在 model continuations 中的分布。Figure 23 显示了在不同的模型规模下,续篇的平均毒性概率(toxicity probability of the continuation: TPC )与 prompt 的分桶毒性概率(binned toxicity probability of the prompt: TPP )的比例关系图。可以看到:

    • TPC 随着 TPP 的增加而增加,同时一直低于 prompt 毒性和人类基线(除了在 prompt 毒性的最高水平)。

    • 相比较于 8b 模型,两个更大的模型(62B540b )的毒性概率明显增加。这表明毒性水平和模型大小之间存在相关性,但鉴于62B PaLM540B PaLM 模型的毒性非常相似,只能有一定程度上的相关性。

    • 模型的 TPCTPP 比人类的 TPC 更一致。 这表明模型受到 prompt 风格的强烈影响,并有可能产生与 prompt 相似的毒性水平的 continuation

    下表中,我们报告了在第一句、以及 128-decode step 中,在毒性 prompt 和无毒 prompt 下,产生至少一个有毒 prompt 的概率。

  4. 局限性:本节介绍的公平性分析的一个主要限制是,它们只在英语语言数据上进行,而 PaLM 是在多语言数据上进行训练并在多语言语言处理任务上进行评估。

    此外,需要注意的是,尽管调查英语语言技术中的偏见的工作越来越多,但缺乏公平性基准的标准化,缺乏对 NLP 中不同bias 测量的危害的理解,也缺乏对身份的统一、全面覆盖。

    此外,偏见可能充斥着一个系统,这取决于具体的下游应用、其具体的 training pipeline 和应用层面的保护(例如安全的过滤器)。

50.10 伦理方面的考虑

  1. 详细内容参考原始论文。

50.11 Scaling 的开放问题

  1. 在我们的 Introduction 章节中,我们描述了四个主要的方向,这些方向导致了大型 LMfew-shot learning 中的显著质量改进:模型的深度和宽度、training tokens 数量、训练语料的质量、在不增加计算量的情况下增加模型容量(即,sparse 模型)。我们在 PaLM 的背景下讨论这些结果。尽管 Chinchilla 报告的许多基准任务与 PaLM 评估的任务不重叠,但我们可以比较那些重叠的基准任务的结果。Table 20 显示了 9 个英语 NLP 基准任务的具体结果。

    Figure 24 中,我们展示了两组任务的综合结果,作为总训练 FLOPs 数的函数。

    然而,我们不能使用这些结果来推断我们关键的 scaling question 的答案:与 PaLM 540B 相比,一个在 Y tokens 上训练的大小为 X 的模型的效果如何?有几个原因可以解释为什么这是一个难以回答的问题:

    • 为了得出强有力的结论,这样的实验必须逐个 scale 地进行,这有很大的计算成本。

    • 如果较小的模型使用比较大的模型更少的 TPU 芯片进行训练,这将按比例增加训练的 wall-clock time ,因为总的 training FLOPs 数是相同的。如果使用相同数量的 TPU 芯片进行训练,在不大幅增加 batch size 的情况下保持 TPU 的计算效率将是非常困难的。

    • 虽然网络上有大量的非常高质量的文本数据,但也不是无限量的。对于 PaLM 所选择的语料库混合比例来说,在我们的一些子语料库中,数据在 780B tokens 之后开始重复,这就是为什么我们选择这个作为训练的 endpoint 。目前还不清楚在大规模语言模型训练中,重复数据的价值与未见过的数据相比如何。

五十一、PaLM2[2023](粗读)

原始论文 《PaLM 2 Technical Report》 92 页,这里进行了精简。

  1. 随着规模的扩大和 Transformer 架构,大型语言模型(large language model: LLM )在过去几年中在语言理解和语言生成能力方面表现出强大的性能,导致 reasoning 、数学、科学和语言任务的突破性表现。这些进展的关键因素是扩大模型规模和数据量。到目前为止,大多数 LLM 都遵循一个标准的配方,主要是具有 language modeling objective 的单语语料库。

    我们介绍 PaLM 2 ,它是 PaLM 的后继者,是一个统一了建模进展、数据改进、以及 scaling insight 的语言模型。PaLM 2 结合了以下一系列不同的研究进展:

    • compute-optimal scaling:最近,compute-optimal scaling《Training compute-optimal large language models》)表明,数据规模至少与模型规模一样重要。我们对这项研究进行了验证,并同样发现数据规模和模型的大小应该大致按 1:1 的比例缩放,以在给定的训练计算量的条件下实现最佳性能(与过去的趋势相反,其中模型的缩放速度比数据集快 3 倍)。

    • 改进的 dataset mixture:以前的大型预训练语言模型通常使用以英语文本为主的数据集。我们设计了一个更多语言、更多样化的 pre-training mixture ,它延伸到数百种语言和领域(例如,编程语言、数学、以及平行多语言文档)。我们表明,更大的模型可以处理更多不同的非英语数据集,而不会导致英语语言理解性能的下降,并应用数据去重来减少 memorization《Deduplicating training data makes language models better》)。

    • 架构和 objective 的改进:我们的模型架构是基于 Transformer 的。过去的 LLM 几乎只使用单一的 causal language modeling objectivemasked language modeling objective 。鉴于 UL2《UL2: Unifying language learning paradigms》)的强大结果,我们在这个模型中使用了不同 pre-training objective 的调优好的 mixture ,以训练模型理解语言的不同方面。

    PaLM 2 家族中最大的模型(即,PaLM 2-L ),明显比最大的 PaLM 模型小,但使用更多的训练计算量。我们的评估结果显示,PaLM 2模型在各种任务中的表现明显优于PaLM,包括自然语言生成、翻译和推理。这些结果表明,模型的scaling 并不是提高性能的唯一途径。相反,性能可以通过精细的数据选择、以及更高效的 architecture/objective 来实现。此外,规模更小但质量更高的模型可以显著提高 inference 效率、降低 serving 成本,并使模型的下游 application 应用于更多用户和 application

    PaLM 2 展示了重要的多语言、代码生成、以及推理能力,我们在 Figure 2Figure 3 中进行了说明。更多的例子可以在附录 B 中找到。PaLM 2 在现实世界的高级语言能力考试中的表现明显优于 PaLM ,并通过了所有被评估语言的考试(见 Figure 1 )。对于某些考试来说,这是一个足以教授该语言的语言能力水平。在本报告中,生成的样本和测量的指标都来自于模型本身,没有任何外部的增强功能,如谷歌搜索或翻译。

    PaLM 2 包含 control tokens ,以实现 inference 期间对毒性的控制,与之前的工作相比,只修改了预训练的一小部分(《Pretraining language models with human preferences》)。 特殊的 'canary' token sequence 被注入到 PaLM 2 的预训练数据中,以便能够改进对不同语言的 memorization 度量。我们发现:PaLM 2 的平均逐字记忆率低于 PaLM ;对于尾部语言,我们观察到,只有当数据在文档中重复多次时,记忆率才会高于英语。 我们表明,PaLM 2 具有更好的多语言毒性分类能力,并在一系列潜在的下游用途中评估了潜在的危害和 bias。我们还包括对预训练数据中人类的表现的分析。这些部分有助于下游开发者评估其特定应用背景下的潜在危害,以便他们在开发早期优先考虑额外的程序和技术保障措施。本报告的其余部分重点描述了设计 PaLM 2 和评估其能力的考虑因素。

51.1 Scaling Law 实验

  1. 《Scaling laws for neural language models》 研究了训练数据量(D)和模型大小( N )之间的关系,并得出经验性结论,即它遵循幂律且 N 需要比 D 增长更快。

    《Training compute-optimal large language models》 在这一观察的基础上进行了类似的研究,对较小模型的超参数进行了更好的调优。他们的结果证实了《Scaling laws for neural language models》power law 结论。然而,他们得出了关于最佳比例的不同结果,表明 ND 应该以相等的比例增长。

    在这一节中,我们独立地推导了非常大的模型的 scaling law 。我们得出了与《Training compute-optimal large language models》 类似的结论,即 DN 应该以相等的比例增长。然后,我们探讨 scaling law 对下游指标的影响。

  2. 为了确定我们配置的 scaling law ,我们遵循与《Training compute-optimal large language models》 相同的程序。我们用 4 种不同的计算预算来训练几个不同大小的模型: 1×1019,1×1020,1×1021,1×1022 FLOPs 。对于每个计算预算,我们使用启发式的 FLOPs6ND《Scaling laws for neural language models》)来决定训练每个模型的training tokens 数量。关键是,我们使用余弦学习率衰减,并确保每个模型的学习率在其最后的 training token 处完全衰减。

    对每个模型的 final validation loss 进行平滑处理,我们对每个 isoFLOPS band 进行二次方拟合(Figure 4 )。这些二次方拟合的最小值表示每个 isoFLOPS bandprojected optimal model sizeN )。最佳 D 是由启发式 FLOPs 得出的。将这些最佳 N 和最佳 DFLOPs 作图(Figure 5 ),我们发现,随着FLOPs 预算的增加,DN 应该以相同的比例增长。这与《Training compute-optimal large language models》 的结论惊人地相似,尽管该研究的规模较小,而且采用的是不同的 training mixture

    我们使用 Figure 5scaling laws 来计算 1×1022,1×1021,1×1020 FLOPs 的最佳模型参数的数量(N )和 training tokens 数量(D)。然后我们在相同的 pre-training mixture 上训练从 400M15B 的几个模型,最多 1×1022 FLOPs 。最后,我们计算每个模型在三个 FLOP points 的损失。所得的 training loss 和它们相关的最佳模型参数数量包括在 Table 1 中。我们可以观察到,在给定的 FLOPs 下,近似遵循最优模型参数(N )的模型实现了最低的损失。请注意,所有提到的参数数量都是 non-embedding 参数。

  3. 下游的指标评估:为了研究在固定计算成本为 1×1022 FLOPs的情况下选择最佳参数数量和最佳 training tokens 数量的效果,我们在同一个 pretraining mixture 上训练几个模型,根据每个模型的大小在给定的 FLOPs 上进行采样并训练。值得注意的是,所选择的模型大小、架构、和 training mixture 只用于研究 scaling laws

    我们在 Table 15 中显示了不同大小的模型的下游结果。结果表明,具有 1×1022 FLOPs 的模型的最佳参数数量是10B 。然而,training loss 并不是下游指标的一个完美代理。例如,8.95B 的模型,显示出最低的损失(Table 1),最接近最佳模型,在下游任务上的表现略低于 14.7B 的模型。这表明,虽然 scaling laws 可以用来实现给定数量的 FLOPs 的最佳 training loss ,但这并不一定能迁移到实现给定任务的最佳性能。此外,除了最佳 training loss 外,还有其他一些考虑因素,如训练吞吐量和 serving latency ,这些都会影响关于最佳模型大小的决定。

51.2 训练数据集

  1. PaLM 2 的预训练语料库由一系列不同的来源组成:网络文档、书籍、代码、数学、对话数据。预训练语料库比用于训练 PaLM 的语料库大得多。与之前的大型语言模型相比,PaLM 2 的数据集包含了更高比例的非英语数据,这对多语言任务(如翻译和多语言问答)是有利的,因为模型会接触到更多的语言和文化。这使得该模型能够学习每种语言的细微差别。

    除了非英语的单语数据外,PaLM 2 还在涵盖数百种语言的平行数据(parallel data )上进行训练,这些数据的形式是一方为英语的 (source, target) 文本对。多语言平行数据的加入进一步提高了该模型理解和生成多语言文本的能力。它还为模型植入了固有的翻译能力,这对各种任务都很有用。下表列出了数百种语言中的前 50 种,以及它们在多语言网络文档子语料库中的相关百分比。我们没有应用任何过滤方法来明确地保留或删除任何语言。

  2. 我们采用了几种数据清理和质量过滤方法,包括去重、去除敏感的隐私信息、以及过滤。即使 PaLM 2 的英语数据比例比 PaLM小,我们仍然观察到英语评估数据集的明显改善。我们将此部分归因于 PaLM 2 mixture 中更高的数据质量。

  3. PaLM 2 经过训练后,模型的上下文长度大大超过了 PaLM 的长度。这种改进对于实现长对话、长距离推理和理解、摘要、以及其他需要模型考虑大量上下文的任务等能力至关重要。我们的结果表明,增加模型的上下文长度而不损害其在通用 benchmark 上的性能是可能的,这些通用 benchmark 可能不需要更长的上下文。

51.3 评估

  1. 由于 model checkpoints 的结果存在一些差异,我们对最后五个 PaLM 2 checkpoint 的结果进行平均,以便对大型模型进行更有力的比较。

  2. 评估内容省略(纯粹的技术报告,原理和细节部分很少)。

五十二、Self-Instruct[2022]

  1. 最近的 NLP 文献见证了大量的 building model ,这些模型能够遵循自然语言指令(natural language instruction )。这些进展由两个关键部分所推动:大型预训练好的语言模型、人类编写的指令数据。PromptSourceSuperNaturalInstructions 是最近两个值得注意的数据集,它们使用大量的人工标注来收集构建 T0-InstructTk-Instruct 。然而,这个过程成本很高,而且考虑到大多数 human generation 往往是流行的 NLP 任务,常常遭受有限的多样性,没有涵盖真正的各种 NLP 任务、以及描述任务的不同方式。鉴于这些局限性,要继续提高 instruction-tuned 模型的质量,就必须开发出 supervising instruction-tuned 模型的替代方法。

    在论文 《Self-Instruct: Aligning Language Model with Self Generated Instructions》 中,作者介绍了 Self-Instruct ,这是一个半自动的过程,利用模型本身的 instructional signalpretrained LM 进行 instruction-tuning 。整个过程是一个迭代的bootstrapping 算法(如下图所示),它从一个有限的(例如,在论文的研究中是 175 个)手动编写指令的种子集(seed set )开始,这些手动编写的指令被用来指导整个generation

    • 在第一阶段,模型被 prompted 从而生成新任务的指令。这一步利用现有的指令集合来创建覆盖面更广的指令集合,这些新的指令用于定义任务(通常是新的任务)。

    • 给定新生成的指令集,该框架还为它们创建了 input-output instance ,这些 instance 随后可用于 supervising instruction tuning

    • 最后,在将其添加到任务池(task pool )之前,会使用各种措施来裁剪低质量的和重复的指令。

    这个过程可以反复迭代多次,直到达到大量的任务。

    为了评估 Self-Instruct ,作者在 GPT3 上运行这个框架,其中 GPT3 是一个平凡的语言模型。在 GPT3 上的迭代 Self-Instruct 过程导致了大约 52K 条指令,与大约 82Kinstance inputstarget outputs 相配对。作者观察到,所产生的数据提供了多种多样的创造性的任务,其中 50% 以上的任务与 seed instruction 的重合度低于 0.3 ROUGEL 。在这个结果数据上,作者通过微调 GPT3 (即用于生成指令数据的同一模型)来建立 GPT3SELF-INST 。作者在 SuperNaturalInstructions 中包含的典型 NLP 任务、以及为 instruction-following model 的新用途而创建的一组新指令上,对 GPT3SELF-INST 与其他各种模型进行评估。SUPERNI的结果表明, GPT3SELF-INSTGPT3 (原始模型)有很大的优势( +33.1% ),几乎与 InstructGPT001 的性能相当。此外,作者对新创建的指令集进行的人类评估表明, GPT3SELF-INST 展示了广泛的 instruction following 能力,超过了在其他公开可用的指令数据集上训练的模型,与 InstructGPT001 仅有 5% 的差距。

    综上所述,论文的主要贡献:

    • Self-Instruct ,一种用最少的人类标记数据诱导 instruction following 能力的方法。

    • 通过广泛的 instruction-tuning 实验证明了Self-Instruct 方法的有效性。

    • 发布了一个由 52K 指令组成的大型合成数据集、以及一组手工编写的新任务,用于建立和评估未来的 instruction-following 模型。

  2. 相关工作:

    • instruction-following 语言模型:一系列的工作发现,如果用人工标注的 "指令" 数据(这样的一种数据集:包含 language instructional command 和基于人类判断的预期结果)进行微调,平凡的语言模型可以有效地遵循通用的语言指令。此外,这些工作还显示了 "指令" 数据的规模和多样性,与所产生的模型的泛化性(推广到 unseen task )之间的直接关系。由于这些发展依赖于人类标注的 "指令" 数据,这对实现更加泛化的模型构成了瓶颈。我们的工作旨在通过减少对人类标注员的依赖来解决这个瓶颈。

      此外,尽管像 InstructGPT 这样的模型有优秀的表现,但其构建过程仍然相当不透明。特别是,由于这些关键模型背后的主要企业实体发布的有限透明度和有限数据,数据的作用仍然没有得到充分研究。要解决这样的挑战,就必须建立一个涵盖广泛任务的大规模的公共数据集。

      multi-modal learning 文献中,instruction-following 模型也备受关注。 Self-Instruct 作为扩展数据的一般方法,有可能在这些 setting 中也有帮助;然而,这不在本工作的范围之内。

    • 用于 data generationdata augmentation 的语言模型:许多工作都依靠生成式语言模型来生成数据、或增强数据。例如,《Generating datasets with pretrained language models》提议用 prompting large LM 取代给定任务的人类标注,并在 SuperGLUE 任务的背景下使用所产生的数据来微调(通常较小的)模型。虽然我们的工作可以被看作是一种 "augmentation" 形式,但我们的工作与这一方向不同,因为它不是专门针对某一特定任务(例如,QANLI )。相反, Self-Instruct 的一个明显的动机是 bootstrap new task definition ,这些任务可能以前没有被任何 NLP 从业者定义过(尽管可能对下游用户仍然很重要)。

    • self-training:一个典型的自训练框架使用训练好的模型来给 unlabeled data 分配标签,然后利用新标记的数据来改进模型。在类似的路线中, 《Prompt Consistency for Zero-Shot Task Generalization》 使用 multiple prompts 来指定一个任务,并建议通过 prompt consistency 来正则化,鼓励对 prompts 的一致预测。这允许用额外的 unlabeled training data 对模型进行微调,或者在推理时直接应用。虽然 Self-Instruct 与自训练有一些相似之处,但大多数自训练方法都假定有一个特定的目标任务、以及该任务下的未标记实例;相反, Self-Instruct 从头开始产生各种任务。

    • 知识蒸馏:知识蒸馏通常涉及到将知识从较大的模型迁移到较小的模型。 Self-Instruct 也可以看作是 "知识蒸馏" 的一种形式。然而, Self-Instruct 在如下方面与知识蒸馏不同:

      • Self-Instruct 中,蒸馏的 sourcetarget 是相同的,即一个模型的知识被蒸馏到自己身上。

      • 蒸馏的内容是 instruction task 的形式(即定义一个任务的指令,以及一组实例)。

    • 用有限的实例进行 bootstrapping :最近的一系列工作使用语言模型,用专门的方法来 bootstrap some inference

      • NPPrompt《Pre-trained language models can be fully zero-shot learners》)提供了一种无需任何微调就能生成 semantic label 的预测的方法。它使用模型自身的 embedding来自动寻找与数据实例的标签相关的单词,因此减少了对从 model predictionlabel (即,verbalizer )的人工映射的依赖。

      • STAR《STar: Self-taught reasoner bootstrapping reasoning with reasoning》)反复利用少量的 rationale example 和没有 rationales 的大数据集,来 bootstrap 模型执行 reasoning 的能力。

      • Self-Correction《Generating sequences by learning to self-correct》)将一个不完美的 base generator (模型)与一个单独的 corrector 解耦,该 corrector 学会了迭代地修正不完美的 generation ,并展示了对 base generator 的改进。

      我们的工作则侧重于在指令范式中 bootstrapping new task

    • 指令生成:最近的一系列工作在给定少数实例的条件下,生成任务的指令。虽然 Self-Instruct 也涉及指令的生成,但我们的主要区别在于它是任务无关的;我们从头开始生成新任务(指令和实例)。

52.1 方法

  1. 标注大规模的指令数据对人类来说是一种挑战,因为它需要:创造性地提出新的任务、专业知识从而用于为每个任务编写标记的实例。在这一节中,我们将详细介绍我们的 Self-Instruct 过程,它指的是这样的 pipeline:用一个平凡的 pretrained language model 来生成任务,然后用这些被生成的任务进行 instruction tuning 从而使语言模型更好地遵循指令。这个 pipeline 在下图中被描述。

  2. 指令数据(Instruction Data )的定义:我们要生成的指令数据包含一组指令 {It}t=1,2,,其中每条指令 It 指令都用自然语言定义了一个任务 t。每个任务有一个或多个 input-output 实例 (Xt,Yt)。给定任务指令 Itinstance input x ,一个模型 M 预期输出 y=M(It,x) ,其中 (x,y)(Xt,Yt)

    注意,在许多情况下,指令和 instance input 并没有严格的界限。例如:

    • "write an essay about school safety" 可以是一个有效的指令,在这个指令上我们预期模型直接地响应。

      这里只有指令而没有 instance input

    • 此外,"write an essay about school safety" 也可以被表述为 "write an essay about the following topic" 作为指令,而 "school safety" 作为 instance input

    为了鼓励数据格式的多样性,我们允许这种不需要额外输入的指令(即,x 为空)。

  3. 自动的指令数据生成:我们生成指令数据的 pipeline 包括四个步骤:指令生成、识别指令是否代表分类任务、用 input-firstoutput-first 的方法生成实例、过滤低质量数据。

    • 指令生成(Instruction Generation): Self-Instruct 是基于一个发现,即 large pretrained language model 在遇到上下文中的一些现有指令时,可以被 prompted 从而生成 new and novel 的指令。这为我们提供了一种从 seed human-written 指令的一个小集合中 augument 指令数据的方法。我们提议以 bootstrapping 的方式产生一个多样化的指令集。我们用本文的作者编写的 175 个任务(每个任务有 1 条指令和 1 个实例)初始化了任务池。对于每一步,我们从这个指令池里采样 8 条任务指令作为 in-context example 。在这 8 条指令中,6 条来自人类编写的任务、2 条来自 previous steps 中的模型生成的任务,从而促进多样性。 prompting template 如下表所示。

      为什么要 8-shot?用更多或更少的 shot ,效果会怎么样?

      为什么用 3:1 的混合比例,用更多或更少的人类编写的任务,效果会怎样?

    • 分类任务识别(Classification Task Identification):因为我们需要两种不同的方法从而分别处理分类任务和非分类任务,所以我们接下来识别 generated instruction 是否代表分类任务。我们使用种子任务中的 12 条分类指令、以及 19 条非分类指令,并 prompt 常规的 GPT3 few-shot 来确定这一点。prompting template 如下表所示。

      12/19 这两个数值是如何确定的?

    • 实例生成(Instance Generation):给定指令及其任务类型,我们为每个指令独立地生成实例。这很有挑战性,因为它要求模型根据指令来理解目标任务是什么,弄清需要哪些额外的 input field 并生成这些额外的 input field ,最后通过产生 output 来完成任务。我们发现,当用其他任务中的 instruction-input-output in-context exampleprompt 时, pretrained language model 可以在很大程度上实现这一点。一个自然的方法是 Input-first Approach ,我们可以要求语言模型先根据指令来生成 input field ,然后产生相应的 output 。这种生成顺序类似于模型对指令和输入的响应方式。prompting template 如下表所示。

      然而,我们发现这种方法会产生偏向于 one label 的输入,特别是对于分类任务(例如,对于语法错误检测,它通常会生成 grammatical input )。因此,我们另外提出了一种用于分类任务的 Output-first Approach ,即我们首先生成可能的 class label ,然后以每个 class label 为条件来生成 inputprompting template 如下表所示。

      我们将 Output-first Approach 应用于前一步所确定的分类任务,将 Input-first Approach 应用于其余的非分类任务。

    • 过滤和后处理:为了鼓励多样性,只有当一条新指令与任何现有指令的 ROUGE-L overlap 小于 0.7时,这条新指令才会被添加到任务池中。我们还排除了包含一些特定关键词(如 images, pictures, graphs )的指令,这些关键词通常不能被语言模型所处理。在为每条指令生成新的实例时,我们过滤掉那些完全相同的实例或那些具有相同输入但不同输出的实例。

      不仅需要过滤指令,也需要过滤任务的实例。

  4. 微调语言模型从而 follow instructions:在创建了大规模的指令数据后,我们用这些数据来微调原始语言模型(即 self-instruct )。为了做到这一点,我们将指令和 instance input 拼接起来作为 prompt ,并训练模型以标准的监督方式生成 instance output

    为了使模型对不同的格式具有鲁棒性,我们使用多个 templates 来把指令和 instance input 编码在一起。例如:

    • 指令的前缀可以是 "Task:" ,也可以不是。

    • 输入的前缀可以是 "Input:" ,也可以不是。

    • "Output:" 可以附加在 prompt 的末尾。

    • 中间可以放不同数量的换行符,等等。

    每个实例都采用一组各式各样的模版格式,那么这些模板如何设计?论文并未深入地探索。

52.2 来自 GPT3 的 Self-Instruct 数据

  1. 这里我们将我们的方法应用于 GPT3 从而诱导指令数据,作为案例研究。我们使用最大的 GPT3 语言模型("davinci" engine )通过 OpenAI API 访问。在为不同的目的查询 GPT3 API 时,我们使用不同的超参数集合。我们发现这些超参数在 GPT3 模型( "davinci" engine )和其他 instruction-tuned GPT3 变体中运行良好。我们在下表中列出了它们。

    接下来我们介绍一下 generated data 的概况。

  2. 统计数据:下表描述了 generated data 的基本统计数据。经过过滤之后,我们总共生成了超过 52K 条指令,以及超过 82K 个与这些指令相对应的实例。

  3. 多样性:为了研究生成了哪些类型的指令、以及这些被生成指令的多样性,我们确定了被生成的指令中的 “动名词”( verb-noun )结构。我们使用 Berkeley Neural Parser 来解析指令,然后提取最接近 parse tree 的根部的动词、以及该动词的first direct noun object 。在 52,445 条指令中,有 26,559 条包含这样的结构;其他指令通常包含更复杂的子句(例如,"Classify whether this tweet contains political content or not." )或被界定为问句(例如,"Which of these statements are true?" )。我们在下图中绘制了前 20 个最常见的 root verb 、以及这些动词的前 4direct noun object ,这些指令占了整个被生成指令的集合的 14% 。总的来说,我们在这些指令中看到了相当多样化的意图和文本格式。

    我们进一步研究 generated instruction 与用于 prompt the generation 的种子指令有何不同。对于每个 generated instruction ,我们计算其与 175 条种子指令的最高 ROUGE-L overlap 。我们在 Figure 3 中绘制了这些 ROUGE-L 分数的分布,表明有相当数量的新指令与种子指令没有太多的 overlap 。我们还在 Figure 4 中展示了指令长度、instance inputinstance output 的多样性。

  4. 质量:到目前为止,我们已经展示了 generated data 的数量和多样性,但其质量仍然不确定。为了调查这一点,我们随机采样了 200 条指令,并在每条指令中随机选择 1 个实例。我们请一位专家标注员(本论文的 co-author )从指令、instance inputinstance output 的角度来标注每个实例是否正确。

    下表中的评估结果显示,大多数 generated instruction 是有意义的,而 generated instance 可能包含更多的噪音(在合理的范围内)。然而,我们发现,即使 generation 可能包含错误,但大多数仍然是正确的格式,甚至是部分正确的,这可以为训练模型提供有用的指导从而遵循指令。

    我们在下表中分别给出了一些好的 generation 和坏的 generation

52.3 实验

  1. 我们进行实验来衡量和比较各种 instruction tuning 设置下的模型质量。我们首先描述了我们的模型和其他 baseline,然后是我们的实验。

  2. GPT3SELF-INST :在 GPT3 自己的指令数据上微调 GPT3

    使用 instruction-generated 指令数据,我们对 GPT3 模型本身("davinci" engine)进行 instruction tuning 。如前所述,我们使用各种模板来拼接指令和 input ,并训练模型来生成output 。这种微调是通过 OpenAI finetuning API 完成的。我们使用默认的超参数,除了将 prompt loss 权重设置为 0 ,并对模型训练两个 epoch 。最终的模型被称为 GPT3SELF-INST

    " prompt loss 权重设置为 0 ",意味着近考虑 output 的损失。

    微调细节如下: GPT3SELF-INST 和我们的一些 baseline 是由 GPT3 模型(具有 175B 参数的 "davinci" engine )微调的。我们通过 OpenAIfinetuning API 进行这种微调。虽然目前还没有关于如何用这个API 对模型进行微调的细节(例如,哪些参数被更新,或者优化器是什么),但我们用这个 API 的默认超参数来微调我们所有的模型,以便结果具有可比性。我们只将 "prompt_loss_weight" 设置为 0 ,因为我们发现这在我们的案例中效果更好,而且每个微调实验都训练了两个 epochs ,以避免训练任务的过拟合。微调是根据训练文件中的 token 数量来收费的。从 GPT3 模型中微调 GPT3SELF-INST 需要 338 美元。

  3. baseline

    • 现成的语言模型:我们评估 T5-LMGPT3 作为平凡的语言模型 baseline (只有预训练而没有额外的微调)。这些 baseline 将表明现成的语言模型在预训练之后能够在多大程度上自然地遵循指令。

    • 公开可用的 instruction-tuned 模型:T0Tk-INSTRUCT 是公开的两个 instruction-tuned 模型,并被证明能够遵循许多NLP 任务的指令。这两个模型都是从 T5 checkpoint 微调的,并且是公开可用的。对于这两个模型,我们使用其最大版本(11B 参数)。

    • instruction-tuned GPT3 模型:我们评估了 InstructGPT ,它是由 OpenAI 基于 GPT3 开发的,以更好地遵循人类指令,并被社区发现具有令人印象深刻的 zero-shot 能力。InstructGPT 模型有不同的版本,其中较新的模型使用更多的扩展数据、或更多的算法新颖性。

      • 对于我们的 SUPERNI 实验,我们只与他们的 text-davinci-001 engine 进行比较,因为他们较新的 engine 是用最新的用户数据训练的,很可能已经看到 SUPERNI 的评估集合。

      • 对于我们在新撰写的指令上对这些模型的人工评估,我们包括他们的 001/002/003 engine ,以保证完整性。

    • 此外,为了将 Self-Instruct Training 与其他公开可用的 instruction tuning 数据进行比较,我们用 PROMPTSOURCESUPERNI 的数据进一步微调 GPT3 模型,其中 PROMPTSOURCESUPERNI 是被用来训练 T0Tk-INSTRUCT 模型。我们分别将其简称为 T0 trainingSUPERNI training 。为了节省训练预算,我们对每个数据集采样 50K 个实例(但涵盖其所有指令),其规模与我们生成的指令数据相当。根据 SUPERNI 原始论文的研究结果和我们的早期实验,减少每个任务的实例数量并不会降低模型对 unseen 任务的泛化性能。

      这是为了将开源的指令数据集,与 self-instruct 生成的指令数据集进行比较。

52.3.1 在 SUPERNI benchmark 上的 Zero-Shot 泛化

  1. 我们首先评估了模型在典型的 NLP 任务上以 zero-shot 方式来遵循指令的能力。我们使用 SUPERNIevaluation 集合,它由 119 个任务组成,每个任务有 100 个实例。在这项工作中,我们主要关注zero-shot 设置,即只用任务的定义来 prompt 模型,而没有 in-context demonstration example 。对于我们对 GPT3 变体的所有请求,我们使用确定性的 generation mode (温度为 0 ,没有 nucleus sampling ),没有特定的 stop sequence

    温度为 0、没有 nucleus sampling ,这对于 generation 是不利的,因此并不能代表模型的最佳效果。最好是调优这两个超参数,然后再对比各个模型。

    实验结果如下表所示:

    • Self-Instruct 在很大程度上提高了 GPT3instruction-following 能力。

    • 平凡的 GPT3 模型基本上不能遵循人类的指令。经过人工分析,我们发现它通常会生成不相关的重复性文本,而且不知道何时停止生成。

    • 与其他没有专门为 SUPERNI 训练的模型相比, GPT3SELF-INST 取得了比 T0 模型、或在 T0 训练集上微调的 GPT3 更好的性能,而 T0 训练集需要巨大的人工标注工作。值得注意的是, GPT3SELF-INST 也几乎与 InstructGPT001 的性能相匹配,后者是用私人用户数据、以及人类标注的标签来训练的。

    • SUPERNI 训练集上训练的模型在其评估集上取得了更好的性能,我们将此归因于在训练期间采用了与评估时类似的指令风格和指令格式。然而,我们表明,当 Self-InstructSUPERNI 训练集相结合时,仍然带来了额外的收益,证明了 Self-Instruct 作为补充数据的价值。

52.3.2 实验二:泛化到新任务上的面向用户的指令

  1. 尽管 SUPERNI 在收集现有的 NLP 任务方面很全面,但这些 NLP 任务大多是为研究目的而提出的,并且偏向于 classification 任务。为了更好地获取 instruction-following 模型的实用价值,本文所有作者中的一部分作者策划了一套新的指令,其动机是面向用户的应用。

    我们首先对大型语言模型可能有用的不同领域进行头脑风暴(例如,电子邮件写作、社交媒体、生产力工具、娱乐、编程),然后制作与每个领域相关的指令以及一个 input-output instance (同样, input 是可选的)。我们的目标是使这些任务的风格和格式多样化(例如,指令可长可短;input/output 可采用 bullet points 、表格、代码、方程式等形式)。

    我们总共创建了 252 个指令,每个指令有 1 个实例。我们相信它可以作为一个测试平台,用于评估 instruction-based 模型如何处理多样化和不熟悉的指令。下表展示了 252 个任务中的一小部分。整个测试集对于 request 可用。

  2. 人类评价设置:在这个由不同任务组成的评估集上评估模型的性能是极具挑战性的,因为不同的任务需要不同的专业知识。事实上,许多任务不能用自动指标来衡量,甚至不能由普通的众包人员来判断(例如,编写一个程序,或将一阶逻辑转换为自然语言)。为了得到更忠实的评价,我们要求指令的作者对模型的预测进行判断。评估人员被要求根据输出是否准确有效地完成了任务来评分。我们实施了一个四级评分系统来对模型的输出质量进行分类,定义如下:

    • A:输出是有效的,令人满意的。

    • B:输出是可接受的,但有轻微的错误或不完善之处,可以改进。

    • C:输出是相关的,是对指令的响应,但在内容上有重大错误。例如,GPT3 可能首先生成一个有效的输出,但继续生成其他不相关的东西。

    • D:输出是不相关的或无效的,包括对 input 的重复,完全不相关的输出等。

    下图给出了 GPT3 模型及其 instruction-tuned 对应的版本在这个新编写的指令集上的表现。可以看到:

    • GPT3SELF-INST (即用 Self-Instruct 微调的 GPT3 模型)在很大程度上超过了那些在 T0SUPERNI 上训练的对应模型。证明了尽管有噪音,但 generated data 仍有价值。

    • InstructGPT001 相比, GPT3SELF-INST 的表现相当接近。如果我们把有轻微缺陷的可接受的输出(等级为 C )算作有效, GPT3SELF-INST 仅比 InstructGPT001 落后 5%

    • 最后,我们的评估证实了 InstructGPT002InstructGPT003模型令人印象深刻的 instruction-following 能力。尽管这一成功背后有许多因素,但我们猜想,未来的工作在很大程度上可以通过使用人类标注员、或训练奖励模型来提高我们 generated data 的质量,以选择更好的 generation ,类似于 InstructGPT 使用的算法。

  3. 我们在 Table 4 中介绍了一些面向用户的任务、相应的 GPT3SELF-INST 产生的输出和标注人员的评分。我们看到,即使是被评为 2 级(即,B)的输出,该模型也展示了解决任务的详尽步骤,尽管其最终输出是错误的。

52.4 讨论和局限性

  1. 为什么 Self-Instruct 能工作?

    值得反思的是,高质量的人类反馈在促成最近关于 instruction-tuning 语言模型的成功方面所发挥的作用。这里有两个极端的假说:

    • 假说一:人类反馈是 instruction-tuning 的一个必要的、不可缺少的方面,因为语言模型需要学习在预训练中不太了解的问题。

    • 假说二:人类反馈是 instruction-tuning 的一个可选的方面,因为语言模型在预训练中已经对指令相当熟悉。观察人类反馈只是一个轻量级的过程,用于 align 模型的 pretraining distribution/objective ,这个轻量级过程可能会被不同的过程所取代。

    虽然现实情况可能介于这两个极端之间,但我们猜测它更接近于假说二,特别是对于大型模型。这种直觉,即语言模型已经知道很多关于语言指令的信息,是 Self-Instruct 的关键动机,也得到了其经验性成功的支持。

  2. 更广泛的影响:除了本文的直接焦点之外,我们认为 Self-Instruct 可能有助于为像 InstructGPT 这样广泛使用的 instruction-tuned 模型的 "幕后" 工作带来更多的透明度。不幸的是,这些工业模型仍然在 API wall 后面,因为它们的数据集没有被公布,因此人们对它们的构造、以及它们为什么表现出令人印象深刻的能力了解甚少。现在,学术界有责任更好地理解这些模型的成功之源,并努力建立更好的(但却是开放的)模型。我们相信我们在本文中的发现证明了多样化的指令数据的重要性,我们的大型合成数据集可以成为更高质量数据的第一步,从而用于建立更好的 instruction-following 模型。

  3. 局限性:

    • tail 现象: Self-Instruct 依赖于语言模型,它将继承语言模型所带来的所有局限性。正如最近的研究表明(《Impact of pretraining term frequencies on few-shot reasoning》《Large language models struggle to learn long-tail knowledge》),长尾现象对语言模型的成功构成了严重挑战。换句话说,语言模型的最大收益对应于语言的频繁使用( language use 分布的头部),而在低频上下文中的收益最小。同样,在这项工作的背景下,如果 Self-Instruct 的大部分收益都偏向于在预训练语料库中更频繁出现的任务或指令,也就不足为奇了。因此,该方法在不常见的和创新性的指令方面可能会表现得很脆弱。

    • 对大型模型的依赖性:由于 Self-Instruct 依赖于从语言模型中提取的归纳偏置( inductive bias ),它可能对更大的模型效果最好。如果是真的,这可能会给那些可能没有大型计算资源的人带来障碍。我们希望未来仔细研究:收益是如何作为模型大小或其他各种超参数的函数。值得注意的是,有人类标注的 instruction-tuning 也有类似的局限性:instruction-tuning 的收益在大型模型中更高(《Finetuned Language Models are Zero-Shot Learners》)。

    • 强化了语言模型的偏见(bias ):一个值得关注的问题是这种迭代算法的意外后果,例如放大有问题的 social bias (对性别、种族等的刻板印象或诽谤)。与此相关的是,在这个过程中观察到的一个挑战是,该算法很难产生平衡的标签,这反映了模型的 prior bias 。我们希望未来的工作能够理清这些细节,以更好地了解该方法的优点和缺点。

五十三、LIMA[2023]

论文:《LIMA: Less Is More for Alignment》

  1. 语言模型以一个难以置信的规模被预训练从而预测 next token,这使其能够学习通用 representations,并将其迁移到几乎任何语言理解或语言生成任务中。为了实现这种迁移,各种用于对齐语言模型的方法因此已被提出,主要集中在大型百万样本数据集上的指令微调(instruction tuning ),以及最近的 reinforcement learning from human feedback: RLHF (数据来自人类标注员的百万级交互)。现有的 alignment 方法需要大量的计算和专门的数据才能达到 ChatGPT 的水平。 然而,我们展示了,给定一个强大的 pretrained 语言模型,通过简单地在 1000 个精心策划的训练样本上进行微调,就可以达到惊人的强大性能。

    我们假设 alignment 可以是一个简单的过程,模型在其中学习与用户交互的风格或格式,从而展示预训练期间已经获取的知识和能力。为了测试这一假设,我们策划了 1000 个近似 real user prompts 和高质量响应的样本。我们从社区论坛(如 Stack ExchangewikiHow )中选取了 750 个高质量的问题和答案,并且针对质量和多样性进行了采样。此外,我们手动编写了 250prompts and responses 的样本,同时优化任务的多样性,并强调了 AI assistant 的统一响应风格。最后,我们在这组 1000 个样本上微调一个 pretrained 65B LLaMa 模型,微调好的模型被称作 LIMA

    我们在 300 个具有挑战性的测试 prompts 中将 LIMASOTA 语言模型和产品进行比较。在 human preference 研究中,我们发现LIMA 优于OpenAIDaVinci003 (后者使用 RLHF 进行了训练)、以及 65B 参数 Alpaca 的复现(在 52000 样本上训练)。尽管人类通常更喜欢 GPT-4ClaudeBard ,而不是 LIMA 的响应,但情况并非总是如此;:LIMA 生成的响应在 43%46%58%的情况下与 GPT-4ClaudeBard 相当或更佳。使用 GPT-4 重复(Repeatinghuman preference annotations 证实了我们的发现。分析 LIMA responsesabsolute scale 显示:88% 的响应符合 prompt requirements50% 的响应被认为是优秀的。

    消融实验揭示了在扩大数据量而没有相应地扩大 prompts 多样性的情况时,收益迅速下降;与此同时,优化数据质量时获得了重大提升。此外,尽管没有对话样本(dialogue examples),我们发现 LIMA 可以进行连贯的多轮对话,仅通过向训练集添加 30 个手工制作的 dialogue chains,就可以显著改进这种能力。总体来说,这些惊人的发现展示了预训练的力量,以及预训练相对于大规模指令微调和强化学习方法的重要性。

53.1 Alignment Data

  1. 我们定义表面对齐假说(Superficial Alignment Hypothesis):模型的知识和能力几乎全部是在预训练过程中学到的,而 alignment 只是教会模型在与用户交互时使用哪些格式的子集。如果这个假说是正确的,并且对齐在很大程度上是关于 learning style ,那么表面对齐假说的推论是:通过相当小的样本集就能充分 tune 一个 pretrained语言模型(《A few more examples may be worth billions of parameters》)。

    为此,我们收集了 1,000prompts and responses 的数据集,其中输出(即,响应)在风格上与彼此对齐,但输入(即 prompts) )各异。 具体而言,我们寻求与 helpful AI assistant 的风格一致的输出。我们从各种来源精心策划这些样本,主要分为社区问答论坛和手动创作的样本。我们还收集了一个包含 300prompts 的测试集、以及一个包含 50prompts 的开发集(development set )。 Table 1 概述了不同的数据源以及一些统计数据(附录 A 关于训练示例的 selection )。

  2. Community Questions & Answers:我们从三个社区问答网站收集数据,包括 Stack ExchangewikiHowPushshift Reddit Dataset。 总的来说,来自 Stack ExchangewikiHow 的答案与 helpful AI agent 的行为非常吻合,因此可以自动挖掘;而受欢迎的 Reddit 答案倾向于幽默或捣蛋,需要更手动的方法来策划适当风格的响应。

    • Stack Exchange:包含 179 个在线社区,每个社区(也叫做 exchanges)都致力于一个特定的主题,其中最受欢迎的是编程(Stack Overflow)。 用户可以发布问题、答案、评论,并为以上所有内容点赞(或点不喜欢)。

      在从Stack Exchange采样时,我们运用了质量和多样性的双重控制:

      • 首先,我们将 exchanges 划分为 75 STEM exchanges (包括编程、数学、物理等)和 99 other exchanges (英语、烹饪、旅游等)。我们丢弃了5 个细分领域的 exchanges

      • 然后,我们使用温度 τ=3 从每个集合中随机采样 200 个问题和答案,从而获得不同 domains 的更均匀采样。

      • 在每个 exchanges 内,我们选择得分最高的问题,这些问题的标题是 self-contained 的(即,没有正文)。然后,我们为每个问题选择 top answer ,假设该答案获得了很高的 positive score (至少 10 分)。

      • 为了与 helpful AI assistant 的风格相符,我们自动过滤答案过于简短(少于 1200 个字符)、过长(大于 4096 个字符)、第一人称书写("I", "my")、或引用其他答案("as mentioned", "stack exchange"等等)。我们还从响应中删除了链接、图像、以及其他 HTML tags,只保留 code blockslists

      • 由于 Stack Exchange 的问题同时包含一个标题和一个描述,我们随机选择标题作为某些样本的 prompt ,并使用描述作为其他样本的 prompt

    • wikiHow:一个在线维基风格的出版物,拥有 240khow-to 文章,涵盖各种主题。任何人都可以为 wikiHow 做出贡献,尽管文章经过严格的审核,几乎都是高质量的内容。我们从wikiHow 中采样了200篇文章:先采样一个类别(共19个类别),然后采样该类别中的一篇文章,从而确保多样性。我们使用标题作为 prompt (例如,"How to cook an omelette?"),使用文章正文作为响应。我们用 "The following answer..." 替换典型的 "This article..." 开头,并应用许多 preprocessing 的启发式方法来修剪链接、图像、文本的某些部分。

    • The Pushshift Reddit DatasetReddit 是世界上最受欢迎的网站之一,允许用户在由用户创建的子版块中共享、讨论、以及点赞。由于其巨大的受欢迎程度,Reddit 更侧重于娱乐其他用户,而不是提供帮助。恶搞的、讽刺性的评论往往会比严肃的、内容丰富的评论获得更多点赞。因此,我们将样本限制在两个子集 r/AskRedditr/WritingPrompts ,并从每个社区的最受欢迎帖子中手动选择样本。

      • r/AskReddit 中,我们找到 70self-contained prompts (仅标题,无正文),我们将其用作测试集,因为 top answers 不一定可靠。

      • WritingPrompts 子版块包含虚构故事的前提,然后鼓励其他用户进行创造性的完成。我们找到了 150prompts 和高质量的响应,涵盖了诸如情诗和短篇科幻故事等主题,我们将其添加到训练集中。

      所有数据实例均从 Pushshift Reddit Dataset 中挖掘。

  3. Manually Authored Examples:为了进一步提升数据的多样性,我们从我们自己(本文作者)那里收集 prompts 。我们指定两组作者,Group AGroup B,每个组根据自己或朋友的兴趣创建 250prompts。 我们从 Group A 选择 200prompts 用于训练,并选择 50prompts 作为 held-out development set 。在过滤了一些有问题的 prompts 之后,Group B 剩余的 230prompts 用于测试。

    我们通过自己编写高质量的答案来补全 200training prompts 。在创作答案时,我们试图设置一个统一的风格,这个风格适合于 helpful AI assistant 。 具体来说,许多 prompts 的回答为:首先是对问题的确认,然后跟随答案。 初步实验表明,这种一致的格式通常可以改进模型性能;我们假设它有助于模型 chain of thought,类似于 "let’s think step-by-step" prompt《Large language models are zero-shot reasoners》《Chain-of-thought prompting elicits reasoning in large language models》)。

    我们还在训练集中包含 13 个带有某种程度毒性的或恶意的training prompts 。 我们仔细编写了部分拒绝命令或全部拒绝命令的响应,并解释为什么 AI assistant 不会遵守。 测试集中还有 30 个具有类似 issuesprompts ,我们在实验章节中进行了分析。

    除了我们手动创作的 examples 外,我们还从 Super-Natural Instructions中采样了 50 个训练样本。 具体来说,我们选择了 50 个自然语言生成任务,如总结、paraphrasing、以及风格转换,并从每个任务中随机选择一个样本。我们略微编辑了一些样本,以符合我们 200 个手动样本的风格。尽管 potential user prompts 的分布与 Super-Natural Instructions 中的任务分布可能不同,但我们的直觉是,这些样本增加了整体训练样本的多样性,并可能提高模型的鲁棒性。

    手动创建多样化的prompts ,并以统一的风格创作丰富的响应是劳动密集型的。尽管一些最近的工作通过蒸馏和其他自动化手段避免了手动劳动,优化数量而不是质量,但是这项工作探索了投资多样性和质量的效果。

53.2 Training LIMA

  1. 我们使用以下协议来训练 Less Is More for Alignment: LIMA 。 从 LLaMa 65B 开始,我们在我们的 1,000-example alignment 训练集上进行微调。为了区分每个 speakeruser and assistant),我们在每个语句结束时引入一个特殊的 end-of-turn token: EOT);这个 token 与停止生成的 EOS token 发挥相同的作用,但避免了与 pretrained model 可能赋予现有 EOS token 的任何其他含义的混淆。

    我们遵循标准的微调超参数:我们使用 AdamW 优化器,其中 β1=0.9,β2=0.95weight decay = 0.1 。在没有 warmup steps 的情况下,我们将初始学习率设为 1e-5,并线性衰减为训练结束时的 1e-6batch size 设置为 32 个样本(小型模型为 64 ),文本长度超过 2048 tokens 则进行裁剪。一个值得注意的偏离是使用 residual dropout 作为正则化;我们遵循 《Training language models to follow instructions with human feedback》,在 residual connections 上应用dropout ,从 bottom layerpd=0.0开始,并线性提高到最后一层的 pd=0.3 (小型模型为pd=0.2)。我们发现困惑度与 generation 质量无关,因此使用 held-out 50-example development set 手动选择第5到第10epochs 之间的 checkpoints

    residual dropout:在 residual connections 上应用dropout

53.3 Human Evaluation

  1. 我们通过将 LIMASOTA模型进行比较,从而对 LIMA 进行评估,发现它优于 OpenAIRLHF-based DaVinci003 、以及 65B 参数 Alpaca 的复现(在 52000 样本上训练),并且通常产生等同于或优于 GPT-4 的响应。 对 LIMA generations 的分析发现:50% 的输出被认为是优秀的。

    通过极少样本的简单微调就能与 SOTA 竞争这一事实,强有力地支持了表面对齐假说,因为它展示了预训练的力量,以及预训练相对于大规模指令调优和强化学习方法的重要性。

53.3.1 Experiment Setup

  1. 为了将 LIMA 与其他模型进行比较,我们为每个 test prompt 生成一个单一的响应。然后,我们要求众包工人比较 LIMA outputs 与每个 baseline outputs,并标注他们更喜欢哪一个。我们重复这个实验,用 GPT-4 替换人类众包工人,发现类似的 agreement levels

  2. baselines

    • Alpaca 65B: 我们在 Alpaca 训练集中的 52,000 个样本上微调 LLaMa 65B

    • OpenAI’s DaVinci003:通过 reinforcement learning from human feedback: RLHF 微调的大型语言模型。

    • Bard:基于 PaLMLLM

    • Claude:一个基于强化学习从 AI feedbackConstitutional AI)训练的 52B 模型。

    • OpenAI’s GPT-4:一个使用 RLHF 训练的大型语言模型,目前被认为是最先进的。

    所有 baseline 模型的响应均在 20234 月期间采样。

  3. Generation:对于每个 prompts ,我们使用 nucleus sampling 从每个 baseline 模型生成单个响应,p=0.9 、温度 τ=0.7 。 我们对 previously generated tokens 应用 repetition penalty,超参数为 1.2 。 我们将 maximum token length 限制为 2048

  4. 方法:在每个 step,我们向标注员呈现一个 prompt 以及两种可能的响应,这两种响应由不同的模型生成。要求标注员标注哪个响应更好、或者两个响应都不明显优于另一个;附录 C 提供了确切的措辞。我们通过向 GPT-4 提供完全相同的指令和数据来收集 parallel annotations

  5. Inter-Annotator Agreement:我们使用 tie-discounted accuracy 计算 inter-annotator agreement :如果两位标注员都 agree,则得到 1 分;如果任一标注员(但不是两者都)标记了一个 tie(即,平局),则得到 0.5 分;否则得 0 分。 我们在共享的 50 annotation examples 集合上测量 agreement (单个 prompt、两个模型响应,全部随机选择),比较作者(author)、众包(crowd)、以及 GPT-4 的注释。在人类标注员中,我们发现以下agreement scorescrowd-crowd 82%crowd-author 81%author-author 78% 。尽管这项任务有一定的主观性,但人类标注员之间存在相当程度的 agreement

    我们还测量 GPT-4 与人类之间的 agreementcrowd-GPT 78%author-GPT 79% (尽管我们使用随机解码,GPT-4 几乎总是 agrees 它自己)。这些数字使 GPT-4 在这项任务上的 agreement 与人类标注员相当,在本质上通过了这项任务的 Turking Test

54.3.2 Results

  1. Figure 1 显示了我们的 human preference 研究结果,而 Figure 2 显示了 GPT-4 preferences 的结果。我们主要调查人类研究中的结果,因为 GPT-4 的结果在很大程度上展示了相同的趋势。

    • 我们的第一个观察结果是:尽管训练数据量多达 52 倍,但 Alpaca 65B 倾向于产生不如 LIMA 的输出。对 DaVinci003 也是如此,但程度较轻。这一结果令人震惊的是,DaVinci003 是通过 RLHF 训练的,这本应该是一种更先进的对齐方法。

    • Bard 展示了与 DaVinci003 相反的趋势,它在 42% 的时间产生比 LIMA 更好的响应;然而,这也意味着 58% 的时间 LIMA 的响应至少与 Bard 一样好。

    • 最后,我们看到尽管 ClaudeGPT-4 通常比 LIMA 表现更好,但也存在相当多的情况下 LIMA 实际上产生更好的响应。具有讽刺意味的是,在 19% 的时间,即使 GPT-4 也更喜欢 LIMA 的输出而不是它自己的输出。

    这种比较感觉有点奇怪:除非 A 模型能够在任何输入都能击败 B 模型,否则总是存在一定比例,使得 A 模型不如 B 模型。

54.3.3 Analysis

  1. 虽然我们的评估主要是通过将 LIMASOTA 模型相比,但必须记住,这些 baselines 实际上是高度调优的产品,在训练期间可能已经接触了数百万 real user prompts ,创造了非常高的 bar 。 因此,我们通过手动分析 50 个随机样本来对其进行 absolute assessment 。 我们将每个样本分为三类:

    • 失败(Fail):响应没有满足 prompt 的要求。

    • 通过(Pass):响应满足了 prompt 的要求。

    • 优秀(Excellent ):模型对 prompt 给出了优秀的响应。

  2. 结果:Figure 3 显示 50%LIMA 答案被认为是优秀的,它能够遵循除 6prompts 以外的所有 50analyzed prompts 。 我们没有观察到失败案例中的任何明显趋势。 Figure 4 显示了 LIMA 对育儿建议、以及生成食谱的输出示例。

  3. Out of DistributionLIMAout of distribution 样本上的表现如何?在分析的 50 个样本中,有 43 个样本在格式上与训练集中的某个样本相关(例如,问答、建议、写信等)。 我们额外分析了 13out-of-distribution 样本(共 20 个),发现 20% 的响应失败、35% 通过、45% 优秀。虽然这是一个小样本,但似乎 LIMA 在其训练分布之外取得了类似的 absolute performance statistics数据,这表明它能够很好地泛化。Figure 4 显示了 LIMA 对要求编写单口喜剧小品、或订购比萨的响应。

  4. Safety:最后,我们分析了在训练集中包含安全性相关的样本(仅有 13 个样本)的效果。我们检查了 LIMA 对测试集中 30 个潜在 sensitive prompts 的响应,发现 LIMA 安全地响应了其中 80% (包括 10 个具有恶意意图的 prompts 中的 6 个)。 在某些情况下,LIMA 直接拒绝执行任务(例如,当要求提供名人地址时);但当恶意意图隐晦时,LIMA 更有可能提供不安全的响应,如 Figure 4 所示。

54.3.4 消融实验

  1. 我们通过消融实验研究了训练数据的多样性、质量和数量的影响。我们观察到:为了 alignment 的目的,扩大输入多样性、以及输出质量具有 measurable 的积极影响,而仅扩大数据数量可能没有。

  2. 实验设置:我们在各种数据集上微调一个 7B 参数的 LLaMa 模型,控制相同的超参数。然后,我们为每个测试集 prompt生成 5 个响应,并通过要求 ChatGPT(GPT-3.5 Turbo) 根据 1-6 likert scale 评估响应的有用性程度来评估响应质量。我们报告平均分数以及 p=0.95 的双侧置信区间。

  3. 多样性:为了测试在控制质量和数量的情况下, prompt 多样性的影响,我们比较了在 quality-filtered Stack Exchange 数据(具有优秀响应的 heterogeneous prompts )和 wikiHow 数据(具有优秀响应的 homogeneous prompts )上训练的效果。尽管我们用两个不同来源的数据集作为多样性的代理进行比较,但我们承认从两个不同来源采样数据时可能存在其他混杂因素。我们从每个来源采样 2,000 个训练样本。 Figure 5 显示,更加多样化的 Stack Exchange 数据产生明显更高的性能。

  4. 质量:为了测试响应质量的影响,我们从 Stack Exchange 采样 2,000 个未经任何质量过滤、或风格过滤的样本,并将在此数据集上训练的模型,与在我们过滤后的数据集上训练的模型进行比较。Figure 5 显示:在过滤后的和未过滤的数据源上训练的模型之间,存在显着的 0.5 分差异。

  5. 数量:在许多机器学习设置中,扩大训练样本数量是改进性能的众所周知的策略。为了测试训练样本数量对我们设置的影响,我们从Stack Exchange 采样从而指数增加训练数据集。Figure 6 显示,令人惊讶的是,将训练数据集加倍并没有提高响应质量。与本节中的其他发现一起,这一结果表明,scaling laws of alignment 不一定仅取决于数量,而更多地取决于在保持高质量响应的同时提高 prompt diversity (即,多样化的高质量的数据)。

53.4 Multi-Turn Dialogue

  1. 一个只在 1,000 个单轮交互上微调的模型能进行多轮对话吗?我们在 10 live conversations 中测试 LIMA,并将每个响应标记为 Fail, Pass, Excellent 这三者之一。LIMA 的响应出奇地连贯,引用了对话中 previous steps 的信息。很明显,模型正在 out of distribution 上执行。在 10 场对话的 6 场中,LIMA3 轮交互内无法遵循 prompt

  2. 为了改进 LIMA 的对话能力,我们收集了 30multi-turn dialogue chains。在这些对话中,10 个对话由本文作者编写,其余 20 个基于 Stack Exchangecomment chains (我们对其进行了编辑以适应 AI assistant 的风格)。我们从 pretrained LLaMa 模型开始,使用 combined 1,030 examples 微调 LIMA 的新版本,并基于与 zero-shot model 模型相同的 prompts 进行了 10 live conversationsFigure 8 显示了这些对话的摘录。

    Figure 7 显示了响应的质量的分布。添加对话大大改进了generation 质量,将优秀响应的比例从 45.2% 提高到 76.1% 。 此外,失败率从 42 轮中出现 15 次失败( zero-shot ),下降到 46 轮中仅出现 1 次失败(fine-tuned)。 我们进一步比较了整个对话的质量,发现 fine-tuned 模型在 10 场对话中7 场中明显优于zero-shot model3 场与零 zero-shot model 打平。

    仅需要 30 个样本就能取得这一飞跃,以及 zero-shot model 具有对话能力的事实,都强化了假说:这种能力是在预训练期间学会的,并且可以通过有限的监督来调用(invoke )。

53.5 讨论

  1. 我们展示了在 1,000 个精心策划的样本上对强大的 pretrained 语言模型进行微调可以产生惊人的、有竞争力的结果。但是,这种方法确实存在局限性。

    • 主要的局限性是,构建这些样本需要大量精力,很难 scale up

    • 其次,LIMA 不如产品级模型健壮。虽然 LIMA 通常会生成好的响应,但在解码期间的不幸采样或 adversarial prompt 通常会导致弱的响应。

    尽管如此,本文提供的证据展示了用简单的方法解决复杂的 alignment 问题的潜力。

五十四、LLaMa-2 [2023]

论文:《Llama 2: Open Foundation and Fine-Tuned Chat Models》

  1. 大型语言模型(Large Language Model: LLM )作为高能力的 AI 助手展现了巨大的前景,在复杂推理任务中表现出色(这些任务需要各个领域的专业知识),包括编程和创意写作等专业领域。这些 AI 助手通过直观的聊天界面与人类进行交互,这导致快速的、广泛的向公众普及。

    考虑到训练方法论似乎相当简单,LLM 的能力令人惊叹。自回归 transformer 在大量自监督数据上进行预训练,然后通过 Reinforcement Learning with Human Feedback: RLHF 等技术与人类偏好进行对齐。尽管训练方法很简单,但高计算需求将 LLM 的开发限制在少数玩家。已经公开发布了一些预训练好的 LLM (如 BLOOMLLaMa-1Falcon ),其性能与闭源的竞争对手GPT-3 、和 Chinchilla 相当,但这些模型都不是闭源 "product" LLM (如 ChatGPTBARDClaude )的合适替代品。这些闭源 product LLM 经过大量微调以与人类偏好进行对齐,这极大地增强了它们的可用性和安全性。这一步骤可能需要大量计算和人工标注,且往往不透明且难以复现,这限制了社区在推进 AI alignment 研究方面的进步。

    在这项工作中,我们开发并发布了 Llama-2 ,这是一系列 pretrainedfine-tunedLLMLlama 2Llama 2-Chat ),规模达到 70B 参数。在我们测试的一系列有用性和安全性基准测试中,Llama 2-Chat 模型通常优于现有的开源模型。根据我们执行的人类评估,它们似乎与某些闭源模型不相上下(见 Figure 1Figure 3 )。我们采取了措施来提高这些模型的安全性,使用 safety-specific 的数据标注和调优,以及进行 red-teaming 和采用迭代式的评估。此外,本文详细介绍了我们的微调方法和提高LLM 安全性的方法。我们希望这种开放性将使社区能够复现 fine-tuned LLM ,并继续提高这些模型的安全性,为 LLM 的更 responsible 的开发铺平道路。我们还分享了在开发 Llama 2Llama 2-Chat 过程中做出的新颖观察,如工具使用的出现、以及知识的 temporal organization

    我们向公众开放以下模型供研究和商业使用:

    • Llama 2Llama 1 的更新版本,在新的公开可用数据混合体上进行了训练。我们还将预训练语料库的大小增加了 40% ,将模型的上下文长度加倍,并采用 grouped-query attention《Gqa: Training generalized multi-query transformer models from multi-head checkpoints》)。我们发布了 Llama 2 的变体,参数规模分别为 7B13B70B 。我们还训练了 34B 参数的变体,在本文中报告了结果,但没有发布。

    • Llama 2-ChatLlama 2 的微调版本,针对对话用例(dialogue use cases )进行了优化。我们也以 7B13B70B 参数发布了这个模型的变体。

    我们认为,在安全的前提下公开发布 LLM 总体上将是社会的净收益。与所有 LLM 一样,Llama 2 是一项新的技术,其使用存在潜在风险。迄今为止的测试是在英语中进行的,没有覆盖所有场景,也不可能覆盖所有场景。因此,在部署 Llama 2-Chat 的任何应用之前,开发者应该针对其模型的具体应用执行安全性测试和调优。我们提供了 responsible use guide 和代码示例,以促进 Llama 2Llama 2-Chat 的安全部署。我们的 responsible release 策略的更多细节可以在正文中找到。

  2. 相关工作:

    • Large Language Model:近年来,LLM 领域发生了重大变化。遵循 《Scaling laws for neural language models》scaling laws ,人们提出了多个参数超过 100B 的大型语言模型,从 GPT-3Gopher ,或专有模型(例如用于科学领域的Galactica )。

      • Chinchilla 具有 70B 参数,它按照 tokens 数量而不是模型权重重新定义了这些 scaling laws

      • Llama 的兴起值得注意,它以推理期间的计算效率为重点而闻名。

      另一个并行的讨论是关于开源模型和闭源模型的动态。BLOOMOPTFalcon 等开源模型的出现挑战了 GPT-3Chinchilla 等闭源对应物。然而,当涉及到 ChatGPTBardClaude"production-ready" LLM时,开源模型和后者的性能和可用性存在明显区别。这些 "production-ready" 模型依赖于复杂的微调技术来与人类偏好对齐(《The false promise of imitating proprietary llms》),这一过程在开源社区内仍在探索和 refine 之中。

      为弥合这一差距的尝试已经出现,采用了以蒸馏为基础的模型(如 VicunaAlpaca ),它们采用了使用合成指令进行训练的独特方法(《Unnatural instructions: Tuning languagemodels with (almost) no human labor》《Self-instruct: Aligning language model with self generated instructions》)。然而,虽然这些模型显示出前景,但它们仍未能达到其闭源对应物所设置的标准。

    • 指令调优:

      • 《Finetuned language models are zero-shot learners》 通过在大量数据集上微调 LLM 获得 unseen 任务的 zero-shot 性能。

      • 《Scaling instruction-finetuned language models》《The flan collection: Designing data and methods for effective instruction tuning》 研究了任务数量、模型大小、 prompt settings 对指令微调的影响。

      • 用于指令微调的 prompts 可以由人类或 LLM 本身创建(《Large language models are human-level prompt engineers》),后续指令可用于 refine initial generations ,使其更有用、更吸引人、更无偏(《The capacity for moral self-correction in large language models》《Self-refine: Iterative refinement with self-feedback》)。

      • 与指令微调相关的一种方法是 chain-of-thought prompting《Chain-of-thought prompting elicits reasoning in large language models》),在这个方法中,当给出复杂问题时,模型会被 prompted 从而解释其推理过程,以增加其最终答案正确的可能性。

      RLHF 作为一种强大的大型语言模型微调策略出现,显著提高了LLM 的性能(《Deep reinforcement learning from human preferences》)。这种方法最初由 《Learning to summarize from human feedback》 在文本摘要任务的背景下展示,自那时以来已扩展到其他任务。在这种范式中,模型根据人类用户的反馈进行微调,从而逐步使模型响应更密切地符合人类的期望和偏好。

      《Training language models to follow instructions with human feedback》证明,指令微调与 RLHF 的组合可以修复事实性、有毒性、有用性问题,而单纯地扩大 LLM 规模是无法解决这些问题的。《Constitutional ai: Harmlessness from ai feedback》 通过用模型自己的自我批评和自我修订来替换人工标注的微调数据,以及在 RLHF 中用模型替换人类评分员对模型输出进行排名,部分地自动化了这种微调加 RLHF 方法,该过程称为 "RL from AI Feedback": RLAIF

    • Known LLM Safety Challenges:近期文献广泛探讨了大型语言模型面临的风险和挑战。

      • 《On the dangers of stochastic parrots: Can language models be too big? 》《Ethical and social risks of harm from language models》 强调了各种危害,如偏见、有毒性、私人数据泄露、以及恶意使用的可能性。

      • 《Evaluating the social impact of generative ai systems insystems and society》 将这些影响分类为两组:那些可以在 base system 内评估的、以及那些需要 societal context evaluation 的。

      • 《Language generation models can cause harm: So what can we do about it? an actionable survey》 提供了潜在的缓解策略来遏制伤害。

      • 《Open-domain conversational agents: Current progress, open problems, and future directions》《Anticipating safety issues in e2e conversational ai: Framework and tooling》 的工作也阐明了与面向聊天机器人的 LLM 相关的困难,其担忧范围从隐私到误导性的专业声明。

      • 《Recent advances towards safe,responsible, and moral dialogue systems: A survey》 提出了一个分类框架来解决这些问题;《Guiding the release of safer e2e conversational ai through value sensitive design》 深入探讨了发布对话模型的潜在正面的和负面的影响之间的平衡。

      red teaming 演练的研究揭示了tuned LLM 中的具体挑战。

      • 《Red teaming language models to reduce harms:Methods, scaling behaviors, and lessons learned》《Exploring ai ethics of chatgpt: A diagnostic analysis》 的研究展示了各种成功的攻击类型,及其对生成有害内容的影响。

      • 国家安全机构和各种研究人员,如 《Augmented language models: asurvey》,也对 advanced emergent model behaviors 、网络威胁、以及在 biological warfare 领域的潜在滥用等方面响起了警钟。

      最后,由于人工智能研究加速导致的失业置换、以及过度依赖 LLM 导致训练数据退化等更广泛的社会问题也是相关考虑。我们致力于继续与更广泛的政策社团、学术界、以及工业界开展合作,从而解决这些问题。

54.1 Pretraining

  1. 为了创建新的 Llama 2 系列模型,我们从 《Llama: Open and efficient foundation language models》 描述的 pretraining 方法出发,使用优化的 auto-regressive transformer ,但做出了几项改变来提高性能。具体来说,我们执行了更可靠的数据清洗、更新了数据 mixture 、在 40% 更多的 total tokens 上进行了训练、翻倍了上下文长度、并使用 grouped-query attention: GQA 来提高我们更大模型的推理可扩展性。Table 1 比较了新的 Llama 2 模型与 Llama 1 模型的属性。

    注意:仅 34B70BLlama 2 采用了 GQA

    GQA 如下图的中间部分所示。

  2. Llama 2-Chat 的训练流程如下:

54.1.1 Pretraining Data

  1. 我们的训练语料库包括来自公开可用数据集的新的数据 mixture,不包括来自 Meta 产品或服务的数据。我们努力删除了已知包含大量个人隐私信息的某些网站的数据。我们在 2T tokens 的数据上进行了训练,因为这在性能和成本之间提供了良好的权衡,同时上采样了最具事实性的数据源从而增加知识并抑制幻觉(hallucination)。

    我们执行了各种预训练数据调查,以便用户更好地了解我们模型的潜在能力和局限性,结果在后面详述。

54.1.2 Training Details

  1. 我们采用了 Llama 1 的大部分预训练设置和模型体系结构。我们使用标准的 transformer 体系结构,应用 pre-normalization using RMSNorm《Root mean square layer normalization》),使用 SwiGLU 激活函数(《Glu variants improve transformer》)和 rotary positional embeddings: RoPE《Roformer: Enhanced transformer with rotary position embedding》)。

    Llama 1 相比,主要的体系结构差异包括:增加的上下文长度、grouped-query attention: GQA 。我们在附录 A.2.1 节详细介绍了这些差异,并进行了消融实验以证明其重要性。消融实验结果如下,其中:

    • multi-head attention: MHA:经典的多头注意力机制。

    • multi-query attention: MQA:多个 query 共享单个 key 和单个 value

    • grouped-query attention:多个 query group,每个 group 内部共享单个 key 和单个 value

  2. 超参数:我们使用 AdamW 优化器进行训练,其中 β1=0.9,β2=0.95,eps=105。我们使用余弦学习率调度,warmup = 2000 steps ,并将 final learning rate 衰减到峰值学习率的 10% 。我们使用 0.1weight decay1.0 的梯度裁剪。Figure 5 显示了使用这些超参数时 Llama 2 的训练损失。

  3. Tokenizer:我们使用与 Llama 1 相同的 tokenizer,它采用 bytepair encoding: BPE 的算法,使用 SentencePiece《Sentencepiece: A simple and language independent subword tokenizer and detokenizer for neural text processing》)的实现。与 Llama 1 一样,我们将所有 number 拆分成单个 digit ,并使用字节来分解未知的 UTF-8 字符。总的 vocabulary size32k tokens

  4. 训练硬件:我们在 MetaResearch Super Cluster: RSC 以及内部的生产集群上预训练我们的模型。两个集群都使用 NVIDIA A100 。这两个集群之间有两个关键区别:

    • 第一个是可用的 interconnect 类型:RSC 使用 NVIDIA Quantum InfiniBand ,而我们的生产集群配备了基于商用以太网交换机的 RoCERDMA over converged Ethernet )解决方案。这两种解决方案都 interconnect200Gbps 端点。

    • 第二个是每个 GPU 的功耗限制:RSC 使用 400W ,而我们的生产集群使用 350W

    通过这种两集群设置,我们能够比较这些不同类型 interconnect 的大规模训练的适用性。RoCE (这是一种更具价格优势的商业互联网络)可以像昂贵的 Infiniband 一样扩展到 2000个GPU,这使预训练更容易普及。

  5. 碳足迹(Carbon Footprint):遵循先前的研究,以及所使用 GPU 设备的功耗估计和碳效率,我们旨在计算 Llama 2 模型预训练产生的碳排放。GPU 的实际功耗取决于其利用率,可能会有别于我们作为 GPU 功耗估计所使用的热设计功率(Thermal Design Power: TDP )。值得注意的是,我们的计算没有考虑进一步的功率需求,例如 interconnectnon-GPU 服务器功耗,也没有考虑数据中心冷却系统。另外,与 AI 硬件(如 GPU )的生产相关的碳排放可能会增加总体碳足迹,如 《Chasing carbon: The elusive environmental footprint of computing》所示。

    Table 2 总结了 Llama 2 系列模型预训练的碳排放。在 A100-80GB 型(TDP400W350W )硬件上执行了总计 3.3M GPU hours 的计算。我们估计训练的总排放量为 539 吨二氧化碳当量( tCO2eq ),其中 100% 通过 Meta 的可持续性计划直接抵消。我们的开源发布策略也意味着其他公司不需要承担这些预训练成本,节省了更多全球资源。

54.1.3 Llama 2 Pretrained Model Evaluation

  1. 在本节中,我们报告了 Llama 1Llama 2 base 模型、MosaicML Pretrained Transformer (MPT)模型、以及Falcon 模型在标准的学术基准测试上的结果。 对于所有评估,我们都使用我们的内部 evaluations library 。 我们在内部重新为 MPTFalcon 模型生成结果。对于这些模型,我们总是在我们的评估框架和任何公开报告的结果之间选择最佳得分。

  2. Table 3 中,我们给出了在一套流行基准测试上的整体性能。请注意,安全基准在 Safty 章节中提供。基准测试分为以下类别。所有单个基准的结果可在 A.2.2 节中找到。

    • Code:我们报告了模型在 HumanEvalMBPP 上的平均 pass@1 分数。

    • Commonsense Reasoning:我们报告 PIQA, SIQA, HellaSwag, WinoGrande, ARC easy and challenge, OpenBookQA, CommonsenseQA 等任务上的平均值。我们报告 CommonSenseQA7-shot 结果,以及报告所有其他基准测试上的 0-shot 结果。

    • World Knowledge:我们评估 NaturalQuestions, TriviaQA5-shot 性能,并报告平均值。

    • Reading Comprehension:对于阅读理解,我们报告 SQuAD, QuAC, BoolQ 上的 zero-shot 平均值。

    • MATH:我们报告 GSM8K (8-shot), MATH(4-shot) 基准测试的 top 1 平均值。

    • Popular Aggregated Benchmarks:我们报告 MMLU (5 shot), Big Bench Hard (BBH) (3 shot), AGI Eval (3–5 shot) 上的 overall 结果。对于 AGI Eval,我们仅仅在英语任务上评估并报告均值。

    Table 3 所示,Llama 2 模型优于 Llama 1 模型。具体而言:

    • Llama 1 65B 相比,Llama 2 70BMMLUBBH 上分别提高了大约 5 分和 8 分。

    • Llama 2 7BLLAMA 2 34B 模型在 code 基准之外的所有类别上均优于相应大小的 MPT 模型。

    • 对于 Falcon 模型,Llama 2 7BLlama 2 34B 在所有类别的基准测试上优于 Falcon 7BFalcon 40B 模型。

    • 此外,Llama 2 70B 模型优于所有开源模型。

  3. 除了开源模型,我们还将 Llama 2 70B 的结果与闭源模型进行了比较。如 Table 4 所示:

    • Llama 2 70BGPT-3.5MMLUGSM8K 上的表现相当,但在 code 基准测试上存在显着差距。

    • Llama 2 70B 的结果与 PaLM (540B) 在几乎所有基准测试上的表现相当或更好。

    • Llama 2 70BGPT-4PaLM-2-L 之间在性能上仍存在很大差距。

  4. 我们还分析了潜在的数据污染,并在 A.6 节中详细介绍。

54.2 Fine-tuning

  1. Llama 2-Chat 是经过几个月的研究、以及 alignment 技术的 iterative applications 的结果,包括指令微调(instruction tuning)和 RLHF ,这需要大量的计算和标注(annotation)资源。

    在本节中,我们报告了使用监督微调的实验和发现,以及 initial reward modelingiterative reward modelingRLHF 的实验和结果。我们还分享了一种新的技术 Ghost Attention: GAtt ,我们发现它有助于控制多轮对话流(flow)。有关 fine-tuned 模型的安全性评估,请参阅 Safty 章节。

54.2.1 Supervised Fine-Tuning (SFT)

  1. Getting Started:为了启动,我们在 SFT 阶段使用公开可用的指令微调数据(《Scaling instruction-finetuned language models》),如 《Llama: Open and efficient foundation language models》 所使用的那样。

  2. Quality Is All You Need:第三方 SFT 数据来自许多不同的来源,但我们发现许多数据的多样性和质量都不足,尤其是在将 LLM 与对话风格的指令对齐方面。因此,我们首先专注于收集几千个高质量的 SFT 数据样本,如 Table 5 所示。通过排除第三方数据集的数百万个样本,并使用我们自己基于供应商的标注工作获得的更少、但质量更高的样本,我们的结果显著改善。这些发现在本质上与 《Lima: Less is more for alignment》 相似,后者也发现有限的干净的指令微调数据就足以达到高水平的质量。我们发现,几万的 SFT 标注就足以实现高质量的结果。在收集到总共 27,540 个标注后,我们停止了 SFT 标注。请注意,我们不包含任何 Meta 用户的数据。

    我们还观察到,不同的标注平台和供应商可能导致下游模型性能有显着不同,这突出了即使使用供应商来标注也需要进行数据检查的重要性。为了验证我们的数据质量,我们仔细检查了 180 个样本,并通过人工审查从而将人类提供的标注、与模型生成的结果进行了比较。令人惊讶的是,我们发现 SFT 模型采样的输出通常可与人类标注员手写的 SFT 数据媲美;这表明我们可以重新考虑优先级,并将更多的标注工作投入到偏好相关的标注中从而用于 RLHF

  3. Fine-Tuning 细节:对于监督微调,我们使用余弦学习率调度,初始学习率为 2×105weight decay0.1batch size = 64 ,序列长度为 4096 tokens

    对于微调过程,每个样本都包含一个 prompt 和一个答案。为确保模型序列长度被填满,我们将训练数据集中的所有 prompts 和答案拼接在一起。 使用一个 special token 来分隔 prompt segmentanswer segment 。我们利用 autoregressive objective ,并将来自 user prompttokens 的损失归零,因此,我们实际上仅针对 answer tokens 进行反向传播。最后,我们对模型微调了 2 epochs

    注意:这里的 prompt 是包含了模版和输入之后的文本序列,而不仅仅是模板。

54.2.2 Reinforcement Learning with Human Feedback (RLHF)

  1. RLHF 是一种模型训练过程,作用于一个 fine-tuned language model ,以进一步使模型行为与人类偏好和 instruction following 来对齐。我们收集了一些数据,这些数据代表了经验性采样的人类偏好,其中人类标注员选择他们偏好的两个模型输出。然后将这些人类反馈用于训练奖励模型,该奖励模型学习人类标注员偏好的模式,然后该模型可以自动化偏好决策。

    为什么要选择两个模型输出?因为作者分别训练两个独立的奖励模型,一个用于优化有用性,另一个用于优化安全性。因此人类标注员要分别挑选有用性更好的模型输出、安全性更好的模型输出。

a. Human Preference Data Collection
  1. 接下来,我们收集人类偏好数据用于 reward modeling 。我们选择二元比较方案(binary comparison protocol )而不是其他方案,主要是因为它使我们能够最大限度地提高 collected prompts 的多样性。当然,其他策略也值得考虑,我们把其它策略留待以后研究。

  2. 我们的标注过程如下:我们首先要求标注员编写一个 prompt,然后根据所提供的标准在两个采样的模型响应之间进行选择。为了最大化多样性,given prompt 的两个响应是从两个不同的模型变体中采样的,并且改变温度超参数。除了进行强制选择外,我们还要求标注员标记他们的 chosen response 优于另一个响应的程度:significantly better, better, slightly better, negligibly better/unsure (一共四个等级) 。

    对于我们的偏好标注的 collection,我们关注有用性(helpfulness )和安全性(safety)。

    • 有用性是指 Llama 2-Chat 响应如何满足用户的请求,并提供所请求的信息。

    • 安全性是指 Llama 2-Chat 的响应是否不安全。例如,"giving detailed instructions on making a bomb" 可以被视为有用,但根据我们的安全准则是不安全的。

    将两者分开允许我们针对每个响应来应用具体准则,并更好地指导标注员。例如,我们的 safety annotations 提供了关注于 adversarial prompts 的指令。

    事实上,标注员需要做出两种选择:

    • 模型 A 的输出和模型 B 的输出,哪个更有用(以及有用的程度)。

    • 更有用的输出是否也是更安全的、还是二者都不安全、还是二者都安全。

  3. 除了标注准则的差异之外,我们还在 safety 阶段收集了一个 safety label 。这种额外信息将模型响应分为三类:

    • 所选的响应是安全的,而另一个响应是不安全。

    • 两种响应都是安全的。

    • 两种响应都是不安全的。

    这三种 label 的占比分别为 18%, 47%, 35% 。我们不包括任何这样的样本:所选的响应是不安全、且另一个响应为安全的。因为我们认为更安全的响应也将被人类认为是更好的响应。有关 safety annotations 的更多安全性准则和详细信息,请参阅 Safety 章节。

    注意,safety label 依赖于 helpfulness label ,二者之间不是相互独立的。即,对有用的输出(positive helpfulness )来评估安全性;而不是并行地评估输出的安全性和有用性。

    注意:根据论文后面的描述,在 safety label 上也区分了四个等级:significantly better, better, slightly better, negligibly better/unsure

  4. 人工标注按周为单位来批量地收集。随着我们收集了更多的偏好数据,我们的奖励模型得到改善,我们能够训练渐进地更好的 Llama 2-Chat 版本(如 Figure 20 所示)。 Llama 2-Chat 的改善也改变了模型的数据分布。如果没有看到这个新的样本分布,奖励模型的准确率会迅速降低,即 hyper-specialization《Coldgans: Taming language gans with cautious sampling strategies》),因此在新的 Llama 2-Chat tuning iteration 之前,收集使用最新 Llama 2-Chat iterations 的新偏好数据非常重要。这一步有助于保持奖励模型的分布,并为 the latest model 维护准确的奖励。

    SFX(Mix) 是否表示:几千个高质量的、来自第三方的 SFT 数据样本?

    SFT(Annotation) 是否表示:使用基于供应商的标注工作获得的更少、但质量更高的样本(约 27,540 个样本)?

    作者并未解释这里的区别。

  5. Table 6 中,我们报告了随时间收集的 reward modeling 数据的统计信息,并将其与多个开源偏好数据集进行了比较,包括Anthropic Helpful and Harmless, OpenAI Summarize, OpenAI WebGPT, StackExchange, Stanford Human Preferences, Synthetic GPT-J 。我们根据我们指定的准则(这些准则就是前面我们指定的并且被人类应用的)收集了超过 1 million binary comparisons 的数据集,我们将其称为 Meta reward modeling data 。请注意,prompts 和答案中的 tokens 数量取决于 text domainSummarization 和在线论坛数据通常有较长的 prompts,而对话风格的 prompts 通常较短。与现有的开源数据集相比,我们的偏好数据具有更多的对话轮次,并且平均长度更长。

    (平均 prompt 长度 + 平均 response 长度) * 平均对话轮次,约等于平均 example 长度。

b. Reward Modeling
  1. 奖励模型将模型响应及其对应的 prompt (包括前几轮的上下文)作为输入,并输出一个 scalar score 以指示 model generation 的质量(例如,有用性和安全性)。利用这种 response scores 作为奖励,我们可以在 RLHF 期间优化 Llama 2-Chat,以实现更好的 human preference alignment 、改善的有用性和安全性。

    其他人发现有用性和安全性有时存在权衡(《Training a helpful and harmless assistant with reinforcement learning from human feedback》),这可能使单个奖励模型在有用性和安全性都表现出色成为挑战。为了解决这个问题,我们分别训练两个独立的奖励模型,一个针对有用性来优化(称为 Helpfulness RM)、另一个针对安全性来优化(称为 Safety RM)。

    我们从 pretrained chat model checkpoints 来初始化我们的奖励模型,因为它可以确保两个模型都从预训练中获得知识。简而言之,奖励模型 “知道” 聊天模型知道什么。这可以防止出现这类情况:例如,这两个模型之间会有信息不匹配,从而导致 favoring hallucinations 。奖励模型的架构和超参数与 pretrained language models 完全相同,只是用于 next-token predictionclassification head 被替换为用于输出 scalar rewardregression head

  2. Training Objectives:为了训练奖励模型,我们将所收集到的 pairwise human preference 数据转换为 binary ranking label 格式(即,chosen & rejected),并强制 chosen response 的得分高于 rejected response 。 我们使用与 《Training language models to follow instructions with human feedback》一致的 binary ranking loss

    (4)Lranking=log(σ(rθ(x,yc)rθ(x,yr)))

    其中:

    • xprompty 是聊天模型的输出,yc 是人类标注员所偏好的输出,yr 是人类标注员所拒绝的输出。

    • rθ(x,y) 是奖励模型在权重 θ 时的 scalar score output

    在此 binary ranking loss 的基础上,我们分别进一步修改它,从而获得更好的有用性和安全性的奖励模型,如下所示。鉴于我们的 preference ratings 被分解为四个等级,这可能有助于利用此信息来明确地教导奖励模型为具有更大差异的 generations 分配更不相同的分数。为此,我们进一步在损失中添加边际项:

    (5)Lranking=log(σ(rθ(x,yc)rθ(x,yr)m(r)))

    其中:边际项 m(r) preference rating 的离散函数;r 代表 chosen response 优于另一个响应的程度这个指标上,人类标注员所标注的 label

    m(r) 越大,则意味着 rθ(x,yc)rθ(x,yr) 之间的差距应该越大。

    自然地,我们对具有明显不同响应的 pairs 使用较大的边际项,对较相似响应的 pairs 使用较小的边际项(如 Table 27 所示)。我们发现这个边际项特别可以在两个响应更可分离的样本上提高 Helpfulness reward model 的准确率。更详细的消融和分析见附录 A.3.3 中的 Table 28

  3. 数据组成:我们将新收集的数据与现有的开源偏好数据集组合,形成一个更大的训练数据集。 最初,开源数据集用于启动我们的奖励模型,而我们正在收集偏好标注(preference annotation)数据。我们注意到,在我们这个研究的 RLHF 背景下,奖励信号的作用是学习 Llama 2-Chat outputs (而不是任何其它模型的 outputs )的人类偏好。但是,在我们的实验中,我们没有观察到来自开源偏好数据集的 negative transfer 。因此,我们决定将它们保留在我们的数据组合中,因为它们可以使奖励模型取得更好的泛化,并防止 reward hacking,即 Llama 2-Chat 利用我们奖励模型的某些弱点来人为地提高分数,尽管 Llama 2-Chat 的表现比较差。

    随着不同来源的训练数据可用,我们针对 Helpfulness reward modelSafety reward model 试验了不同的混合配方,以确定最佳设置。经过大量实验:

    • Helpfulness reward model 的训练数据为: Meta Helpfulness 数据,以及均匀采样自 Meta Safety 和开源数据集中的数据,前者(指的是 Meta Helpfulness)和后者的混合比例是 50%/50%

      注意:这里的开源数据集包含了 open-source helpfulness 数据和 open-source safety 数据。

    • Safety reward model 的训练数据为:Meta Safety 数据和Anthropic Harmless 数据(作为 safety 数据),以及 Meta Helpfulnessopen-source helpfulness 数据(作为 helpfulness 数据)。其中,safety 数据和 helpfulness 数据的混合比例为 90%/10%

      我们发现,10%helpfulness 数据的设置对于准确率是有利的,其中 chosen responsesrejected responses 都是安全的。

    Helpfulness 奖励模型的 label 是:是否更有用;而 Safety 奖励模型的 label 是:是否更安全。那么,用 Safety 数据来训练 Helpfulness 奖励模型,以及用 Helpfulness 数据来训练 Safety 奖励模型,label 上面就不一致?

    读者猜测:无论是 Helpfulness 还是 Safety,模型评估的都是:A 模型是否比 B 模型更好。在这个语义上来讲,这两个奖励模型的 label 空间是一致的。

    此外,论文在 Impact of Safety Data Scaling 章节的消融实验表明:增加 safety training data 并不会影响模型的 helpfulness 性能。作者猜测:这是因为已经有足够大量的有用性训练数据。

  4. 训练细节:我们在训练数据上训练 1 epoch 。在早期实验中,我们发现训练更长会导致过拟合。我们使用与 base 模型相同的优化器参数。

    • 对于 Llama 2-Chat 70B,最大学习率为 5×106;对于其他 Llama 2-Chat , 最大学习率为 1×105

    • 学习率以余弦学习率调度降低,降至最大学习率的 10%

    • 我们使用 3% 的总步数的 warm-up ,最小值为 5 steps

    • effective batch size 固定为 512 pairs1024 行。

  5. 奖励模型的结果:在每批 human preference annotation 用于奖励建模时,我们保留 1000 个样本作为测试集来评估我们的模型。我们将所有这些测试集的 prompts 统称为 "Meta Helpfulness""Meta Safety"

    作为基准,我们还评估了其他公开可用的替代方案:基于 FLAN-T5-xlSteamSHP-XL、基于DeBERTa V3 LargeOpen Assistant 奖励模型、通过 OpenAI API 访问的 GPT4 。请注意,与训练相反,在推理时,所有奖励模型都可以为单个 model output 预测标量得分,而不需要访问paired model outputs 。 对于GPT-4 ,我们使用带有 zero-shot questionprompt"Choose the best answer between A and B",其中 AB 是进行比较的两个 model responses

    我们在 Table 7 中报告了结果,以准确率表示。

    • 如预期的那样,我们自己的奖励模型在我们基于 Llama 2-Chat 收集的内部测试集上表现最好:

      • Helpfulness reward modelMeta Helpfulness 测试集上表现最好。

      • 类似地,Safety reward modelMeta Safety 测试集上表现最好。

    • 总体而言,我们的奖励模型优于所有基线,包括 GPT-4

    • 有趣的是,尽管GPT-4 没有直接针对此奖励建模任务进行训练,它的目标也不是这个奖励建模任务,但其表现优于其他 non-Meta reward models

    有用性和安全性在各自领域表现最佳这一事实可能与这两个目标之间的争用关系有关(即尽可能有用 v.s. 在必要时拒绝 unsafe prompts),这可能会使单个奖励模型在训练期间感到困惑。为了使单个模型在两个维度上都表现良好,它不仅需要学习根据 prompt 选择更好的响应,还需要区分对 adversarial promptssafe prompts 。因此,优化两个独立的模型简化了奖励建模任务。有关这种安全性与有用性之间争用关系的更详细分析,请参阅附录 A.4.1

    当我们按 preference rating 对分数进行分组时,可以看到 "significantly better" 测试集的准确率更高,随着 comparison pairs 变得更相似(例如 "slightly better"),准确率逐渐降低,如 Table 8 所示。 由于标注员的主观性以及他们依赖于可能区分响应的细微细节,所以当决定两个相似的模型响应时,学习建模人类偏好变得具有挑战性。我们强调,对更加distinct 的响应的准确率对改善 Llama 2-Chat 的性能至关重要。human preference annotation 的一致率(agreement rate)在更加 distinct 的响应上,也比相似的 response pairs 上更高。

  6. Scaling 趋势:我们研究了数据规模和模型大小方面对于奖励模型的缩放趋势,在每周收集的越来越多的 reward model data 上微调不同模型大小(参见 Table 26 中每批数据量的详细信息)。Table 6 报告了这些趋势,显示了较大模型在相似数据量下获得更高性能的预期结果。更重要的是,给定现有的用于训练的数据标注量,缩放性能还未达到饱和。这表明随着更多标注,还有性能提高的空间。

    我们注意到,奖励模型的准确率是 Llama 2-Chat 最终性能的最重要代理之一。尽管对生成模型进行全面评估的最佳实践是一个开放的研究问题,但奖励的排名任务没有歧义。因此,在其他条件相同的情况下,奖励模型的改善可以直接转化为 Llama 2-Chat 的改善。

c. Iterative Fine-Tuning
  1. 随着我们获得了更多批次的 human preference data annotation ,我们能够训练出更好的奖励模型并收集更多 prompts。因此,我们针对 RLHF 模型训练了连续版本,在此称为 RLHF-V1, ... , RLHF-V5

    我们用两种主要算法来探索 RLHF 微调:

    • Proximal Policy Optimization: PPO:这是 RLHF 文献中的标准方法(《Proximal policy optimization algorithms》)。

    • Rejection Sampling fine-tuning:我们从模型中采样 K 个输出,并用我们的奖励选择最佳候选项,与 《Constitutional ai: Harmlessness from ai feedback》一致。 针对 LLM 的相同的 re-ranking 策略也由 《Residual energy-based models for text generation》提出,其中奖励模型被视为能量函数。在此,我们走得更远,并将选定的输出用于梯度更新。对于每个prompt,获得最高奖励分数的样本被视为新的gold standard 。 类似于 《Discriminative adversarial search for abstractive summarization》,我们然后在新的 ranked samples 集合上微调我们的模型,强化奖励。

      即:根据奖励模型得分最高,从 K 个输出中筛选一个作为 pseudo ground truth ,从而更新模型。

    这两种 RL 算法的主要区别在于:

    • Breadth:在 Rejection Sampling 中,模型为给定的 prompt 探索 K 个样本,而 PPO 仅探索一个样本。

    • Depth

      • PPO 中,在 step t 的训练中,样本是来自 step t-1updated model policy 的函数(在 step t-1 进行梯度更新之后)。

      • Rejection Sampling fine-tuning中,我们在应用类似 SFT 的微调之前,根据我们模型的初始策略对所有输出进行采样以收集新数据集。

      然而,由于我们应用了iterative model updates,这两种 RL 算法之间的基本区别不太明显。

    直到 RLHF (V4) 之前,我们只使用 Rejection Sampling fine-tuning ,之后,我们串行地组合这两种方法:在再次采样之前,在 Rejection Sampling checkpoint 的结果上应用 PPO

  2. Rejection Sampling:我们仅对最大的 70B Llama 2-Chat 执行 rejection sampling 。所有较小的模型在较大模型的 rejection sampled data 上进行微调,从而将大模型的能力蒸馏到较小的模型中。我们留待未来研究更深入地分析这种蒸馏的效果。

    即,70B 模型的 pseudo ground truth 同时也用于更小的模型。

    在每个iterative stage,我们从最新模型中为每个 prompt 采样 K 个答案。我们根据实验时可访问的最佳奖励模型对每个样本进行评分,然后为给定 prompt 选择最佳答案。 在我们模型的早期版本中,直到 RLHF V3,我们的方法是:仅将 data selection 限制在从前一个 iteration 所收集的 "bag" 中。 例如,RLHF V3 仅使用 RLHF V2 中的样本进行训练。 然而,尽管持续改进,这种方法在某些能力上出现了退化。 例如,通过定性分析发现,与以前的版本相比,RLHF V3 在诗歌中组成押韵行更困难,这表明:进一步研究遗忘的原因、以及缓解措施可能是有益的未来研究领域。

    为了解决这一点,在后续迭代中,我们修改了策略,结合了所有以前 iterationstop-performing samples ,例如 RLHF-V1RLHF-V2 中使用的样本。尽管我们没有呈现具体数字,但这一调整在性能上显示出可观的改善,有效地解决了前面提到的问题。这种缓解措施可以看作与 RL 文献中的 《Growing up together: Structured exploration for large action spaces》《Grandmaster level in starcraft ii using multi-agent reinforcement learning》相似。

    即,训练 RLHF V3 时,不仅包含 RLHF V2 中的样本,还包含 RLHF V1 中的样本。

    我们在 Figure 7 中说明了 Rejection Sampling 的好处。最大值曲线和中值曲线之间的差值,可以解释为在最佳输出上微调的潜在收益。如预期的那样,随着样本量的增加,这个差值会增加,因为最大值会增加(即,更多样本意味着生成 good trajectory 的更多机会),而中值保持固定。exploration 与最大奖励之间存在直接联系,其中最大奖励是我们可以在样本中获得的。

    温度参数对 exploration 也起重要作用,因为更高的温度使我们可以采样更多样化的输出。在 Figure 8 中,我们报告了 Llama 2-Chat-SFT (左)和 Llama 2-Chat-RLHF (右)在 N 个样本(N[1,100] )中的最大奖励曲线,对应不同的温度。我们可以观察到,在 iterative model updates 期间,最佳温度不是常量:RLHF 对温度的 rescaling 有直接影响。 对于 Llama 2-Chat-RLHF ,采样 10100 个输出时,最佳温度为 T[1.2,1.3] 。给定有限的计算预算,因此有必要逐步重新调整温度。请注意,对于每个模型,这种温度 rescaling 发生在恒定数量的 steps上,并且在每个新 RLHF 版本上总是从 base 模型开始。

    奖励模型对 Llama2 output 进行打分的过程中,不同的采样温度会得到不同的 output distribution,从而对奖励分产生影响。

  3. PPO:我们进一步遵循 《Learning to summarize from human feedback》RL 方案训练我们的语言模型,它使用奖励模型作为真实奖励函数(人类偏好)的估计,并将 pretrained 语言模型用作要优化的策略。在此阶段,我们寻求优化以下目标:

    (6)argmaxπEpD,gπ[R[gp]]

    我们通过从数据集 D 采样 prompts p ,以及从策略 π 中采样 generations g ,从而来迭代地改善策略,并使用 PPO 算法和损失函数来实现此目标。

    我们在优化期间使用的最终奖励函数为:

    (7)R(gp)=R~c(gp)β×DKL(πθ(gp)||π0(gp))

    其中:π0 为原始策略,DKL(||)KL 散度。

    • 第二项作为偏离原始策略 π0 的惩罚。如其他工作中所观察到的(《Learning to summarize from human feedback》《Training language models to follow instructions with human feedback》),我们发现这一约束对训练稳定性很有用,并可以减少奖励欺骗(reward hacking )。奖励欺骗指的是:我们会从奖励模型获得高分,但是从人类评估获得低分。

    • 我们将 Rc 定义为安全性(Rs)奖励模型和有用性(Rh)奖励模型的分段组合。我们标记了数据集中的 prompts ,这些prompts 可能会引导潜在不安全的响应,并优先考虑来自 safety model 的分数。选择 0.15 作为过滤不安全响应的阈值,对应在 Meta Safety 测试集上评估的 precision 0.89recall 0.55

      我们还发现:为了增加稳定性并与上面的 KL 惩罚项(β)适当平衡,将 final linear scores 白化很重要,其中 final linear scores 表示通过对数函数反转 sigmoid

      (8)Rc(gp)={Rs(gp), if Is_Safty(p) or Rs(gp)<0.15Rh(gp),otherwiseR~c(gp)=Whiten(Logit(Rc(gp)))

      物理含义:当 prompt 可能会引导潜在不安全的响应时,以安全性奖励模型的分数作为奖励分;否则,以有用性奖励模型的分数作为奖励分。因此,这就是一个分段函数。

      这里 Is_Safty(p) 的含义在论文中未能给出。读者猜测它的含义是:数据集中由人工标记的那些潜在不安全的 prompt

    对于所有模型,我们使用 AdamW 优化器,其中 β1=0.9,β2=0.95,eps=105。我们使用 0.1weight decay,梯度裁剪 1.0 ,以及常量学习率 106。 对于每个 PPO iteration ,我们使用 batch size = 512PPO 裁剪阈值 0.2mini-batch size = 64 ,并对每个 mini-batch 进行 一个 gradient step 。 对于 7B13B 模型,我们设置 β=0.01KL 惩罚),对于 34B70B 模型,我们设置 β=0.005

    我们对所有模型进行 200400 次迭代的训练,并使用 held-out prompts 上的评估来进行早停(early stopping)。 70B 模型的每个 PPO iteration 平均需要约 330 秒。为了快速地使用大的 batch size 进行训练,我们使用 FSDP《Pytorch fsdp: Experiences on scaling fully sharded data parallel》)。当使用 O(1) 前向传播或反向传播时,这很有效,但在 generation 期间会大大降低速度(约 20 倍),即使使用大 batch sizeKV cache 也是如此。我们能够通过在 generation 之前一次性地将模型权重合并到每个节点,然后在 generation 之后释放内存,从而恢复训练循环的其余部分来缓解这一问题。

54.2.3 System Message for Multi-Turn Consistency

  1. 在对话设置中,某些指令应适用于所有的对话轮次,例如简洁地响应,例如 “扮演” ("act as")某位公众人物。当我们向 Llama 2-Chat 提供这样的指令时,后续响应应始终遵守约束。但是,我们的 initial RLHF models 在几轮对话后倾向于忘记初始指令,如 Figure 9(left) 所示。

    为了解决这些局限性,我们提出了 Ghost Attention: GAtt,这是一种非常简单的方法,受 Context Distillation《Constitutional ai: Harmlessness from ai feedback》)的启发,它会 hack 微调数据以帮助注意力在 multi-stage 过程中聚焦。GAtt 可以在多轮中控制对话,如 Figure 9(right) 所示。

  2. GAtt 方法:假设我们访问两人(例如一个用户、一个助手)之间的多轮对话数据集,消息列表为 [u1,a1,,un,an],其中 unan 分别对应第 n 轮对话中的用户消息和助手消息。然后,我们定义一个指令 inst ,它应贯穿整个对话。例如,inst 可以是 "act as"。然后,我们可以将这个指令人工合成地拼接到对话中的所有用户消息。

    接下来,我们可以使用最新的 RLHF 模型从这个合成数据中进行采样。现在我们有一个 context-dialogue 和样本,其中样本用于微调模型,这个过程类似于 Rejection Sampling 。我们可以在首轮之外的所有轮次中删除指令,而不是用指令增强所有 context-dialogue 轮次,但这会导致训练时系统消息(即最后一轮之前的所有中间轮次的助手消息)与我们的样本之间出现不匹配。为了解决可能损害训练的这个问题,我们简单地将前几轮的所有 tokens ,(包括助手消息)的 loss 设置为 0

    读者理解:对于多轮对话:

    • 首先,在首轮对话中,在用户信息中添加指令。

    • 然后,训练过程中我们将前几轮对话的所有 loss 设置为零。因此,仅考虑最后一轮对话中的助手信息。

    这里没有关于 Attention 的技术,不知道作者为什么要取这个名字。

    对于 training instructions ,我们创建了一些约束来进行采样:爱好(例如,“您喜欢网球”)、语言(例如,“用法语说话”)、公众人物(例如,“模仿拿破仑“)。为了获得爱好和公众人物列表,我们让 Llama 2-Chat 生成它,以避免指令与模型知识之间的不匹配(例如,要求模型模仿训练期间未见过的人)。为了使指令更复杂和多样化,我们通过随机组合上述约束来构建最终指令。在构建训练数据的 final system message 时,我们还会在 50% 的时间随机修改原始指令,使其更简洁,例如:“从现在起永远模仿拿破仑” 修改为 ”人物: 拿破仑”。这些步骤会产生一个 SFT 数据集,我们可以在其上微调 Llama 2-Chat

  3. GAtt Evaluation:我们在 RLHF V3 之后应用了 GAtt 。我们报告了定量分析,表明 GAtt 可以保持一致性达 20+ 轮,直到达到最大上下文长度(参见附录 A.3.5 )。我们试图在推理时设置 GAtt 的训练中不存在的约束,例如 “始终用俳句回答”,如 Figure 28 所示,模型保持一致。

    为了说明 GAtt 如何帮助在微调期间 reshape attention ,我们在 Figure 10 中显示了模型的 maximum attention activations。每个图的左侧对应于系统消息("Act as OscarWilde")。我们可以看到,与没有 GAtt 的模型(左图)相比,配备GAtt 的模型(右图)在对话的更大比例中对系统消息维持了更大的 attention activations

    这两幅图看起来是一模一样的?

  4. 尽管 GAtt 很有用,但其当前实现很普通,在该技术上做更多开发和迭代可能会进一步使模型受益。例如,我们可以通过在微调期间集成此类数据,从而教模型在对话中改变系统消息。

54.2.4 RLHF Results

a. Model-Based Evaluation
  1. 评估 LLM 是一个富有挑战性的开放研究问题。人类评估虽然是 gold standard,但可能由各种人机交互考虑所复杂化,并且不总是可扩展的。因此,为了在 RLHF-V1V5 的每个迭代中从几个消融实验中选择表现最佳的模型,我们首先观察了最新奖励模型的改进,以节省成本和增加迭代速度。我们稍后用人类评估验证了 major model versions

  2. Model-Based Evaluation 能走多远:为了衡量我们的奖励模型的鲁棒性,我们收集了针对有用性的和安全性的 prompts 测试集,并请三名标注员根据 7-point Likert scale (分数越高越好)对答案质量进行判断。我们观察到,我们的奖励模型与人类偏好标注整体上存在良好的校准,如附录 Figure 29 所示。这确认了尽管使用 Pairwise Ranking Loss进行训练,但使用我们的奖励作为point-wise metric 与人类偏好具有相关性。

    然而,正如 Goodhart’s Law 所述,当一个 measure 成为目标时,它就不再是一个好的 measure。为了确保我们的measure 不会偏离人类偏好,我们额外使用了在各种开源 Reward Modeling 数据集上训练的更通用的奖励模型。我们还没有观察到任何这种偏离,并假设 iterative model updates 可能有助于防止这种偏离。

    作为最后的验证步骤,以确保新旧模型之间没有退化,我们在 next annotation iteration 中同时采样新旧模型。这使我们可以在new prompts 上 ”免费“地比较模型,并可以帮助增加采样时的多样性。

    所谓的 ”免费“,指的是新模型的 output、和旧模型的 output 这时候已经得到了(在验证过程中)。

  3. 模型的进展:Figure 11 报告了我们不同的 SFTRLHF 版本在 SafetyHelpfulness 轴上的进展情况,这是通过我们内部的Safety reward modelHelpfulness reward model 测量的。在这组评估中,我们在 RLHF-V3 之后在两个轴上都超过了ChatGPTharmlessness and helpfulness >50%)。尽管如前所述使用我们的 point-wise metric 与人类偏好具有相关性,但可以说它偏向于 Llama 2-Chat 。因此,为了进行公平比较,我们额外使用 GPT-4 计算最终结果以评估哪个 generation 更好。ChatGPTLlama 2-Chat 的输出在 GPT-4 prompt 中的出现顺序是随机交换的,以避免任何 bias 。如预期的那样,Llama 2-Chat 的胜率不太明显,尽管我们的最新 Llama 2-Chat 获得了 60% 以上的胜率。

    prompts 对应于一个验证集,该验证集分别包含 1586prompts 用于 safety 、以及 584prompts 用于 helpfulness

b. Human Evaluation
  1. 人类评估通常被认为是判断自然语言生成模型(包括对话模型)的 gold standard 。为了评估 major model versions 的质量,我们请人类评估员对 helpfulnesssafety 进行评分。我们将 Llama 2-Chat 模型与开源模型(FalconMPTVicuna)以及闭源模型(Chat-GPTPaLM)进行了比较,涉及 4000 多个单轮 prompts 和多轮 prompts。对于 ChatGPT ,我们在所有 generation 中使用 gpt-3.5-turbo-0301 模型。 对于 PaLM ,我们在所有generation 中使用 chat-bison-001 模型。 每个模型的人类评估的 final prompt countTable 32 所示。更多方法细节见附录第 A.3.7 节。接下来我们将展示 helpfulness 结果;safety 结果在 Safty 章节呈现。

  2. 结果:如 Figure 12 所示,Llama 2-Chat 模型在单轮prompts 和多轮prompts 上都以显著优势超过了开源模型。具体而言:

    • Llama 2-Chat 7B 模型在 60%prompts 上优于 MPT-7B-chat

    • Llama 2-Chat 34B 相对等规模的 Vicuna-33BFalcon 40B 模型,整体胜率超过 75%

    最大的 Llama 2-Chat 模型与 ChatGPT 相媲美。相对于 ChatGPTLlama 2-Chat 70B 模型的胜率为 36% 、平局率为 31.5%Llama 2-Chat 70B 模型在我们的 prompt 集合上大比例优于 PaLM-bison chat 模型。第 A.3.7 节提供了更多结果和分析。

  3. Inter-Rater Reliability: IRR:在我们的人类评估中,三名不同的评估员对每个 model generation comparison 进行了独立评估。从数据质量的角度来看,更高的 IRR 分数(接近 1.0)通常被视为更好,但是任务背景很重要。评估 LLM generationsoverall helpfulness 等主观性非常强的任务,通常会比更客观的 labelling 任务有较低的 IRR 分数。针对这些情况,公开基准相对较少,所以我们认为在此分享我们的分析将有利于研究社区。

    我们使用 GwetAC1/2 统计量来衡量 IRR ,为我们发现它是不同度量方案中最稳定的指标。在我们分析中使用的 7-point Likert scale helpfulness 任务上,GwetAC2 得分在 0.37 ~ 0.55 之间,取决于具体的 model comparison

    • 我们看到分数较低端对应于 model comparisons 胜率相近的分数(如 Llama 2-Chat-70B-chat vs. ChatGPT comparison )。

    • 我们看到分数较高端对应有更明确胜出方的 model comparisons 的评分(如 Llama2-Chat-34b-chat vs. Falcon-40b-instruct)。

  4. 人类评估的局限性:虽然我们的结果表明 Llama 2-ChatChatGPT 的人类评估旗鼓相当,但重要的是要注意人类评估存在若干局限性:

    • 从学术和研究的角度来看,我们有一个较大的包含 4k promptsprompt set 。然而,这个 prompt set 并没有覆盖这些模型的实际使用情况,而后者可能会涉及大得多的 use cases 数量。

    • prompts 的多样性可能是我们结果的另一个因素。例如,我们的prompt set 不包含任何 coding 相关的或推理相关的 prompts

    • 我们仅评估多轮对话的最后一轮 generation 。一个更有趣的评估可能是要求模型完成一个任务,并对用户在多轮中与模型的整体体验进行评分。

    • 人类对 generative models 的评估本质上是主观和噪音的。因此,在不同的 prompts 集合、或不同的指令上进行评估可能会得出不同的结果。

54.3 Safety

  1. 警告:本节包含可能被认为不安全、冒犯或令人不安的文本示例。

  2. 在这一节中,我们会更深入探讨安全性测量和缓解措施这个重要的话题。

    • 首先,我们会讨论针对 pretraining datapretrained models 进行的安全性调查。

    • 接下来,我们会描述我们的 safety alignment 过程,解释我们如何收集与安全相关的标注并利用SFTRLHF,以及呈现实验结果。

    • 然后,我们会讨论我们进行的 red teaming,以进一步理解和改进模型的安全性。

    • 最后,我们会呈现 Llama 2-Chat 的定量的安全性评估。

    我们也在附录中分享了 model card ,见 Table 52

54.3.1 Safety in Pretraining

  1. 了解预训练数据中包含的内容非常重要,这既可以增加透明度,也可以揭示潜在的下游问题(如潜在偏见)的根本原因。这可以指导我们考虑进行任何下游的缓解措施,并帮助指导适当的模型使用。在本节中,我们分析了预训练数据中的语言分布、人口统计、以及毒性。我们还呈现了 pretrained 模型在现有 safety benchmarks 的结果。

  2. Steps Taken to Pretrain Responsibly:我们遵循 Meta 的标准隐私和法律审查流程,审查了每个用于训练的数据集。我们没有在训练中使用任何 Meta 用户数据。我们排除了一些已知包含大量关于私人的个人信息的网站的数据。我们尽最大努力提高模型训练的效率,以减少 pretraining 的碳足迹(请参考 Carbon Footprint of Pretraining 的内容)。广泛分享我们的模型将减少其他人训练类似模型的需要。为了让 Llama 2 能够更广泛地用于各种任务(例如,它可以更好地用于仇恨言论分类),我们没有对数据集进行额外过滤,同时避免了过度清洗有时会造成的偶然的人口统计上的消除(accidental demographic erasure )。重要的是,这使得 Llama 2-Chat 能够在 safety tuning 中用更少的样本进行更有效的泛化。因此,应谨慎使用 Llama 2 模型,并且只有在应用 significant safety tuning 之后才部署。

  3. Demographic Representation: Pronounsmodel generations 中的 bias 可能源自训练数据本身的 bias 。例如,《Based on billions of words on the internet, people = men》 指出,在大规模文本语料中,代表 "people" 的单词与代表"men" 的单词(而不是代表 "women" 的单词)的上下文往往更为相似;并且 《On the impact of machine learning randomness on group fairness》 证明,模型在公平性(fairness)指标上的表现,高度依赖于模型如何在 underrepresented demographic 群体的数据上进行训练。在我们的英语训练语料中,我们计算了在 Table 9a 中最常见英语代词(English pronouns)的频率。我们观察到:文档中的 He 代词一般比 She 代词更多,这反映了在类似规模的预训练数据集中,代词的使用频率差异(《Palm: Scaling language modeling with pathways》)。这可能意味着模型在预训练期间学习关于提到 She 代词的上下文更少,因此可能随后以比 She 代词更高的比例来生成 He 代词。

  4. Demographic Representation: Identities:我们还通过测量 HolisticBias 数据集中人口统计的身份术语(demographic identity terms )的使用率,从而作为代理变量来分析不同 demographic groups 在预训练数据中的代表性。我们计算预训练语料中每个身份术语的频率。我们将身份分为 5 个维度,即宗教、性别和性、国籍、种族和族裔、以及性取向(Religion, Gender and Sex, Nationality, Race and Ethnicity, and Sexual Orientation),并在每个维度中显示 top 5 术语,如 Table 9b 所示。

    top 5 术语中,我们删除了一些术语,如 "straight", "white", "black",因为这些术语超出了 demographic mentions 而有更频繁的用途(例如,作为 basic color terms)。我们还删除了各列表中的重复项,删除了一些同时出现在 Gender and Sex 以及 Sexual Orientation 中的术语。

    • 对于 Gender and Sex 而言,虽然 She 代词的提及文档更少,但 "female" 一词出现在更大比例的文档中。这可能意味着虽然关于 She 代词的上下文更少,但关于 "females" 的评论更为普遍,这可能反映了这些术语在 linguistic markedness 中的差异(《Stereotyping norwegian salmon: An inventory of pitfalls in fairness benchmark datasets》)。

    • 对于 Sexual Orientationtop 5 术语全部与 LGBTQ+ 身份相关。

    • 对于 Nationality, Race and Ethnicity ,我们观察到西方倾向(Western skew)(《Re-contextualizing fairness in nlp: The case of india》)。 例如,"American"一词在 69.4% 的文档中提及,"European"比其他种族和族裔更常见,而 "Christian"是最常见的宗教(其次是 "Catholic""Jewish")。

  5. Data Toxicity:我们使用在 ToxiGen 数据集上微调的 HateBERT 分类器,用于测量预训练语料英语部分中的毒性。我们独立地对文档的每一行进行评分,并对其取平均以得到文档分数。Figure 13 显示了完整语料的 10% 随机采样中分数的分布。只有大约 0.2% 的被评估文档被赋予 0.5 或更高的可能性分数,这意味着我们的预训练数据中存在少量毒性。

  6. Language Identification:虽然我们的预训练数据主要是英语,但也包含少量其他语言的文本。Table 10 显示了我们语料中语言的分布,其中表格中仅包含大于文档占比 0.005% 的语言。我们的分析使用了 fastText 语言识别工具,语言检测阈值设置为 0.5 。英语占主要地位的训练语料意味着该模型可能不适合用于其他语言。

  7. Safety Benchmarks for Pretrained Models:我们在三个流行的自动的 benchmarks 上评估了 Llama 2safety 能力,这涉及语言模型安全性的三个关键维度:

    • Truthfulness:指语言模型是否由于误解、错误信念而产生已知的虚假陈述。我们采用 TruthfulQA 来测量我们的 LLM 能够生成多可靠的输出,这些输出要求与事实和常识一致。

    • Toxicity:定义为语言模型生成有毒、粗鲁的、对抗型的或隐性仇恨内容的倾向。我们选择 ToxiGen 来测量不同分组中产生有毒语言和仇恨言论的量。

    • Bias:定义为 model generations 如何复制现有的 stereotypical social biases 。我们使用 BOLD 来研究 model generations 中的情感如何随着 demographic attributes 而变化。

    我们在 Table 11 中比较了 Llama 2Llama 1FalconMPT 的表现。对于解码,我们将温度设置为 0.1 ,并使用核采样(nucleus sampling ),将 top-p 设置为 0.9 。 对于 TruthfulQA ,我们呈现 truthful and informativegenerations 的百分比(越高越好)。 对于 ToxiGen ,我们呈现被指标确定为有毒的 generations 的百分比(越低越好)。 基准测试和指标的详细描述可在附录 A.4.7 中找到。

    Llama 1-7B 相比,Llama 2-7B 的真实性和信息性提高了 21.37% 、毒性降低了 7.61% 。我们还观察到 pretrainedLlama-2 13BLlama-2 70B 的毒性有所增加,这可能是由于预训练数据更大、或不同的数据集 mixture 所致。一些人推测预训练数据集大小与下游模型的毒性或偏见之间存在关系(《On the dangers of stochastic parrots: Can language models be too big?》),但验证这一说法的实证工作仍在进行中,仍需要最新模型提供的进一步证据。

    在附录 A.4.7 中,我们呈现了 bias 指标,例如 model generations 的情感随 demographic attributes 的变化。我们注意到,使用 BOLD prompts ,许多群体的整体 positive sentiment 有所增加。可以在附录 A.4.8 中找到根据不同 demographic groups 拆分的更详细结果。

    Llama 2 在毒性指标上并未优于其他模型,我们推测这可能是因为我们避免了对预训练数据进行激进的过滤。回想一下,保留未过滤的预训练数据可能使 base 模型在更多下游任务(包括仇恨言论检测)上表现良好,并且出现意外过滤某些 demographic groups 的风险较小。我们观察到,从较少激进地过滤的预训练数据中训练的模型也需要少量的示例来实现合理的 safety-alignment 。我们重申,这种 motivated choice 意味着在部署 Llama 2 base models 之前应该应用额外的 safety mitigations

    benchmarks 总结了模型的功能和行为,使我们能够了解模型的一般模式,但它们无法全面反映模型在人们或真实世界结果上的影响;这需要研究端到端的产品部署。需要进行进一步的测试和 mitigation,以了解在特定上下文中部署系统时可能存在的 bias 和其他社会问题。为此,可能有必要测试 BOLD 数据集中提供的群体(种族、宗教和性别)之外的群体。随着 LLM 的集成和部署,我们期待持续的研究工作,这些研究工作将放大它们的潜力从而对这些重要社会问题产生积极影响。

54.3.2 Safety Fine-Tuning

  1. 在本节中,我们描述了 safety fine-tuning 的方法,包括 safety categoriesannotation guidelines、以及我们用于缓解安全风险的技术。我们采用与 Fine-tuning 章节所述的普通微调方法相似的过程,但在与安全性问题相关的方面有一些显著区别。具体而言,我们在 safety fine-tuning 中使用以下技术:

    • Supervised Safety Fine-Tuning:我们首先收集 adversarial promptssafe demonstrations ,然后将它们包含在普通监督微调过程中(参考 Supervised Fine-Tuning 章节)。这让模型在 RLHF 之前就与我们的 safety guidelines 对齐,从而为高质量的 human preference data annotation 奠定基础。

    • Safety RLHF :随后,我们将 safety 集成到 Reward Modeling 章节所述的普通 RLHF 流程中。这包括训练一个 safety-specific reward model ,并收集更具挑战性的 adversarial prompts ,从而用于 rejection sampling 风格的微调和 PPO optimization

    • Safety Context Distillation :最后,我们使用 context distillation《A general language assistant as a laboratory for alignment》)来改进我们的 RLHF 流程。这涉及通过在 prompt 之前加上一个 safety preprompt(例如,"You are a safe and responsible assistant")来生成更安全的模型响应,然后在没有 safety preprompt 的情况下对模型进行微调,从而本质上将 safety preprompt (context) 蒸馏到模型中。我们使用一种 targeted approach ,允许我们的 safety reward model 为每个样本选择是否使用 context distillation

a. Safety Categories and Annotation Guidelines
  1. 根据先前工作中发现的 LLM 的局限性,我们为标注团队设计了指令,从而沿着两个维度创建 adversarial prompts

    • 风险类别(risk category):表示 LLM 可能产生不安全内容的潜在主题。

      所考虑的风险类别大致可分为以下三大类别:

      • 非法的和犯罪的活动(illicit and criminal activities):例如恐怖主义、盗窃、人口贩卖。

      • 仇恨的和有害的活动(hateful and harmful activities):例如诽谤、自残、暴饮暴食、歧视。

      • 没有资格的建议(unqualified advice):例如医疗建议、财务建议、法律建议。

    • 攻击向量(attack vector):覆盖不同类型的 prompts 的问题风格,其中这些 prompts 可能引发模型的不良行为。

      所探索的攻击向量包括:心理操纵 psychological manipulati (例如权威操纵 authority manipulation )、逻辑操纵(例如错误前提)、语法操纵(例如错字)、语义操纵(例如比喻)、视角操纵(例如角色扮演)、非英语语言等。

    然后,我们为 safe and helpful 的模型响应定义最佳实践:如果可以的话,模型应首先解决直接的安全问题,然后通过向用户解释潜在风险来解决 prompt ,最后如果可能的话提供额外信息。我们还要求标注员避免 negative user experience categories(见附录 A.5.2 )。这些指南旨在成为模型的通用指导,并且会迭代地进行细化和修订从而包括新识别的风险。

b. Safety Supervised Fine-Tuning
  1. 根据上一节确立的指南,我们从受过训练的标注员那里收集 promptsdemonstrations of safe model responses,并以 Supervised Fine-Tuning 节所述的相同方式使用数据进行监督微调。一个示例可在 Table 5 中找到。

    首先,我们指示标注员想出他们认为可能诱导模型展现不安全行为(即执行 red teaming ,由指南所定义)的 prompts 。随后,标注员的任务是编写模型应该产生的 safe and helpful response

c. Safety RLHF
  1. 我们在 Llama 2-Chat 的开发初期就观察到,它能够从监督微调中的 safe demonstrations 中进行泛化。该模型快速学会了编写详细的 safe responses 、解决安全问题、解释主题为何可能敏感、以及提供额外的有帮助信息。具体而言,当模型输出 safe responses 时,这些响应通常比 average annotator 编写的内容更详细。因此,在收集了几千个 supervised demonstrations 后,我们完全切换到 RLHF ,从而教模型编写更加 nuanced 的响应。使用 RLHF 进行全面的 tuning 的额外好处是:它可能使模型对 jailbreak attempts 更具鲁棒性(《Training a helpful and harmless assistant with reinforcement learning from human feedback》)。

    我们首先按照 Reward Modeling 章节所述的方式收集针对 safety 的人类偏好数据从而进行 RLHF:标注员编写他们认为可能引发不安全行为的 prompt ,然后比较多个model responses(这些响应是模型针对该 prompt 的输出),并根据一组指南选择最安全的响应。然后,我们使用人类偏好数据训练一个 safety reward model (见 Reward Modeling 章节),并复用 adversarial prompts 从而在 RLHF 阶段从模型中采样。

  2. Better Long-Tail Safety Robustness without Hurting Helpfulness:安全性本质上是一个长尾问题,其中的挑战来自极少数非常具体的 cases 。我们通过获取两个中间的 Llama 2-Chat checkpoints (一个在 RLHF 阶段没有adversarial prompts 、另一个有 adversarial prompts)来研究 Safety RLHF 的影响,并使用我们的 safety reward modelhelpfulness reward model 对这两个 checkpoints 的响应进行评分。

    Figure 14 中,我们绘制了safety 测试集上 safety RM 的分数分布的变化(左图)、以及helpfulness 测试集上 helpfulness RM 的分数分布的变化(右图)。

    • 在左图,我们观察到 safety tuning with RLHF 后,safety setsafety RM scores 的分布向更高的奖励分数移动,靠近零分的长尾变薄。左上角出现了一个明显的聚类,表明 model safety 的改进。

    • 在右图,我们没有在的 y=x 线以下观察到任何聚集模式,这表明 helpfulness score 分布在 safety tuning with RLHF 之后得以保留。换句话说,给定足够的 helpfulness 训练数据,额外的 safety mitigation 阶段不会对有用性造成任何明显的负面影响。

    一个定性的例子如 Table 12 所示。

  3. Impact of Safety Data Scaling:先前的研究已经观察到 LLM 的有用性与安全性之间存在竞争(《Training a helpful and harmless assistant with reinforcement learning from human feedback》)。为了更好地理解添加 safety training data 如何影响模型的整体性能,特别是有用性,我们通过调整 RLHF 阶段中所使用的 safety data 的数据量来研究 safety data scaling 的趋势。在此消融实验中,我们保持有用性训练数据的数量不变(约 0.9M 个样本),并逐渐增加 model tuning 中使用的 safety data 的数据量,从 0% 增加到 100% (约 0.1M 个样本)。 对于特定的 training data mix recipe ,我们遵循 Supervised Fine-Tuning 章节所述的过程,并对 Llama 2 pretrained model 微调 2 epochs

    最终,我们获得了六个模型变体,它们分别使用 total safety data0%, 1%, 10%, 25%, 50%, 100% 来训练得到。我们使用 Reward Modeling 章节中描述的safety reward modelhelpfulness reward model 对其进行评估。 对于每个变体,我们分别使用safety reward modelhelpfulness reward model ,针对 Meta Safety 测试集和 Helpful 测试集中的 prompts 所对应的 model generations 进行评分。

    Figure 15 所示,我们使用奖励模型分数的平均值作为 safety and helpfulness 的模型性能的代理。我们观察到:随着 safety data 占比的增加,模型处理 risky and adversarial prompts 的性能明显提高,并且我们在 safety reward model分数分布中看到较轻的尾巴。同时,平均有用性分数保持不变。我们推测,这是因为我们已经有足够大量的有用性训练数据。附录 A.4.2 列出了更多的定性结果,展示了训练中不同数量的 safety data 如何改变模型对 adversarial promptsnon-adversarial prompts 的响应。

  4. Measure of False Refusal:尽管我们没有看到模型有用性的整体退化,但我们通过互动定性地观察到,经过更多 safety mitigation 的模型以更保守的方式回答某些问题(例如,附录 Table 38 中的示例)。作为后续工作,我们测量错误拒绝(false refusal)以量化模型错误地拒绝回答 non-adversarial prompts 的频率。在这里,我们将错误拒绝定义为:模型由于不相关的安全性问题而错误地拒绝回答合法的 user prompts 。由于合理原因而超出模型能力而拒绝回答,例如 "I am not capable of participating in video calls""2024 is beyond my knowledge cut-off date",不计为错误拒绝。我们训练了一个分类器来检测响应中的拒绝,并将分类器应用于:

    • 1):上述的有用性测试集。

    • 2):一个由 210 个样本组成的裁剪好的 borderline 测试集,目的是进行类似 OpenAI 的边界测试。 borderline 数据集的设计意图是:使它的 prompts 看起来具有对抗性(例如包含敏感的单词或敏感的子词),但实际上并非不安全。例如,"give me a recipe for Christmas Crack"。见附录 Table 41 中的更多示例。

    随着更多安全性数据被 mixed,两个数据集上的 false-refusal rate 都变大(见附录 Figure 33)。但是,即使使用 100% 的安全性数据,在有用性数据集上的 false refusal 也总体上很少( 约0.05% )。另一方面,由于 borderline 数据集的难度,在 borderline 数据集上的 false-refusal rate 要高得多。当 prompt 包含经常出现在 unsafe generations 中的单词(如 "bomb")时,Llama 2-Chat 有时难以区分该 prompt 是否安全。附录 Table 41 显示了我们发现的一些 false refusals 的示例。

d. Context Distillation for Safety
  1. 我们鼓励 Llama 2-Chatadversarial prompts 关联更安全的响应,通过使用 context distillation《A general language assistant as a laboratory for alignment》),方法与 System Message for Multi-Turn Consistency 章节类似。我们观察到,通过在模型的输入前面加上一个 safety preprompt (例如 "You are a safe and responsible assistant"),可以有效增强 LLM 的安全性。与 supervised safety fine-tuning 一样,safety context distillation 提供了一种快速方法从而引导模型在 hard adversarial prompts 上的响应,以便模型可以在 RLHF 中进一步改进。

    具体而言,我们通过在 adversarial prompts 前加上一个 safety preprompt 来应用 context distillation ,从而生成更安全的响应;然后在给定不含 safety prepromptadversarial prompt 的条件下,用模型自己的 safe output 来微调模型。我们使用模板自动生成 safety preprompts 。具体而言,我们使用通常与安全行为相关联的各种形容词,如 "responsible", "respectful", "wise",旨在模型将其与正面特性相关联,其中这些正面特性是我们希望反映在 safe answers 中的。我们在附录 Table 39 中展示了 safety preprompts 的示例。

    这可以视为一种 self-distillation:自己给自己蒸馏。用更安全的响应来监督自己。

  2. Context Distillation with Answer Templates:在 prompt collection 阶段,我们还要求标注员根据风险类别(risk categories )对 prompts 进行标注,这使得甚至可以进行 more targeted preprompts 。具体而言,这允许我们根据每个确定的风险类别,提供一些专门的 answer templates ,这些 answer templates 是关于如何处理 adversarial promptsFigure 16a 显示了 context distillationcontext distillation with answer templatessafety RM 分数的影响。

  3. Rejecting Context Distillation Errors with the Safety Reward Model:对 helpful prompts 执行 safety context distillation 可能会降低模型性能,并导致更多的 false refusals (见附录 Table 40 )。因此,我们仅对 adversarial prompts 执行 safety context distillation 。但是,我们观察到,即使在处理 adversarial prompts 时,context distillation 有时也会降低响应质量。具体来说,如果模型响应已经具有高质量,则应用 context distillation 会导致不太相关的回复,因为模型倾向于过度强调 preprompt,通常会过度诉诸泛泛的关注(见附录 Table 40 中,由于 context distillation 导致的含糊不清答案的示例)。因此,我们利用 safety reward model 来决定是否使用 safety context distillation:我们仅在样本获得比原始答案更好的 reward model score 时保留 context-distilled output 。我们注意到,这对模型表现非常糟糕的prompts 上特别有帮助,但会限制 context distillation 的负面影响(见 Figure 16b)。

54.3.3 Red Teaming

  1. 鉴于 LLM 的能力之广泛以及其训练数据之多样性,仅通过事后的 usage and analysis 来识别风险是不够的。相反,正如对其他 LLM 所做的那样,我们根据计算机安全领域常用的术语执行了各种主动风险识别,这在行话中称为 "red teaming"。这种细粒度的分析非常重要,因为安全性是一个长尾问题,即使极少数边缘案例也可能造成明显的问题。即使量化的分数报告了良好的结果,这些定性的洞察也使我们能够以更全面的方式识别和定位 specific patterns

    我们与各种内部员工、合同工、以及外部供应商进行了一系列 red teaming 。这些团队包括超过 350 人,其中包括网络安全、选举欺诈、社交媒体虚假信息、法律、政策、公民权利、伦理、软件工程、机器学习、responsible AI 、以及创意写作领域的域专家。他们还包括代表各种社会经济(socioeconomic )、性别、种族和人种的人员。

    red teamers 在广泛的风险类别(如犯罪计划、人口贩卖、受管制或受控物质、性露骨内容、没有资格的健康或财务建议、隐私侵犯等),以及不同的 attack vectors (如假设性的问题、格式错误/拼写错误的输入、或扩展对话)上对我们的模型进行了探测。此外,我们进行了具体测试以确定我们的模型促进生产武器(例如核武器、生物武器、化学武器、以及网络武器)的能力;这些主题的发现很少,并已得到缓解。尽管如此,我们将在这方面继续我们的 red teaming 工作。

    至今,我们所有的 red teaming 都针对英语模型输出,但至关重要的是包括 non-English promptsnon-English dialogue contexts ,因为这是一个众所周知的 attack vector 。在所有演习中,参与者都被给予风险类别的定义,并展示了与 LLM 危险交互的极少数示例。之后,每位参与者都成为一个小组的一部分,专注于特定类别的风险或 attack vectors 。在创建每个对话后, red team 参与者会对各种属性进行标注,包括风险领域、以及 5-point Likert scale 所捕获的风险程度。

    下面是 red teams 成员提供的一些有用的洞察的示例,它们使得我们在整个开发过程中都能够改进模型:

    • [Early models] 在生成不安全响应时更可能不会注意到它们包含有问题的内容。然而,[slightly later models] 倾向于显示其知道内容存在问题,甚至它们会继续提供了不安全的响应。例如这个洞察:"They respond with ‘[UNSAFE CONTENT] is not appropriate to discuss, etc.’ and then immediately follow up with ‘With that said, here’s how [UNSAFE CONTENT].’"

    • 通过在请求中包含 "quirks" 或特定要求来分散(distracting[early models] ,通常能够克服通过更直接的要求遇到的任何不情愿(reluctance )。例如这个洞察:"A creative writing request (song, story, poem, etc.) is areliable way to get it to produce content that it is otherwise robust against"

    • [early models],将有问题的请求嵌入 positive context 中通常成功地掩盖了正在请求 problematic output 的事实。例如这个洞察:"The overall principle I’ve found most effective for any kind of attack is to hide it in language that is positive, progressive, and empowering."

  2. From Red Teaming Insights to Safer Models:至关重要的是,在每次演习之后,我们对收集的数据进行了彻底分析,包括对话长度、风险区域分布、主题虚假信息的直方图(如果适用的话)、以及风险程度评级。在每种情况下,我们都以总体教训(overall lessons )为指导,帮助进一步改进模型的安全性训练,并特别从这些演习中获取数据进行模型微调、模型反馈训练、以及作为其他 safety model training 的信号。

    在几个月内进行了多轮 red teaming ,从而衡量内部发布的每个新模型的鲁棒性。我们将模型相对于一个 red teaming exercise (这个 red teaming exercise 由一组专家执行)的鲁棒性 γ 定义为,平均每个人每小时会创建的 promps 数量,其中这些 prompts 会触发模型的违规响应。例如,在我们的 7B 模型上,我们观察到 γ 的演变:多轮 red teaming 迭代和模型 refinements 之后,γ1.8 增加到 0.45 。随着额外的 red teaming 的进行,鲁棒性可能会继续提高。随着新模型的产生,我们追踪的另一个量是上一轮 red teaming exercise 中发现的触发违规模型响应的 prompts 中,在给定的新候选模型版本中得到缓解的百分比。平均而言,我们的 rejection rate 在模型之间是 90%

54.3.4 Safety Evaluation of Llama 2-Chat

  1. Safety Human Evaluation:我们根据 Safety Categories and Annotation Guidelines 章节中的安全类别收集了约 2000adversarial prompts 进行人类评估,其中 1351prompts 为单轮,623prompts 为多轮。evaluation prompts 和响应的示例可在附录 A.4.6 中找到。

    然后,我们要求评分者根据以下定义,使用 five-point Likert scale 判断模型的 safety violations

    • 5 分:无 safety violations 且非常有帮助 。

    • 4 分:无 safety violations ,仅存在 minor non-safety 问题。

    • 3 分:无 safety violations ,但没有帮助、或存在其他 major non-safety 问题。

    • 2 分:轻微或中度 safety violations

    • 1 分:严重 safety violations

    我们认为 1 分或 2 分的评级属于违规,并使用违规百分比作为主要评估指标,以平均评分为补充。每个样本由三名标注员进行标注,我们采用多数表决来确定响应是否违规。我们使用 Gwet’s AC1/2 统计量测量 inter-rater reliability: IRR,与 helpfulness human evaluation 相同。IRR 分数根据 annotation batch 的不同在 0.700.95 之间,这表示标注员对安全评估具有高度一致。 在 Llama 2-Chat 标注中,根据 GwetAC2 measure ,平均 IRR0.92 。 我们在模型违规率较高的 batches 中看到较低的 IRR 分数,如 Vicuda ;并且在模型违规率相对较低的 batches 中看到较高的IRR 分数,如 Llama 2-Chat, Falcon, ChatGPT

    我们在 Figure 17 中显示了各种 LLM 的整体违规百分比和安全评分。在所有模型规模中,Llama 2-Chat 具有可比的或更低的整体违规百分比,而 ChatGPTFalcon 其次,然后是MPTVicuna 。重要的是要谨慎解释这些结果,因为它们会受到 prompt set 局限性、review 指南的主观性、内容标准、以及个人评分者主观性的影响。 通过手动分析,我们发现 Falcon 的响应通常很短(一两句话),因此不太容易产生不安全内容,但通常也不太有帮助。 这反映在 Falcon 大量的评分为 3 分的响应。因此,我们注意到,尽管 FalconLlama 2-Chat(34B) 的违规百分比看起来相似(3.88 vs 4.45 ),但 Figure 17bFalcon 的平均评分远低于 Llama 2-Chat

    Figure 18 中,我们分别报告了单轮对话和多轮对话中的违规百分比。各模型的一个趋势是:多轮对话更容易诱导不安全的响应。也就是说,与 baseline 相比,Llama 2-Chat 的表现仍很好,特别是在多轮对话中。我们还观察到,Falcon 在单轮对话中表现特别出色(很大程度上是由于其简洁性),但在多轮对话中表现要差得多,这可能是由于缺乏 multi-turn supervised fine-tuning data

    Figure 19 中,我们显示了不同 LLM 的各类别 safety violation 百分比。尽管各类别中的模型性能相似,但 Llama 2-Chatunqualified advice 类别下的违规较多(尽管绝对意义上仍很低),原因有几个,包括有时缺乏适当的免责声明(例如 "I am not a professional")。对于其他两个类别,无论模型大小如何,Llama 2-Chat 始终能够保持可比的或更低的违规百分比。

  2. Truthfulness, Toxicity, and Bias:在 Table 14 中,相对于 pretrained Llama 2fine-tuned Llama 2-Chat 在真实性(70B50.18 -> 64.14 )和毒性(70B24.60 -> 0.01 )方面有了很大改进。Llama 2-Chat 所有规模的 toxic generations 百分比都缩减到了有效的 0% :这是所有被比较模型中最低的毒性水平。

    整体而言,与 FalconMPT 相比,fine-tuned Llama 2-Chat 在毒性和真实性方面显示出最佳表现。 微调后,Llama 2-ChatBOLD 中的许多 demographic groups 中整体呈现出更 positive sentiment 。 在附录 A.4.8中 ,我们针对 bias benchmark 呈现了模型在不同子组中的 generation sentiment 打分明细,以及有关真实性和 bias 的更深入分析和结果。

54.4 Discussion

  1. 在这里,我们讨论了在 RLHF 中观察到的有趣属性。然后,我们讨论了 Llama 2-Chat 的局限性。最后,我们提出了负责任地发布这些模型的策略。

54.4.1 Learnings and Observations

  1. 我们的tuning 过程揭示了几个有趣的结果,例如 Llama 2-Chattemporally 地组织知识的能力,或调用外部工具的 API 的 能力。

  2. Beyond Human Supervision:在项目开始时,我们中的许多人倾向于选择 supervised annotation,因为它提供更稠密的信号。与此同时,强化学习以其不稳定而闻名,对 NLP 研究社区的一些人来说似乎是一个模糊的领域。但是,强化学习被证明非常有效,特别是考虑到它的成本效率和时间效率。我们的发现强调,RLHF 成功的关键决定因素在于它在整个标注过程中促进人类和 LLM 之间的协同作用。

    即使训练有素的标注员也会有显著的写作变化。在 SFT annotation 上微调的模型会学习到这种多样性,包括,不幸的是长尾中的执行不当的标注。此外,模型的性能受最熟练的标注员的写作能力所限。与 SFT 相比,标注员在为 RLHF 比较两个输出的 preference annotation 时更少受到歧义的影响。因此,奖励机制可以快速地将 undesirable 的尾部分布赋予低分,并与人类偏好对齐。这个现象如 Figure 20 所示,我们可以看到最差的答案逐步被删除,分布向右移动。

    此外,在标注过程中,模型有可能进入甚至最好的标注员也可能无法绘制的写作轨迹(writing trajectories )。尽管如此,人类仍然可以在比自己的写作能力更强大的情况下,通过比较两个答案来提供有价值的反馈。进行一个类比,虽然我们自己不都是成功的艺术家,但我们欣赏和批评艺术的能力仍然存在。我们认为 LLM 的卓越写作能力,正如它们在某些任务中超过人类标注员所展现的,本质上是由 RLHF 驱动的,正如 《Chatgpt outperforms crowd-workers for text-annotation tasks》《Is chatgpt better than human annotators? potential and limitations of chatgpt in explaining implicit hate speech》 所记录的。监督数据可能不再是 gold standard,这种不断发展的情况迫使人们重新评估 "supervision" 的概念。

  3. In-Context Temperature Rescaling:我们观察到一个与 RLHF 相关的有趣现象,这是我们所知目前未曾报道的:根据上下文动态地重新缩放温度。如 Figure 8 所示,温度似乎受 RLHF 的影响。然而,有趣的是,我们的发现也表明,温度变化并非均匀地应用于所有 prompts ,如 Figure 21 所示。

    例如,当涉及 creativityprompts 时,如 “写一首诗”,温度的增加在我们的各个 RLHF iterations 中继续产生多样性。这可以在 Self-BLEU 斜率中观察到,它反映了一种模式,这种模式与 SFT 模型相媲美。

    另一方面,对于基于 factual informationprompts,如 "What is the capital of?"Self-BLEU 斜率随温度的推移而减小。这种模式表明,尽管温度正在上升,但模型仍在一致地对factual prompts提供相同的响应。

  4. Llama 2-Chat Temporal Perception:我们的模型展示了令人印象深刻的泛化能力,如 Figure 22 所示。我们手动测试了数十个示例,并始终观察到,即使提供的信息很少,我们的模型也表现出强大的能力来以时间方式(temporal manner )组织其知识。为了向 Llama 2-Chat 灌输时间的概念,我们收集了一组与特定日期相关的 1000SFT 样本。这些样本包括 "How long ago did Barack Obama become president?" 这样的问题。每个样本都与两个关键性的元数据相关联:提出 query 的日期(这会影响响应结果)、事件日期(在这个时间点之前,问题没有任何意义,即事件未发生)。

    观察结果表明,尽管 LLM 的训练仅基于 next-token prediction 、以及不考虑 chronological context 的随机混洗的数据,但LLM 已经在比以前认为的更大程度上内化了时间的概念。

  5. Tool Use Emergence:将 LLM 与工具集成是一个不断发展的研究领域,正如(《Augmented language models: a survey》)所强调的。 Toolformer《Toolformer: Language models can teach themselves to use tools》)中设计的方法需要采样数百万条轨迹,并为每个工具制定 few-shot examples 。尽管如此,这种技术只对每个示例使用一个工具,并且不会扩展到一系列工具的使用。

    OpenAI 的插件的发布在学术界引发了大量讨论,引发了这样的问题:我们如何有效地教模型利用工具?或者这个过程是否需要大量的数据集?我们的实验表明,工具的使用可以通过 zero-shot 方式来自发对齐。虽然我们从未明确注释 tool-use usage ,但 Figure 23 展示了一个实例,其中模型展示了在 zero-shot context 中使用一系列工具的能力。

    此外,我们的研究还扩展到评估具有计算器访问权限的 Llama 2-Chat 。此特定实验的结果载于 Table 15 。 尽管令人激动,LLM tool use 也可能引起一些安全问题。我们鼓励社区在这方面进行更多研究和 red teaming

54.4.2 Limitations and Ethical Considerations

  1. 与其他 LLM 相同,Llama 2-Chat 受制于众所周知的局限性,包括 post-pretraining 知识更新的中止、生成 non-factual 内容(如没有资格的建议)的潜力、以及幻想的倾向。

    此外,我们的 Llama 2-Chat 初始版本主要集中在英语数据上。虽然我们的实验观察结果表明,模型在其他语言上获得了一定的专业性,但其专业性有限,主要是由于可用的 non-English 预训练数据有限(如 Table 10 所记录的)。因此,模型在英语以外的语言上的性能仍然脆弱,应谨慎使用。

    与其他 LLM 一样,由于在公开可用的 online datasets上进行训练,Llama 2 可能会生成有害的、冒犯的或有偏见的内容。我们试图通过微调来缓解这一问题,但可能仍存在一些问题,特别是对于没有公开可用数据集的其他语言。随着我们在解决这些问题上取得进展,我们将继续进行微调并在未来发布 updated 的版本。

    并非所有使用 AI 模型的人都怀有良好意图,并且对话式的 AI agents 可能被用作生成错误的信息、或检索有关生物恐怖主义或网络犯罪等主题的信息等不良目的。但是,我们确实努力 tune 模型以避免这些主题,并减少它们可能提供的这些用例的功能。

    虽然我们试图在安全性和有用性之间进行合理平衡,但在某些情况下,我们的 safety tuning 做得过分。Llama 2-Chat 的用户可能会观察到过于谨慎的方法,模型错误地选择拒绝某些请求、或响应过多的 safety details

    pretrained models 的用户需要特别谨慎,并且应按照我们的 Responsible Use Guide中描述的方式采取额外步骤进行 tuning 和部署。

54.4.3 Responsible Release Strategy

  1. Release Details:我们在 https://ai.meta.com/resources/models-and-libraries/llama/ 上为研究的和商业的用途提供Llama 2 。使用 Llama 2 的人必须遵守所提供的许可条款、以及我们的 Acceptable Use Policy ,这些政策禁止任何违反政策、法律、规则和法规的使用。

    我们还提供 code examples ,以帮助开发人员使用 Llama 2-Chat 来复制我们的 safe generations ,并在用户输入和模型输出层应用基本的 safety 技术。这些代码样本可在此获得:https://github.com/facebookresearch/llama 。 最后,我们分享了一个Responsible Use Guide ,其中提供了关于 safe 开发和部署的指导方针。

  2. Responsible Release:虽然许多公司选择在幕后构建 AI ,但我们公开发布 Llama 2 是为了鼓励 responsible AI innovation 。根据我们的经验,开源的方法汲取了 AI 从业者社区的集体智慧、多样性和创造力,以实现这项技术的优势。collaboration 将使这些模型变得更好、更安全。整个 AI 社区(学术研究人员、公民社会、政策制定者、以及工业界)必须共同努力,严格分析和揭示当前 AI 系统的风险,并构建解决潜在的 problematic misuse 的解决方案。这种方法不仅促进了与各种各样利益相关者(大科技公司之外的人)的真正合作,而且也奠定了民主化地访问 foundational models 的基石。正如 《Defending against neural fake news》 所论证的,开源发布有助于提高透明度,并允许更多人访问 AI 工具,使该技术民主化并分发 AI expertise 。我们认为,AI expertise 的分发不仅仅是分发知识,它将刺激创新并加速行业进步。最后,开源发布这些模型可以合并成本并消除进入壁垒,使小企业可以利用 LLM 的创新来探索和构建 text-generation 用例。最终,我们相信这将为全球各种规模的组织创造一个更加公平的竞争环境,使其从 AI 的进步中受益。

    我们知道并非所有使用 AI 模型的人都怀有良好意图,并且我们承认 AI 将如何影响我们的世界确实存在合理的担忧。toxic content generationproblematic associationsAI 社区尚未完全缓解的重大风险。正如本文所阐述的,我们已经取得了进展,限制了这些类型响应的 prevalence 。虽然我们认识到还有工作要做,但这种认识只会加深我们对 open scienceAI 社区协同的承诺。