小型语言模型(SLMs)综述
小型语言模型(SLMs)因其高效性和在执行各种语言任务时所需的计算资源较少,变得越来越重要,使它们非常适合于包括设备端、移动设备、边缘设备等多种场景。在本文中,我们对小型语言模型进行了全面的综述,重点介绍了它们的架构、训练技术和模型压缩技术。
本文综述了小型语言模型(SLMs)的架构设计、训练技术及模型压缩方法。内容涵盖轻量化架构、高效自注意力近似、神经架构搜索及多模态模型,并讨论了预训练、微调策略如 LoRA 和数据增强,以及剪枝、量化等技术。文章还总结了评估基准与指标,分析了边缘计算、隐私保护和成本节约等应用场景,并指出了性能权衡、数据稀缺、硬件适配及安全对齐等未来挑战,旨在为资源受限场景下的模型部署提供指导。

小型语言模型(SLMs)因其高效性和在执行各种语言任务时所需的计算资源较少,变得越来越重要,使它们非常适合于包括设备端、移动设备、边缘设备等多种场景。在本文中,我们对小型语言模型进行了全面的综述,重点介绍了它们的架构、训练技术和模型压缩技术。
尽管大型语言模型(LLMs)在广泛的基准测试和现实场景中展示了出色的性能,它们的成功却伴随着显著的成本。LLMs 的训练和运行资源密集,需耗费大量计算和数据资源。这通常意味着它们的训练和推理都需要在集中化和专业化的硬件上进行。
为了应对这些挑战,越来越多的研究开始关注小型语言模型(SLMs)。小型语言模型的目标是保持大型语言模型的准确性和/或适应性,同时受到某些约束条件的限制,如训练或推理硬件、数据可用性、带宽或生成时间。提升模型在这些约束条件下的性能,可以帮助实现隐私保护、成本节约或在消费级设备上运行的目标。
对小型语言模型进行综述的难点在于,'小型'和'大型'的定义是随时间和上下文变化的。例如,GPT-2 在 2019 年作为一个拥有 15 亿参数的'大型语言模型',如今已经比本文综述中许多所谓的'小型'语言模型要小。然而,虽然模型规模在变化,小型语言模型的训练目标相对稳定。
在本综述中,我们将探讨支持构建和推理小型语言模型的架构、训练和模型压缩技术。此外,我们还总结了用于评估小型语言模型性能的基准数据集和常用的评估指标。为此,我们提出了一个新的分类法,用于沿着两条主轴组织这些方法:
需要注意的是,在任何一个目标上的进展不一定意味着在其他目标上也有进展。事实上,往往存在权衡。例如,量化感知训练等内存高效的训练方法通常比全精度方法更慢。然而,通过使用混合精度表示权重和梯度,它们允许使用更少的内存来进行训练或微调。最后,虽然最近已经有几篇关于大型语言模型及其学习方法的综述,但据我们所知,这是首篇专注于小型语言模型的综述。
本综述分为三个主要部分,每个部分都涵盖了优化小型语言模型的关键方面。第 2 节关注模型架构,包括轻量化设计、高效的自注意力近似以及神经架构搜索以高效构建更小的模型。第 3 节涵盖高效的预训练和微调技术,以在资源受限的情况下提升小型语言模型的性能。第 4 节探讨了模型压缩技术,如剪枝、量化和知识蒸馏,它们可以在不显著牺牲精度的情况下减少模型的大小和延迟。第 5 节提供了基准数据集和评估指标的概述,提供了评估这些方法有效性的综合框架。第 6 节讨论了小型语言模型所启用的应用,按照约束条件进行分类。最后,第 7 节提出了针对小型语言模型的开放性挑战讨论。
本文的主要贡献如下:
本节讨论了开发小型语言模型(SLMs)的架构设计。具体而言,我们涵盖了轻量化架构、高效自注意力近似以及神经架构搜索。
轻量化语言模型架构旨在通过减少参数量和计算开销,实现高效性能,这对于在资源受限的设备(如手机、边缘设备和嵌入式系统)上部署非常理想。代表性轻量化模型通常采用编码器或解码器的架构。
轻量化编码器架构大多是 BERT 的优化版本。例如,MobileBERT 引入了一种倒瓶颈结构,以在自注意力和前馈网络之间保持平衡,与基础版 BERT 相比,实现了 4.3 倍的尺寸缩减和 5.5 倍的速度提升。DistilBERT 和 TinyBERT 也分别实现了相似的优化,通过移除冗余层或使用知识蒸馏来减小体积。
轻量化解码器架构遵循自回归语言模型的结构,如 GPT 和 LLaMA 系列。这些模型强调知识蒸馏、内存开销优化、参数共享和嵌入共享,以增强效率和可扩展性。BabyLLaMA 和 BabyLLaMA-2 分别将多位教师模型的知识蒸馏到 58M 参数和 345M 参数的模型中,证明了在数据受限的情况下,蒸馏技术可以超越教师模型的性能。TinyLLaMA 仅有 1.1B 参数,通过优化内存开销(例如使用 FlashAttention)实现了高效,同时在多种下游任务中保持了竞争力。MobilLLaMA 应用了参数共享方案,减少了预训练和部署成本,提出了一个适合资源受限设备的 0.5B 参数模型。MobileLLM 进一步引入嵌入共享和分组查询注意机制,并通过分块式权重共享降低了延迟。
部署大型语言模型的挑战之一是自注意力层中的庞大参数量以及自注意力带来的计算成本。本节讨论了降低计算成本的策略,这些策略对于构建小型语言模型非常有用。
Reformer 通过将点积注意力替换为使用局部敏感哈希的注意力,将自注意力的复杂度从 O(N²) 降低到 O(N log N)。Roy 等人使用了基于在线 k-means 聚类的稀疏路由模块,减少了注意力计算的复杂性。
为进一步将自注意力层的计算复杂度从 O(N²) 降低到 O(N),多项研究提出了线性注意力机制。特别是,Katharopoulos 等人将自注意力表示为核特征映射的线性点积,从而降低了二次复杂度。作者还展示了采用这种线性注意力机制的 Transformer 可以被视为一种递归神经网络,从而实现更快的推理。在这些基础上,近期的进展引入了更为先进的架构。值得注意的例子包括 Mamba,该模型引入了具有输入依赖转换的选择性状态空间模型,以及 RWKV,它结合了 Transformer 和 RNN 的元素与线性注意力机制。这些模型不仅实现了线性时间和空间复杂度,还在各种任务中表现出竞争力。
我们还注意到一些先前用于处理长文档的编码器架构的工作。Longformer 使用了局部窗口注意力和任务特定的全局注意力相结合的机制,随着输入长度的增加,能够线性扩展,因此具有内存效率。Wang 等人通过使用低秩矩阵来近似自注意力机制,将复杂度降低到 O(N)。这些研究表明,带有线性自注意力的 Transformer 在多种下游任务中的表现与原始自注意力机制相匹配。类似地,Xiong 等人使用了流行的 Nystrom 方法来近似自注意力操作,在与传统 Transformer 的比较中显示出强大的实验性能。
本节讨论了用于发现最适合特定任务和硬件约束的高效模型架构的自动化方法。
先前的研究主要集中在用于视觉任务的神经架构搜索(NAS)和 BERT 模型,这些模型的参数相对较少,减少了高效架构搜索过程的成本。然而,具有超过十亿参数的大型语言模型在寻找更小、更高效的模型时面临着显著挑战。其庞大的规模使搜索过程计算密集且昂贵。最近,MobileLLM 研究了模型深度(即层数)和宽度(即头数)对性能的影响,有效地在数百万参数范围内进行了针对性架构搜索。与此同时,Shen 等人通过探索合适的初始化来减少搜索空间,从而加快了搜索过程的收敛。
近年来,大型多模态模型(LMMs)在显著减少参数量的同时,达到了与前代模型相当甚至更优的性能。值得注意的例子包括 LLaVA-Next、Idefics2 和 InternVL2 系列。这一进展部分归功于更多高效的小型语言模型,如 Gemma 和 phi-3-mini,并强调了精心策划的数据集的重要性。
此外,人们还努力在多模态融合过程中缩减视觉编码器的规模。例如,InternVL2 利用大规模视觉编码器的中间层输出,同时丢弃后续模块。更小的模型,如 PaliGemma 和 Mini-Gemini,采用了轻量级的视觉编码器。单体多模态模型进一步推进了这一点,完全消除了视觉编码器,转而使用轻量级架构生成视觉 token。例如,Chameleon 采用 VQ-VAE 模型将图像编码并解码为离散 token,而 Mono-InternVL 则使用 MLP 生成图像块的视觉 token,结合了一种名为多模态专家混合的特定模态前馈网络,以区分不同的模态。
本节回顾了用于语言模型预训练和微调的关键训练技术。虽然小型语言模型(SLMs)与大型语言模型(LLMs)采用类似的训练方法,但我们将重点介绍在有限资源情况下促进 SLMs 学习的高效技术。
混合精度训练是提升 SLMs 和 LLMs 预训练效率的关键技术。该方法利用低精度表示进行前向和后向传播,同时保持高精度的权重更新。例如,AMP 初始时使用 32 位浮点(FP32)精度保存权重的主副本,而在进行算术运算时使用 16 位浮点(FP16)精度。然而,近期的研究观察到,由于 FP16 的数值范围有限,AMP 在某些情况下会导致精度损失。为了解决这一问题,大脑浮点(BFLOAT16)被提出,该格式具有比 FP16 更多的指数位,提供了更大的动态范围。BFLOAT16 在训练性能和表示精度方面优于 FP16。
现代 GPU 架构进一步通过专用的 Tensor Cores 增强了混合精度功能。例如,早期的架构支持 FP16 和 BFLOAT16,而 NVIDIA 的最新 Hopper 架构引入了对 8 位浮点(FP8)精度的支持,从而为大规模语言模型带来了更高的计算效率。
为了进一步提升训练效率并防止模型崩溃,采用了各种优化和稳定技术。虽然 Adam 和 AdamW 优化器广泛使用,但内存高效的变体如 Adafactor 和 Sophia 被引入以提高训练速度和效率。为进一步稳定训练,梯度裁剪被广泛应用,以防止梯度爆炸。此外,仔细的初始化策略可以为模型训练提供良好的起点。这些结合技术旨在实现最佳的训练效率,保持数值稳定性,并生成更稳健和强大的语言模型。
为了应对预训练阶段的计算需求,语言模型通常在多个计算节点上进行预训练,利用分布式计算资源实现高效训练。为此,开发了多种系统级优化技术。零冗余数据并行(ZeRO)提供了三种渐进式的优化阶段,每个阶段都将更多的训练状态分布到设备上:ZeRO-1 划分优化器状态,ZeRO-2 增加梯度划分,ZeRO-3 进一步划分模型参数。PyTorch 的全分片数据并行(FSDP)也实现了类似的概念。这些并行技术允许使用更大的批量尺寸进行训练,大大提高了 SLMs 和 LLMs 的效率和可扩展性。
在较小的特定任务数据集上进行微调,允许 LLMs 利用预训练中获得的知识,从而在特定任务或领域中表现出色。微调技术旨在解决诸如计算资源有限、数据质量、可用性和鲁棒性等挑战,确保能够有效地适应新任务而无需进行广泛的再训练。
参数高效微调(PEFT)仅更新一小部分参数或添加轻量级模块,同时保持大部分预训练模型的参数不变。这种方法减少了 SLM 微调时的计算成本,保留了模型的知识,减少了过拟合,并提高了灵活性。LoRA 使用低秩分解,Prompt Tuning 在输入中插入可学习的提示,而 Llama-Adapter 将提示添加到 LLaMA 的注意力块中。动态适配器自动将多个适配器组合为专家混合模型,支持多任务处理并防止遗忘。
数据增强通过增加训练数据的复杂性、多样性和质量,提升模型在下游任务中的泛化能力和性能。AugGPT 使用 ChatGPT 对训练样本进行改写,Evol-Instruct 通过多步修订生成复杂度更高的多样化开放域指令。Reflection-tuning 通过基于预定义标准使用 GPT-4 对指令和响应进行优化,提升了数据质量和指令响应一致性。FANNO 通过检索增强生成技术引入外部知识源,以增强指令并生成响应。LLM2LLM 在训练过程中基于模型预测生成更难的样本。
数据增强在训练数据有限的情况下也非常有效,例如用于低资源语言、医疗和临床应用以及隐私敏感数据,从而使模型能够在受限场景下更好地泛化并表现出更强的鲁棒性。
通过使用 f 散度(f-divergences)的广义版本,序列级蒸馏损失可以得到改进。Liang 等人通过使用任务感知滤波器扩展了针对语言模型的逐层蒸馏策略,该滤波器仅蒸馏来自教师模型的特定任务知识。最近的研究表明,通过战略性地融合多个语言模型的输出概率分布,可以将多个语言模型融合为教师模型,以蒸馏知识到小型语言模型中。
语言模型的知识蒸馏面临的一个问题是,当(1)教师和学生语言模型共享相同的分词器,且(2)教师模型的预训练数据可用时,蒸馏策略效果最佳。Boizard 等人通过引入一种受最优传输理论启发的通用 logit 蒸馏损失,解决了这一问题。蒸馏常常还与剪枝技术相结合,以创建更小的语言模型。例如,Sreenivas 等人展示了通过对大型语言模型进行剪枝并结合蒸馏损失进行重训练的迭代步骤,可以生成性能强大的小型模型。
最新的进展探索了超越传统标签蒸馏的方法,通过在蒸馏过程中加入额外的监督来创建小型语言模型。Hsieh 等人发现,在蒸馏过程中使用'推理依据'(rationales)作为额外的监督来源,使得蒸馏过程更加样本高效。此外,作者发现蒸馏后的模型在常用的自然语言推理(NLI)、常识问答和算术推理基准测试上超越了大型语言模型。同样地,Dai 等人、Magister 等人、Ho 等人和 Fu 等人将从大型语言模型中提取的推理链与标签信息一起蒸馏到小型语言模型中。研究表明,这些蒸馏后的模型在算术、多步数学、符号推理和常识推理能力上有显著提升。
模型压缩技术旨在在不显著牺牲精度的情况下减少模型的大小和延迟,这对于在资源受限设备上部署至关重要。主要的压缩技术包括剪枝、量化和知识蒸馏。
剪枝通过移除模型中对输出贡献较小的连接或神经元来减少模型大小。结构化剪枝会移除整个通道或层,而非结构化剪枝则移除单个权重。结构化剪枝更适合硬件加速,因为它能直接减少计算量。常见的剪枝策略包括基于权重大小的剪枝和基于梯度的剪枝。在小型语言模型中,剪枝通常与微调结合使用,以恢复因剪枝而损失的精度。
量化通过将高比特精度的权重转换为低比特精度(如 INT8、INT4 甚至更低)来减少内存占用和计算开销。量化感知训练(QAT)是在训练过程中模拟量化误差,从而获得更好的最终性能。动态量化则在推理时根据激活值动态调整精度。量化对于在移动端部署模型尤为关键,因为它能显著降低内存带宽需求。
知识蒸馏是将大型教师模型的知识迁移到小型学生模型的过程。除了传统的 logits 蒸馏外,还包括特征蒸馏和关系蒸馏。特征蒸馏要求学生模型模仿教师模型中间层的特征表示,而关系蒸馏则关注样本之间的关系结构。通过蒸馏,小型模型可以学习到教师模型的泛化能力和决策边界,从而在较小参数下达到接近的性能。
为了客观评估小型语言模型的性能,需要使用标准化的基准数据集和评估指标。
常用的自然语言理解基准包括 GLUE 和 SuperGLUE,它们涵盖了情感分析、文本蕴含、问答等多种任务。对于生成任务,MMLU(Massive Multitask Language Understanding)是一个重要的基准,测试模型在多个学科领域的知识。此外,针对特定领域的应用,还有医疗、法律等领域的专用数据集。对于小型模型,还需要关注其在低资源语言上的表现,以确保其通用性。
评估指标主要包括准确率(Accuracy)、F1 分数、困惑度(Perplexity)以及 BLEU、ROUGE 等生成质量指标。对于推理任务,还需考虑响应时间和吞吐量。在资源受限场景下,能效比(Performance per Watt)也是一个重要的考量因素。综合评估应兼顾精度、速度和资源消耗。
小型语言模型的应用场景广泛,主要按照约束条件进行分类。
在边缘设备和 IoT 设备上,计算资源和电力有限。小型语言模型可以在本地运行,无需上传数据到云端,从而降低延迟并保护用户隐私。例如,智能音箱、可穿戴设备和自动驾驶汽车中的语音交互模块。
对于医疗、金融等敏感领域,数据隐私至关重要。小型模型可以在本地私有环境中训练和推理,避免数据泄露风险。联邦学习与小型模型结合,可以在不共享原始数据的情况下协同优化模型。
对于企业应用,部署大型模型需要昂贵的 GPU 集群。小型模型可以运行在 CPU 或低端 GPU 上,大幅降低基础设施成本和运维成本,使得 AI 技术更易普及。
尽管小型语言模型取得了显著进展,但仍面临诸多挑战。
如何在极小的参数量下保持高性能仍是核心难题。随着任务复杂度的增加,小型模型的能力上限可能成为瓶颈。未来的研究需要探索更高效的架构和训练策略。
小型模型通常缺乏大规模预训练数据的支持,容易过拟合。如何在小数据下实现高效学习,以及如何合成高质量数据,是关键问题。
不同硬件平台的算子支持和内存管理差异巨大。模型需要针对特定硬件进行优化,以实现真正的端到端高效部署。
小型模型在安全对齐方面可能不如大模型完善,容易产生幻觉或有害输出。建立小型模型的安全护栏和价值观对齐机制是未来研究的重点。
鉴于小型语言模型(SLMs)因其高效性和在广泛设备与环境中的应用而变得愈发重要,本文综述了 SLMs,包括其模型架构、训练技术以及用于优化 SLMs 的模型压缩技术。我们还提出了一个直观的 SLM 评估指标分类法,并总结了 SLMs 在各种设置和应用中的重要性。此外,我们总结了用于 SLMs 的训练和基准数据集。最后,我们强调了 SLMs 领域中亟待解决的基本挑战和开放性问题。我们希望这篇综述能成为研究人员和从业者的宝贵资源,推动小型但功能强大的语言模型的进一步发展。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online