大语言模型(LLM)量化基础知识(一)

  • 承接各类AI相关应用开发项目(包括但不限于大模型微调、RAG、AI智能体、NLP、机器学习算法、运筹优化算法、数据分析EDA等) !!!
  • 有意愿请私信!!!

随着大型语言模型 (LLM) 的参数数量的增长,与其支持硬件(加速器内存)增长速度之间的差距越来越大,如下图所示:

大语言模型(LLM)量化基础知识(一)_第1张图片

上图显示,从 2017 年到 2022 年,语言模型的大小显著增加:

  •  2017 年: Transformer 模型(0.05B 参数)
  • 2018 年: GPT(0.11B 参数)、BERT(0.34B 参数)
  • 2020 年: GPT-2(1.5B 参数)、MegatronLM(8.3B 参数)
  • 2021 年: GPT-3(175B 参数)、T-NLG(17B 参数)
  • 2022 年: MT-NLG(530B 参数)

加速器(一般指GPU)是专门的硬件,用于加速机器学习训练。它们的内存容量对于训练大型模型至关重要。图中显示加速器内存的增长速度远低于模型大小的增长速度:

  • 2017 年: TPUv2(16GB)
  • 2018 年: V100(32GB)
  • 2020 年: TPUv3(32GB)
  • 2021 年: A100(40GB)
  • 2022 年: A100(80GB)
  • 在 2023 年至 2024 年期间,最大且最常用的模型的参数量大约在 700 亿左右。

上图显示了模型大小和加速器内存之间不断增长的差距。“差距”表示模型大小的增长速度远远超过了硬件内存容量的增长速度。这种差距对 LLM 的训练和部署提出了重大挑战。2022 年,模型规模达到了顶峰,但到了 2023 年,人们发现中等规模的模型(~70B 参数)在实际应用中更加实用和高效。然而加速器内存的增长速度没有跟上模型大小的增长速度。 这突出了对更高效的训练技术、模型压缩方法和专用硬件的需求,以克服这一瓶颈。

大型模型的规模和复杂性会限制其访问性和实用性,因此需要找到解决方案,将一个大型、复杂的模型转换为一个更小、更高效的模型,同时保留其核心功能,从而提高可访问性和实用性。 这使得在资源有限的环境中部署和使用模型成为可能。

大语言模型(LLM)量化基础知识(一)_第2张图片

模型压缩的方法

为了将一个大型、复杂的模型转换为一个更小、更高效的模型,我们需要使用一些模型压缩的方法,下面我们来介绍几种模型压缩的方法: 1.剪枝(Pruning),2.知识蒸馏(Knowledge Distillation),3.量化(Quantization),这里我们会深入讲解 第三种 量化(Quantization)方法,对于剪枝(Pruning)和知识蒸馏(Knowledge Distillation)我们只做简单介绍。

1.剪枝(Pruning)

剪枝(Pruning)的核心思想是移除对模型性能提升不大的连接或神经元,从而减小模型的大小和复杂度:

大语言模型(LLM)量化基础知识(一)_第3张图片

2.知识蒸馏(Knowledge Distillation)

知识蒸馏(Knowledge Distillation)的核心思想是使用一个已经训练好的大型模型(教师模型)来指导一个较小型模型(学生模型)的训练,从而将大型模型的知识“蒸馏”到小型模型中。 

大语言模型(LLM)量化基础知识(一)_第4张图片

知识蒸馏指的是使用一个训练好的大型模型(教师模型)来指导小型模型(学生模型)的训练,从而使小型模型获得与大型模型相近的性能,实现模型压缩的目的。 

3. 量化(Quantization)

在讲解量化方法之前,我们先回归一下神经网络:

大语言模型(LLM)量化基础知识(一)_第5张图片

上图是神经网络的一个隐藏层,展示了线性层 followed by 激活函数的计算过程,其中:

  • w₁, b₁, w₂, b₂, w₃, b₃: 这些是神经网络的权重(Weights,蓝色w) 和偏差(Biases,紫色b)。每个神经元都有一组对应的权重和偏差。
  • x: 橙色箭头和 x 指的是输入向量。
  • a₁, a₂, a₃: 这些是每个神经元的输出,也就是激活值(Activations)。
  • 公式 aᵢ = g(wᵢ ⋅ x + bᵢ): 这展示了线性层 followed by 激活函数的计算过程。其中:
    •     wᵢ ⋅ x 表示权重向量和输入向量的点积。
    •     + bᵢ 表示加上偏差。
    •     g() 表示激活函数。
  • 公式 g(z) = 1 / (1 + e⁻ᶻ): 这定义了激活函数 g(z) 为 sigmoid 函数。sigmoid 函数将线性层的输出映射到 0 到 1 之间,引入非线性。

在神经网络中,我们可以量化权重和激活值,其中:

  • 权重 (w̄):神经网络参数
  • 激活值 (a):在神经网络层中传播的值
  • 例如,在线性层中,a = g(w̄ ⋅ x + b);a 是激活值;w̄ 和 b 是权重。这里用一个线性层的例子进一步解释了激活值、权重和偏差的关系。

有了神经网络的基础知识后,下面我们来真正进入主题,我们来讨论一下模型压缩中的一种重要技术:量化(Quantization)。 它通过降低模型参

你可能感兴趣的:(RAG,NLP,ChatGPT,语言模型,人工智能,自然语言处理)