AIxiv专栏是机器之心发布学术、技术内容的栏目。过去数年,机器之心AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com
本工作来自北京大学智能学院王立威、贺笛老师课题组与华为诺亚方舟实验室李震国、孙嘉城研究员。作者包括智能学院博士生冯古豪、古云天、罗胜杰;信息科学技术学院本科生杨铠、艾心玥。
大模型量化通过将模型参数从较高的精度(如 bfoat16)压缩到低精度(如 int8 或 int4)来降低模型推理的开销,提高模型推理的速度。在大语言模型的实际部署中,量化技术能够显著提高大语言模型推理的效率。但近日,来自哈佛大学,MIT,CMU,斯坦福大学和 Databricks 的研究团队通过大量实验总结出了大语言模型关于精度的 Scaling Law,实验发现模型的量化压缩会较大影响大语言模型的性能。
无独有偶,来自北大和华为的研究团队近期则从理论角度研究了量化对于大模型通用性的影响。具体而言,研究者关注了量化对于大模型数学推理能力的影响。其研究理论表明足够的模型精度是大模型解决基本数学任务的重要前提,而量化会大大降低大模型在基本数学任务上的表现,甚至提升足够参数量也无法弥补。
论文链接:https://arxiv.org/abs/2410.13857数学推理能力是大语言模型的一项重要能力,也是大语言模型走向通用人工智能的关键能力之一。然而,相较于经典的自然语言处理任务,数学推理往往需要严格的逻辑和准确的中间结果。在各种各样的数学推理任务中,算术能力是大语言模型解决各类复杂的数学问题的基础。更需要注意的是,大模型在处理数值的时候,会将一个数 “切分” 成一段一段的数字,例如:数字 1234.5678 在大模型中可能被编码为 “12” “34” “.” “56” “78”,如此编码后的信息是否可以被正确理解进而完成算术任务也是一个疑问。本工作研究者以基本的算术能力为切入点,研究了不同精度的 Transformer 在解决基本数学任务上的能力差异。下图展示了一些相应的例子。为了反映大模型对长数字的实际解码方式,在这些任务中,运算数中的每一数位均以一个独立的 token 作为大模型的输入,大模型的输出也是从高位往低位逐数位地输出。在本工作中,研究者分别使用对数精度 Transformer 和常数精度 Transformer 的理论模型来刻画标准精度大语言模型和量化后的低精度大语言模型。其中,对数精度指的是 Transformer 内部单个的神经元至多能够存储由 O(logn) 比特表示的实数,这里 n 指的是模型所能处理的最大序列长度。而常数精度指的是 Transformer 内部单个的神经元只能够存储至多 c 比特表示的实数,这里的 c 是一个与序列长度无关的小常数。这里,实数可以由定点数或者浮点数格式表示。当前主流的大语言模型,包括 GPT 系列、Claude 系列或者开源的 LLAMA 系列,能够处理的最大序列长度一般在 4k 到 128k 不等。在这样的序列规模下,对数精度和常数精度较好地刻画了量化前后的精度差异。之前的研究结果表明,标准精度 Transformer 具备解决这些基本算术任务的能力。这表明合适的精度能够保证大模型具有解决相应基本数学任务的能力。然而本工作理论证明当大语言模型经过量化、精度降低后,模型的能力受到了显著的影响。当使用低精度模型时,模型在多整数相加、整数相乘的任务上需要超多项式的模型参数量。这表明当精度不足时,即便充分增大模型尺寸 (scaling parameters),其也难以获得完成这些基本算术任务的能力。下表总结了相应的理论结果,表明了不同精度下各基本算术任务所需模型宽度的理论结果。其中,蓝色代表模型可以在较小的尺寸内解决相应的任务,而红色代表模型无法在可接受的尺寸内解决相应的问题。可以发现,标准精度的大语言模型能够轻松解决算术的任务,然而经过量化后低精度的大模型,在解决基本算术任务上的能力出现了明显的缺失。除了理论推导,研究者进行了大量实验来验证理论结果。研究者在算术运算的数据集上训练了一系列小模型,在小模型上的训练结果表明,在多整数相加和整数相乘任务上,提升精度能够使相同尺寸的模型解决更大规模的问题。此外,研究者还在 LLaMA3.1-8B 模型上进一步进行了一些系列实验,实验结果同样证实,在使用 int4 进行量化之后,在大语言模型各基本算术任务上的表现均出现了相应的下降。对于最为困难的整数相乘任务,其性能下降最为明显。总而言之,模型的量化压缩会明显损害大语言模型在数学推理问题上的性能,为了解决复杂的数学推理问题,足够的精度是必不可少的。这也说明,在实际部署大语言模型的过程中,不能够一味追求量化带来的效率,也要考虑到应用场景,采用合适的部署策略,同时兼顾大语言模型的实际性能和运行效率。