小型语言模型(SLMs)综述
小型语言模型(SLMs)因其高效性和在执行各种语言任务时所需的计算资源较少,变得越来越重要,使它们非常适合于包括设备端、移动设备、边缘设备等多种场景。在本文中,我们对小型语言模型进行了全面的综述,重点介绍了它们的架构、训练技术和模型压缩技术。
1. 引言
尽管大型语言模型(LLMs)在广泛的基准测试和现实场景中展示了出色的性能,它们的成功却伴随着显著的成本。LLMs 的训练和运行资源密集,需耗费大量计算和数据资源。这通常意味着它们的训练和推理都需要在集中化和专业化的硬件上进行。
为了应对这些挑战,越来越多的研究开始关注小型语言模型(SLMs)。小型语言模型的目标是保持大型语言模型的准确性和/或适应性,同时受到某些约束条件的限制,如训练或推理硬件、数据可用性、带宽或生成时间。提升模型在这些约束条件下的性能,可以帮助实现隐私保护、成本节约或在消费级设备上运行的目标。
对小型语言模型进行综述的难点在于,'小型'和'大型'的定义是随时间和上下文变化的。例如,GPT-2 在 2019 年作为一个拥有 15 亿参数的'大型语言模型',如今已经比本文综述中许多所谓的'小型'语言模型要小。然而,虽然模型规模在变化,小型语言模型的训练目标相对稳定。
在本综述中,我们将探讨支持构建和推理小型语言模型的架构、训练和模型压缩技术。此外,我们还总结了用于评估小型语言模型性能的基准数据集和常用的评估指标。为此,我们提出了一个新的分类法,用于沿着两条主轴组织这些方法:
- 在小型语言模型的预处理(模型架构)、训练和后处理(模型压缩)中使用的技术;
- 该技术试图优化的约束条件,如推理计算、训练时间、速度等。
需要注意的是,在任何一个目标上的进展不一定意味着在其他目标上也有进展。事实上,往往存在权衡。例如,量化感知训练等内存高效的训练方法通常比全精度方法更慢。然而,通过使用混合精度表示权重和梯度,它们允许使用更少的内存来进行训练或微调。最后,虽然最近已经有几篇关于大型语言模型及其学习方法的综述,但据我们所知,这是首篇专注于小型语言模型的综述。
综述的组织结构
本综述分为三个主要部分,每个部分都涵盖了优化小型语言模型的关键方面。第 2 节关注模型架构,包括轻量化设计、高效的自注意力近似以及神经架构搜索以高效构建更小的模型。第 3 节涵盖高效的预训练和微调技术,以在资源受限的情况下提升小型语言模型的性能。第 4 节探讨了模型压缩技术,如剪枝、量化和知识蒸馏,它们可以在不显著牺牲精度的情况下减少模型的大小和延迟。第 5 节提供了基准数据集和评估指标的概述,提供了评估这些方法有效性的综合框架。第 6 节讨论了小型语言模型所启用的应用,按照约束条件进行分类。最后,第 7 节提出了针对小型语言模型的开放性挑战讨论。
主要贡献总结
本文的主要贡献如下:
- 针对从业者提供了一篇全面的小型语言模型综述。我们还综述了文献中提到的问题设置、评估指标和数据集。
- 我们引入了几个直观的小型语言模型分类法,并使用这些分类法对现有研究进行了综述。
- 我们识别了小型语言模型的重要应用、开放问题和挑战,为未来的研究提供了方向。
2. 模型架构
本节讨论了开发小型语言模型(SLMs)的架构设计。具体而言,我们涵盖了轻量化架构、高效自注意力近似以及神经架构搜索。
2.1 轻量化架构
轻量化语言模型架构旨在通过减少参数量和计算开销,实现高效性能,这对于在资源受限的设备(如手机、边缘设备和嵌入式系统)上部署非常理想。代表性轻量化模型通常采用编码器或解码器的架构。
轻量化编码器架构大多是 BERT 的优化版本。例如,MobileBERT 引入了一种倒瓶颈结构,以在自注意力和前馈网络之间保持平衡,与基础版 BERT 相比,实现了 4.3 倍的尺寸缩减和 5.5 倍的速度提升。DistilBERT 和 TinyBERT 也分别实现了相似的优化,通过移除冗余层或使用知识蒸馏来减小体积。
轻量化解码器架构遵循自回归语言模型的结构,如 GPT 和 LLaMA 系列。这些模型强调知识蒸馏、内存开销优化、参数共享和嵌入共享,以增强效率和可扩展性。BabyLLaMA 和 BabyLLaMA-2 分别将多位教师模型的知识蒸馏到 58M 参数和 345M 参数的模型中,证明了在数据受限的情况下,蒸馏技术可以超越教师模型的性能。TinyLLaMA 仅有 1.1B 参数,通过优化内存开销(例如使用 FlashAttention)实现了高效,同时在多种下游任务中保持了竞争力。MobilLLaMA 应用了参数共享方案,减少了预训练和部署成本,提出了一个适合资源受限设备的 0.5B 参数模型。MobileLLM 进一步引入嵌入共享和分组查询注意机制,并通过分块式权重共享降低了延迟。
2.2 高效自注意力近似
部署大型语言模型的挑战之一是自注意力层中的庞大参数量以及自注意力带来的计算成本。本节讨论了降低计算成本的策略,这些策略对于构建小型语言模型非常有用。
Reformer 通过将点积注意力替换为使用局部敏感哈希的注意力,将自注意力的复杂度从 O(N²) 降低到 O(N log N)。Roy 等人使用了基于在线 k-means 聚类的稀疏路由模块,减少了注意力计算的复杂性。
为进一步将自注意力层的计算复杂度从 O(N²) 降低到 O(N),多项研究提出了线性注意力机制。特别是,Katharopoulos 等人将自注意力表示为核特征映射的线性点积,从而降低了二次复杂度。作者还展示了采用这种线性注意力机制的 Transformer 可以被视为一种递归神经网络,从而实现更快的推理。在这些基础上,近期的进展引入了更为先进的架构。值得注意的例子包括 Mamba,该模型引入了具有输入依赖转换的选择性状态空间模型,以及 RWKV,它结合了 Transformer 和 RNN 的元素与线性注意力机制。这些模型不仅实现了线性时间和空间复杂度,还在各种任务中表现出竞争力。


