他们引入了一种非常有前途的注意力变体。
基本上,他们:
抛弃软最大值
让每个令牌只关注一个状态向量,而不是所有以前的令牌
在每个头上分别做层规范
相对于序列维度呈指数衰减注意力,每个头部具有不同的衰减系数
这使他们能够有效地在线、并行或分块计算注意力。
这类似于只拥有一个RNN,使用状态空间模型,线性注意力等,但与它们中的任何一个都不完全相同。
至关重要的是,由于每个标记的输出仅取决于总结过去的向量,而不是过去键和值的完整历史记录,因此您没有 KV 缓存并获得相对于序列长度的 O(1) 代。
因此,它们的注意力变体可以让您使用更少的内存,并为大序列长度更快地生成令牌。
现在,设计一个比常规关注运行得更快的代币混合方案并不难。困难的是做到不损失准确性。
因此,这里令人惊讶的部分是,该方案显然提高了困惑度和下游任务性能。
它也可以更好地扩展模型大小,至少在查看某些 {1.3B, 2.7B, 6.7B} 模型时是这样。
这些都是非常好的结果。如果其他人可以复制它们,这种方法完全可以成为一种新的标准做法。
OpenAI的API在过去几个月的质量上发生了重大变化。在许多情况下,GPT-4 变得更糟,而 GPT-3.5 变得更好。
GPT-4 似乎也变得更加犹豫回答问题,而 GPT-3 则变得不那么犹豫。这意味着以前有效的某些提示后来停止工作。
GPT-4 通常也变得更加简洁。从资源使用的角度来看,这是有意义的,但从收入的角度来看(按令牌计费)并不是真的有意义。
出于某种原因,这两种模型在生成可执行代码方面都变得更糟。尽管代码通常只是被注释掉,而不是完全不正确。更新:推特圈发现,后处理来解释这一点可能足以逆转 GPT-4 退化。同样,GPT-4 素数部分是以不同的方式权衡真阳性与真阴性的结果。
由于我们不知道哪些模型更改导致了这些输出更改,因此从业务角度来看,这比从技术角度来看更有趣。
大多数情况下,这一发现强化了我的观点,即第三方AI API和组织特定的模型几乎是不相交的市场。就像,将数据传送到昂贵的第三方 API,该 API 可能会在次要版本更新后开始拒绝回答您的查询是…对于许多公司来说,这不是一个理想的产品。
但是这些 API 非常方便,非常适合对 AI 功能进行原型设计,并且如果您只有足够的数据用于一些上下文示例,则与您获得的精度一样高。如果您是想要回答各种不同查询的消费者,它们也很棒;实际上,我只是将所有内容输入 ChatGPT,而不是去寻找用于不同目的的专用应用程序。
基本上,这与具有重大商业价值的任务将由内部模型处理,而低价值查询的长尾将提供给第三方API或开源模型的世界观是一致的。
(编辑)另外,为了明确一点:我不是在这里试图给OpenAI投掷阴影。我认为这在很大程度上是通用 API 的内在限制——平均而言,你可以让它变得更好,但你不能同时避免所有可能的用例的回归。
当您要求文本模型为其答案生成解释时,您希望它未来的响应与该解释一致。例如,假设它说培根三明治在某个区域很难买到,因为培根很难到达那里;如果你问培根是否很难到达那里并说“不”,那就不一致了。
他们构建了一个评估管道来衡量模型解释以这种方式不一致的频率。此管道:
事实证明,GPT-3 和 GPT-4 经常产生不一致的解释。
此外,模型生成看似令人满意的解释的频率与其解释的一致性频率无关。
只要这显示了对人类看起来好的和实际上的好之间的差距,这对欺骗性的对齐来说是个不好的预兆。这也表明,要建立一个准确的心理模型来描述LLM正在做什么仍然很困难。
通常,为了获得我们的后验预测分布,我们将其分解为潜在变量的后验分布和给定特定潜在变量值的测试输入的条件分布。
他们建议直接学习后验预测分布。他们通过假设世界如何运作的图形模型(Q)与贝叶斯图形模型(P)不同来做到这一点。
为了获得一个有用的目标,他们定义了一个变分上限,当我们对齐这两个图形模型所隐含的分布时,该上限被最小化。
它们还展示了如何对某些变量进行条件化以预测其他变量(例如,根据观察到的特征预测类标签)。
它们只显示玩具问题的结果,显然在扩展方法时遇到了困难,但这是我长期以来在贝叶斯统计数据中看到的最简单、最有趣的想法之一。
1
这篇论文的主体只有六页,而且相当平易近人,所以如果你喜欢概率推理,我肯定会推荐它。
新的FlashAttention,可获得50-73%的峰值FLOPS,而不是A25上的40-100%。由于它不会改变注意力的数学,这只是一个免费的胜利。
他们在NetHack上发现了行为克隆的明确幂律缩放关系。更有趣的是,他们使用的是LSTM而不是变压器。
我们仍然不知道为什么幂律缩放不断出现,但这证明它不是特定于变压器的,更多的证据表明它不是特定于NLP的。
同样令人惊讶的是,他们得到了如此简单的幂定律,因为至少有一篇RL论文没有,除非他们使用特定的评估指标。
为了确保您的LLM的输出与正则表达式或上下文无关的语法匹配,您可以在每个生成步骤之前屏蔽不可接受的标记的logits。
But doing this naively can be slow; you’d have to iterate through 10k+ tokens and check if each one matches your rule. To make this faster, they build an index and finite state machine to quickly identify candidate subsets of tokens offline.
从速度的角度来看,目前还不清楚这有多大帮助,但他们确实有一个很好的Python API:
除了为约束解码提供解决方案外,这也让我更深入地思考这实际上是一个相当困难的问题。
在对LLM进行训练后量化时,您应该使用fp8和fp4格式进行激活和(可能)权重。
这与给定权重和激活分布的预期一致。例如,参见训练(行)中不同点的不同层(列)的激活的直方图。
它们通过以几种方式偏离典型的预训练-微调范式,使设备上的训练适用于资源受限的设备。
首先,他们在预训练后添加一个额外的元训练步骤,以尝试增加他们随后在设备上的少数镜头学习的回报。
其次,他们使用基于费舍尔信息、内存约束、每个参数的精度增益和每个MAC的精度增益来选择要微调的通道和层的子集。
使用他们的方法选择特定于任务的通道比在元训练后进行通用通道修剪效果更好。
与完全微调相比,这种通道稀疏训练使他们获得了很大的训练速度。
我很惊讶他们设法超过了 1.5 倍的加速比与完全微调相比,因为您希望仍然必须进行完整的向前传递和向后传递(因此,充其量会将 wgrad 时间减少到零)。但看起来也许(?)他们只是在彻底修剪未选择的频道,至少在训练期间是这样?
它们的整体管道比各种基线(包括更明显的方法)产生更好的准确性。
元训练和特定于任务的通道选择都对准确性有很大帮助。
除了实用的设备级训练是一个巨大的隐私胜利之外,这也让我想知道我们是否应该在一般的预训练之后添加一个元训练步骤…
图像分类器通常通过频率内容模式学习识别类。例如,这可能会导致看起来不像猫的东西被归类为猫。
清理(图像、标题)数据集时的常见做法是,根据 CLIP 模型,当标题与图像对齐不符时,丢弃成对。但事实证明,这通常会丢弃标题不好的好图像。
本文建议改为使用 BLIP2 为图像标题对齐较低的对生成替换字幕。如果根据 CLIP 相似性过滤原始字幕和生成的字幕,则可以获得更好的训练集。
这些改进不仅适用于图像分类,也适用于检索。
这种提升的部分原因可能是 BLIP2 字幕和过滤字幕平均更长。这意味着我们希望它们提供更多的监督和/或不像“PRODUCT#0000007”这样的垃圾字符串。
也可能是BLIP2生成的字幕平均比人工生成的字幕好,至少在CLIP评估“更好”时是这样。
BLIP2 +过滤提供字幕质量和多样性组合的能力似乎也是一个促成因素。
对于任何构建(图像、标题)数据管道的人来说,这看起来都是一个轻松+大的胜利。
他们发现,通过将 Alpaca 数据集从 52k 个样本过滤到 9k,可以获得更好的指令调整。
他们的过滤管道是自动化的,基本上只是要求 ChatGPT 对每个样本的好坏进行评分。
这显然有效,击败了未过滤的数据集和相同大小的随机子集。
一方面,Alpaca 数据集是由 OpenAI 的 text-davinci-003 生成的,这里的样本评级模型是 ChatGPT,评估模型是 GPT-4——所以可能涉及一些过度拟合。特别是,我希望 ChatGPT 和 GPT-4 在重叠的数据集上进行训练,因此这两个模型喜欢的响应可能是相关的。
但另一方面,使用较小的数据集比使用较大的数据集(对于某些指标)效果更好的基本结果仍然很有趣,并支持表面对齐假设。