专栏名称: 计算机视觉深度学习和自动驾驶
讨论计算机视觉、深度学习和自动驾驶的技术发展和挑战
目录
相关文章推荐
参考消息  ·  中法印等国达成一致,美英拒签 ·  15 小时前  
卢克文工作室  ·  他们为什么“穷”得如此稳定? ·  2 天前  
参考消息  ·  美核潜艇抵韩,朝鲜强硬表态 ·  2 天前  
卢克文工作室  ·  天启特朗普、西厂马斯克 ·  3 天前  
参考消息  ·  特朗普:吞并加拿大,我是认真的​ ·  3 天前  
51好读  ›  专栏  ›  计算机视觉深度学习和自动驾驶

精度上规模化定律

计算机视觉深度学习和自动驾驶  · 公众号  ·  · 2024-12-01 00:05

正文

24年11月来自哈佛、斯坦福、MIT、Databricks和CMU的论文“Scaling Laws for Precision”。

低精度训练和推理会影响语言模型的质量和成本,但当前的规模化定律并未考虑到这一点。在、这项工作为训练和推理设计“精度-觉察”规模化定律。以较低的精度进行训练,会降低模型的有效参数量,这能够预测在低精度训练和训练后量化中所产生的额外损失。对于推理,随着模型在更多数据上进行训练,训练后量化引入的退化会增加,最终使额外的预训练数据变得有害。对于训练,该规模化定律能够预测具有不同精度不同部分的模型损失,并表明以较低的精度训练更大的模型可能是计算最优的。统一训练后量化和训练前量化的规模化定律,得出一个单一的函数形式,可以预测不同精度下训练和推理的退化。对超过 465 次预训练运行进行拟合,并验证对高达 1.7B 模型大小的预测,这些模型的参数在多达 26B 个tokens上进行训练。


一个问题:精度、参数和数据之间的权衡是什么?它们在预训练和推理方面如何比较?

研究精度的规模化具有挑战性,因为规模化定律的研究通常旨在放弃细粒度的实现细节以追求通用函数形式,而量化的研究通常则相反,专注于细节:如何进行量化、使用哪种类型、对模型的哪个部分进行量化。在寻求平衡时,考虑各种合理的函数形式,并选择一种将量化的实现细节从损失规模化中抽象出来的函数形式,能够在许多实际情况下预测损失规模化。这种函数形式假设位精度和参数计数可以交替地对模型的“有效参数计数”N/eff 做出贡献,而实现细节(例如模型的哪些部分被量化为什么精度)仅通过它们对这个数量的影响与损失规模化相互作用。

高效的训练和推理。 低精度是提高训练效率和使用 LLM 的关键 [Micikevicius et al., 2017, Shoeybi et al., 2019, Wortsman et al., 2023b, Zhu et al., 2023]。先前的研究通常研究训练期间的精度 [Courbariaux,2014,Dettmers,2024/2021,Sun,2020,Liu,2023] 或训练后改变精度的影响(训练后量化)[Frantar,2022,Lin,2024b,Dettmers,2022,Xiao,2023,Sheng,2023,Dettmers,2023]。

大型语言模型和规模化。 通过扩大 Transformer 架构 [Vaswani et al., 2017],已经提出多种大语言模型 [Brown, 2020, Rae et al., 2021, Touvron et al., 2023a,b, Dubey et al., 2024, Le Scao et al., 2023, Muennighoff et al., 2022, 2024a, Groeneveld et al., 2024, Jiang et al., 2023, Zhang et al., 2022, Allal et al., 2023, Li et al., 2023, Lozhkov et al., 2024, Luukkonen et al., 2023, Bai et al., 2023, Chowdhery et al., 2023、Team et al., 2023、Ustun et al., 2024、Deitke et al., 2024]。为了加深对这些模型的理解,各种工作研究了它们的规模化特性 [Ruan et al., 2024、Zhu & Li, 2024、H ̈agele et al., 2024]。许多方面都与规模化相关,包括架构 [Tay et al., 2022a, Krajewski et al., 2024, Tai et al., 2024, Clark et al., 2022, Tay et al., 2022b, Scao et al., 2022, Peng et al., 2024],所考虑的模式 [Aghajanyan et al., 2023, Alabdulmohsin et al., 2022, Cherti et al., 2023]、性能指标 [Wei et al., 2022、Srivastava et al., 2022、Isik et al., 2024]、数据构成 [Li et al., 2024、Liu et al., 2024、Albalak et al., 2024] 和数据重复 [Muennighoff et al., 2024b]。

总体而言,本文研究在训练期间和训练后随着数据和参数的变化,精度对损失影响的规模化。首先研究训练后量化引起的退化如何随参数和数据规模化。数据越多,退化程度就越大,因此对于固定模型,如果模型在训练后量化,那么在某个点之后对额外数据进行训练可能会产生积极影响。然后,将重点转移到量化训练,检查量化-觉察训练(仅权重)和低精度训练(权重、激活、注意力全部量化)设置。预训练规模化定律表明,计算最优预训练精度通常与计算预算无关。然而,令人惊讶的是,如果模型大小受到限制,这种独立性就不再成立,在这种情况下,计算最优精度在计算中增长缓慢。

总之,以 3 到 16 位精度预训练一套 465 个语言模型,并在训练后将每个模型量化为多个精度。训练后量化结果说明更多的预训练 FLOPs 并不一定能在推理时产生更好的模型,而低精度预训练结果表明,16 位训练模型的标准做法和极低(4 位以下)预训练精度的竞赛可能都不是最优的。

如图所示:(左)在 BF16 中将固定大小的模型训练到各种数据预算,并在最后量化权重。在预训练期间看到由于训练后量化而导致的退化会随tokens而增加,因此最终额外的预训练数据可能会造成损害。(右)规模化表明,根据成本模型,以较低的精度训练较大的模型可以实现计算优化。权重、激活、注意力量化,所有模型都在同一数据预算上进行训练。


问题:计算与内存受限的工作负载。大多数深度学习工作负载的瓶颈要么在于计算(以矩阵乘法的形式),要么在于内存带宽(以 GPU 不同部分之间数据移动的形式)。不同类型的工作负载有不同的瓶颈:大部分时间都花在预训练期间进行大型矩阵乘法,因此它受计算限制;相反,小批量推理受模型权重的带宽限制;长序列解码受 KV 缓存的带宽限制等等。需要研究(权重、激活、KV 缓存)训练精度的扩展,无论是单独研究还是组合研究。

[Hoffmann 2022] 使用函数形式 L(N,D) = AN^−α + BD^−β + E 建模损失规模化,其中 A、B、α、β、E 是正拟合常数,发现随着计算量的增加,数据和参数应按大致相等的比例缩放。将 [Hoffmann,2022] 的规模化称为“Chinchilla 最优”或简称为“Chinchilla”,通常被通俗地用作 D/N ≈ 20,即预训练计算最优。在理论方面,关于规模化定律的研究 [Bahri,2024,Bordelon,2024,Lin,2024a] 发现模型或数据各个部分的噪声会以可预测的方式影响损失。虽然先前的研究已经从模型总比特数 [Dettmers & Zettlemoyer, 2023] 和知识容量 [Allen-Zhu & Li, 2024] 的角度探索了训练后量化的规模化行为,但本文重点是数据规模化。一般来说,所有系数和指数的精确拟合值可能会因微小的实施差异而发生巨大变化:[Besiroglu 2024] 在尝试复制时发现了不同的常数 [Hoffmann,2022],[Sardana & Frankle 2023] 拟合了不同数量级的系数 A、B。因此,本文不是拟合数值,而是识别的趋势和函数形式。

在 Dolma V1.7 数据集 [Groeneveld et al., 2024, Soldaini et al., 2024] 上训练和评估了一套 OLMo 风格的模型,使用标准的 Transformer++ 实现。实验包括对 N ∈ [30, 60, 110, 220] 百万个参数(非嵌入)和 D ∈ [1.5, 3, 6, 13, 26] 亿个tokens进行语言模型预训练运行。该模型规模相对较小,因为训练到非常高的 D/N ≈ 10^3 来研究数据规模化,并在每个 (N, D) 上设置超过 20 次运行:为每一个(权重、激活、注意)扫描 8 个精度值。


最简单、最常见的量化技术是对现成的模型进行训练后量化 [Chee et al., 2024, Huang et al., 2024, Dettmers et al., 2022, Lin et al., 2023, Xiao et al., 2023]。考虑在 BF16 中训练的模型,并使用 GPTQ [Frantar et al., 2022] 对它们进行训练后量化。量化由此产生的损失退化 δ/PTQ,发现训练后量化在数据中规模化很差。

如图所示,考虑在不同数据预算上训练的不同模型大小(列)(x 轴),并在图中绘制训练后量化后的损失(顶行)和相对于训练结束时产生的性能下降(底行)。在所有模型大小中,训练数据大小的损失退化 δ/PTQ 都会增加,但对于固定的数据集大小,较大的模型产生的性能下降较小。随着量化精度的降低,损失退化 δ/PTQ 呈指数增长。

这种数据规模化不佳的直觉可能是,随着模型在更多数据上进行训练,它们会将更多信息压缩到权重中,因此在其他条件相同的情况下,以量化形式对权重的扰动对损失的危害更大。这一发现意味着,对于将在训练后量化的模型,存在一定数量的预训练数据,超过这个数量,额外的数据会对推理时的性能产生积极影响(见图左上角)。这可以定义为一个点,在这个点上,额外的数据增加的训练后退化程度大于减少预训练期间的损失。

发现 1: 过度训练的语言模型对训练后量化更敏感。损失退化为

当 D/N 足够大或 P/post 精度足够小时,量化后的损失会随着模型预训练时间的延长而增加,如上图所示。


研究使用不同精度的权重、激活和 KV 缓存进行预训练。重要的是,只改变训练精度,而不改变测试时间精度;会讨论训练和测试时间精度之间的相互作用。分别扫描权重、激活和 KV 缓存 P/w、P/a、P/kv ∈ [3, 12] 的训练精度,以及训练 BF16 基线。还使用 P/w、P/a、P/kv 的任意组合对模型进行预训练,以验证本文的规模化定律。为了在训练期间执行量化,遵循 [Micikevicius 2022] 的标准规范,除非另有说明。

首先检查权重精度 P/w 和参数 N 之间的权衡,同时将 P/a = P/kv 保持在高精度。固定 D = 13B 个 token,并对 N 和 P/w 的组合执行网格扫描。绘制生成的 IsoLoss 轮廓,其在图中线性插入最终损失值。权重的位精度可以与参数数量进行权衡,即 N 较小但 P/w 较大的模型可以实现与 N 较大但 P/w 较小的模型相同的损失。此外,在较低精度下,增加权重的位精度所带来的收益很大,但在较高精度下会饱和(通常每个权重约 6-7 位)。

量化-觉察训练(QAT)不会改变预训练的成本。这是因为现代 GPU 要求矩阵乘法的输入具有相同的精度,即 P/w = P/a = P/kv [Micikevicius,2022]。为了理解精度和预训练计算之间的相互作用,必须分析 P/a 和 P/kv 的规模化行为。

首先验证单独改变 P/a 和 P/kv 会产生规模化行为,该行为最适合于与 P/w 类似的函数形式,如图 (a)所示。通过一次改变模型一部分的精度计算出的规模化系数,称为边际拟合常数,同时包含多个低精度模型组件运行拟合的缩放系数,称为联合拟合常数。

下一步转向理解权重、激活和注意之间的相互作用。如果量化权重、激活和注意的影响是独立的,那么其交互可以一个因式分解的乘法形式。比较具有边际拟合常数模型和具有联合拟合常数模型的预测能力,测试这种独立性是否大致成立。如上图(b、c)中展示了这两个模型的预测能力,发现两种拟合常数的方法都具有大致相同的预测能力。这些结果表明独立性假设是合理的。

发现 2: 在训练过程中量化权重、激活和 KV 缓存的效果可以很好地建模为独立且乘法分解如下







请到「今天看啥」查看全文