随着大型语言模型 (LLM) 的参数数量的增长,与其支持硬件(加速器内存)增长速度之间的差距越来越大,如下图所示:
上图显示,从 2017 年到 2022 年,语言模型的大小显著增加:
加速器(一般指GPU)是专门的硬件,用于加速机器学习训练。它们的内存容量对于训练大型模型至关重要。图中显示加速器内存的增长速度远低于模型大小的增长速度:
上图显示了模型大小和加速器内存之间不断增长的差距。“差距”表示模型大小的增长速度远远超过了硬件内存容量的增长速度。这种差距对 LLM 的训练和部署提出了重大挑战。2022 年,模型规模达到了顶峰,但到了 2023 年,人们发现中等规模的模型(~70B 参数)在实际应用中更加实用和高效。然而加速器内存的增长速度没有跟上模型大小的增长速度。 这突出了对更高效的训练技术、模型压缩方法和专用硬件的需求,以克服这一瓶颈。
大型模型的规模和复杂性会限制其访问性和实用性,因此需要找到解决方案,将一个大型、复杂的模型转换为一个更小、更高效的模型,同时保留其核心功能,从而提高可访问性和实用性。 这使得在资源有限的环境中部署和使用模型成为可能。
为了将一个大型、复杂的模型转换为一个更小、更高效的模型,我们需要使用一些模型压缩的方法,下面我们来介绍几种模型压缩的方法: 1.剪枝(Pruning),2.知识蒸馏(Knowledge Distillation),3.量化(Quantization),这里我们会深入讲解 第三种 量化(Quantization)方法,对于剪枝(Pruning)和知识蒸馏(Knowledge Distillation)我们只做简单介绍。
剪枝(Pruning)的核心思想是移除对模型性能提升不大的连接或神经元,从而减小模型的大小和复杂度:
知识蒸馏(Knowledge Distillation)的核心思想是使用一个已经训练好的大型模型(教师模型)来指导一个较小型模型(学生模型)的训练,从而将大型模型的知识“蒸馏”到小型模型中。
知识蒸馏指的是使用一个训练好的大型模型(教师模型)来指导小型模型(学生模型)的训练,从而使小型模型获得与大型模型相近的性能,实现模型压缩的目的。
在讲解量化方法之前,我们先回归一下神经网络:
上图是神经网络的一个隐藏层,展示了线性层 followed by 激活函数的计算过程,其中:
在神经网络中,我们可以量化权重和激活值,其中:
有了神经网络的基础知识后,下面我们来真正进入主题,我们来讨论一下模型压缩中的一种重要技术:量化(Quantization)。 它通过降低模型参