当前位置: 首页 > article >正文

小型语言模型(LLM)综述!

小型语言模型(SLMs)因其高效性和在执行各种语言任务时所需的计算资源较少,变得越来越重要,使它们非常适合于包括设备端、移动设备、边缘设备等多种场景。在本文中,我们对小型语言模型进行了全面的综述,重点介绍了它们的架构、训练技术和模型压缩技术。

1 引言

尽管大型语言模型(LLMs)在广泛的基准测试和现实场景中展示了出色的性能,它们的成功却伴随着显著的成本。LLMs 的训练和运行资源密集,需耗费大量计算和数据资源。这通常意味着它们的训练和推理都需要在集中化和专业化的硬件上进行。

为了应对这些挑战,越来越多的研究开始关注小型语言模型(SLMs)。小型语言模型的目标是保持大型语言模型的准确性和/或适应性,同时受到某些约束条件的限制,如训练或推理硬件、数据可用性、带宽或生成时间。提升模型在这些约束条件下的性能,可以帮助实现隐私保护、成本节约或在消费级设备上运行的目标。

对小型语言模型进行综述的难点在于,“小型”和“大型”的定义是随时间和上下文变化的。例如,GPT-2 在2019年作为一个拥有15亿参数的“大型语言模型”,如今已经比本文综述中许多所谓的“小型”语言模型要小。然而,虽然模型规模在变化,小型语言模型的训练目标相对稳定。

在本综述中,我们将探讨支持构建和推理小型语言模型的架构、训练和模型压缩技术。此外,我们还总结了用于评估小型语言模型性能的基准数据集和常用的评估指标。为此,我们提出了一个新的分类法,用于沿着两条主轴组织这些方法:

  • 在小型语言模型的预处理(模型架构)、训练和后处理(模型压缩)中使用的技术;以及

  • 该技术试图优化的约束条件,如推理计算、训练时间、速度等。

表1(技术)和表2(约束条件)展示了这些主轴的概览。

需要注意的是,在任何一个目标上的进展不一定意味着在其他目标上也有进展。事实上,往往存在权衡。例如,量化感知训练等内存高效的训练方法(Dettmers等人,2022a,2024)通常比全精度方法更慢。然而,通过使用混合精度表示权重和梯度,它们允许使用更少的内存来进行训练或微调。最后,虽然最近已经有几篇关于大型语言模型及其学习方法的综述(Rogers等,2020;Min等,2021;Zhu等,2023;Shen等,2023),但据我们所知,这是首篇专注于小型语言模型的综述。

综述的组织结构

本综述分为三个主要部分,每个部分都涵盖了优化小型语言模型的关键方面。第2节关注模型架构,包括轻量化设计、高效的自注意力近似以及神经架构搜索以高效构建更小的模型。第3节涵盖高效的预训练和微调技术,以在资源受限的情况下提升小型语言模型的性能。第4节探讨了模型压缩技术,如剪枝、量化和知识蒸馏,它们可以在不显著牺牲精度的情况下减少模型的大小和延迟。第5节提供了基准数据集和评估指标的概述,提供了评估这些方法有效性的综合框架。第6节讨论了小型语言模型所启用的应用,按照约束条件进行分类。最后,第7节提出了针对小型语言模型的开放性挑战讨论。

主要贡献总结

本文的主要贡献如下:

  • 针对从业者提供了一篇全面的小型语言模型综述。我们还综述了文献中提到的问题设置、评估指标和数据集。

  • 我们引入了几个直观的小型语言模型分类法,并使用这些分类法对现有研究进行了综述。

  • 我们识别了小型语言模型的重要应用、开放问题和挑战,为未来的研究提供了方向。

2 模型架构

本节讨论了开发小型语言模型(SLMs)的架构设计。具体而言,我们涵盖了轻量化架构(第2.1节)、高效自注意力近似(第2.2节)以及神经架构搜索(第2.3节)。

2.1 轻量化架构

轻量化语言模型架构旨在通过减少参数量和计算开销,实现高效性能,这对于在资源受限的设备(如手机、边缘设备和嵌入式系统)上部署非常理想。代表性轻量化模型通常采用编码器或解码器的架构。

轻量化编码器架构大多是BERT(Devlin等人,2019)的优化版本。例如,MobileBERT(Sun等人,2020)引入了一种倒瓶颈结构,以在自注意力和前馈网络之间保持平衡,与基础版BERT相比,实现了4.3倍的尺寸缩减和5.5倍的速度提升。DistilBERT(Sanh,2019)和TinyBERT(Jiao等人,2019)也分别实现了相似的优化。

轻量化解码器架构遵循自回归语言模型的结构,如GPT(Radford等人,2018,2019)和LLaMA系列(Touvron等人,2023b)。这些模型强调知识蒸馏、内存开销优化、参数共享和嵌入共享,以增强效率和可扩展性。BabyLLaMA(Timiryasov和Tastet,2023a)和BabyLLaMA-2(Tastet和Timiryasov,2024)分别将多位教师模型的知识蒸馏到58M参数和345M参数的模型中,证明了在数据受限的情况下,蒸馏技术可以超越教师模型的性能。TinyLLaMA(Zhang等人,2024)仅有1.1B参数,通过优化内存开销(例如使用FlashAttention,Dao等人,2022)实现了高效,同时在多种下游任务中保持了竞争力。MobilLLaMA(Thawakar等人,2024)应用了参数共享方案,减少了预训练和部署成本,提出了一个适合资源受限设备的0.5B参数模型。MobileLLM(Liu等人,2024e)进一步引入嵌入共享和分组查询注意机制,并通过分块式权重共享降低了延迟。

2.2 高效自注意力近似

部署大型语言模型的挑战之一是自注意力层中的庞大参数量以及自注意力带来的计算成本。本节讨论了降低计算成本的策略,这些策略对于构建小型语言模型非常有用。

Reformer(Kitaev等人,2020)通过将点积注意力替换为使用局部敏感哈希的注意力,将自注意力的复杂度从O(N²)降低到O(N log N)。Roy等人(2021)使用了基于在线k-means聚类的稀疏路由模块,减少了注意力计算的复杂性。

为进一步将自注意力层的计算复杂度从O(N²)降低到O(N),多项研究(Wang等人,2020a;Katharopoulos等人,2020;Xiong等人,2021;Beltagy等人,2020)提出了线性注意力机制。特别是,Katharopoulos等人(2020)将自注意力表示为核特征映射的线性点积,从而降低了二次复杂度。作者还展示了采用这种线性注意力机制的Transformer可以被视为一种递归神经网络,从而实现更快的推理。在这些基础上,近期的进展引入了更为先进的架构。值得注意的例子包括Mamba(Gu和Dao,2023;Dao和Gu,2024),该模型引入了具有输入依赖转换的选择性状态空间模型,以及RWKV(Peng等人,2023),它结合了Transformer和RNN的元素与线性注意力机制。这些模型不仅实现了线性时间和空间复杂度,还在各种任务中表现出竞争力。

我们还注意到一些先前用于处理长文档的编码器架构的工作。Longformer(Beltagy等人,2020)使用了局部窗口注意力和任务特定的全局注意力相结合的机制,随着输入长度的增加,能够线性扩展,因此具有内存效率。Wang等人(2020a)通过使用低秩矩阵来近似自注意力机制,将复杂度降低到O(N)。这些研究表明,带有线性自注意力的Transformer在多种下游任务中的表现与原始自注意力机制相匹配。类似地,Xiong等人(2021)使用了流行的Nystrom方法(Nyström,1930)来近似自注意力操作,在与传统Transformer的比较中显示出强大的实验性能。

2.3 神经架构搜索技术

本节讨论了用于发现最适合特定任务和硬件约束的高效模型架构的自动化方法。

先前的研究主要集中在用于视觉任务的神经架构搜索(NAS)(Tan和Le,2019;Zoph和Le,2016;Wu等人,2019;Guo等人,2020)和BERT模型(Xu等人,2021;Jawahar等人,2023;Ganesan等人,2021),这些模型的参数相对较少,减少了高效架构搜索过程的成本。然而,具有超过十亿参数的大型语言模型在寻找更小、更高效的模型时面临着显著挑战。其庞大的规模使搜索过程计算密集且昂贵。最近,MobileLLM(Liu等人,2024e)研究了模型深度(即层数)和宽度(即头数)对性能的影响,有效地在数百万参数范围内进行了针对性架构搜索。与此同时,Shen等人(2024c)通过探索合适的初始化来减少搜索空间,从而加快了搜索过程的收敛。

2.4 小型多模态模型

近年来,大型多模态模型(LMMs)在显著减少参数量的同时,达到了与前代模型相当甚至更优的性能。值得注意的例子包括LLaVA-Next(Liu等人,2024a)、Idefics2(Laurençon等人,2024)和InternVL2(Chen等人,2023)系列。这一进展部分归功于更多高效的小型语言模型,如Gemma(Team等人,2024)和phi-3-mini(Abdin等人,2024),并强调了精心策划的数据集的重要性。

此外,人们还努力在多模态融合过程中缩减视觉编码器的规模。例如,InternVL2利用大规模视觉编码器的中间层输出,同时丢弃后续模块。更小的模型,如PaliGemma(Beyer等人,2024)和Mini-Gemini(Li等人,2024c),采用了轻量级的视觉编码器。单体多模态模型进一步推进了这一点,完全消除了视觉编码器,转而使用轻量级架构生成视觉token。例如,Chameleon(Team,2024a)采用VQ-VAE模型将图像编码并解码为离散token,而Mono-InternVL(Luo等人,2024a)则使用MLP生成图像块的视觉token,结合了一种名为多模态专家混合的特定模态前馈网络,以区分不同的模态。

3 训练技术

本节回顾了用于语言模型预训练和微调的关键训练技术。虽然小型语言模型(SLMs)与大型语言模型(LLMs)采用类似的训练方法,但我们将重点介绍在有限资源情况下促进SLMs学习的高效技术。

3.1 预训练技术

混合精度训练是提升SLMs和LLMs预训练效率的关键技术。该方法利用低精度表示进行前向和后向传播,同时保持高精度的权重更新。例如,Micikevicius等人(2018)引入了自动混合精度(AMP),该方法初始时使用32位浮点(FP32)精度保存权重的主副本,而在进行算术运算时使用16位浮点(FP16)精度。然而,近期的研究(Rae等人,2021)观察到,由于FP16的数值范围有限,AMP在某些情况下会导致精度损失。为了解决这一问题,Burgess等人(2019)提出了大脑浮点(BFLOAT16),该格式具有比FP16更多的指数位,提供了更大的动态范围。BFLOAT16在训练性能和表示精度方面优于FP16。

现代GPU架构进一步通过专用的Tensor Cores增强了混合精度功能。例如,早期的架构支持FP16和BFLOAT16,而NVIDIA的最新Hopper架构引入了对8位浮点(FP8)精度的支持(Luo等人),从而为大规模语言模型带来了更高的计算效率。

为了进一步提升训练效率并防止模型崩溃,采用了各种优化和稳定技术。虽然Adam(Diederik,2014)和AdamW(Loshchilov和Hutter,2019)优化器广泛使用,但内存高效的变体如Adafactor(Shazeer和Stern,2018)和Sophia(Liu等人,2024b)被引入以提高训练速度和效率。为进一步稳定训练,梯度裁剪(Zhang等人,2020)被广泛应用,以防止梯度爆炸。此外,仔细的初始化策略可以为模型训练提供良好的起点。这些结合技术旨在实现最佳的训练效率,保持数值稳定性,并生成更稳健和强大的语言模型。

为了应对预训练阶段的计算需求,语言模型通常在多个计算节点上进行预训练,利用分布式计算资源实现高效训练。为此,开发了多种系统级优化技术。零冗余数据并行(ZeRO)(Rajbhandari等人,2020)提供了三种渐进式的优化阶段,每个阶段都将更多的训练状态分布到设备上:ZeRO-1划分优化器状态,ZeRO-2增加梯度划分,ZeRO-3进一步划分模型参数。PyTorch的全分片数据并行(FSDP)(Zhao等人,2023b)也实现了类似的概念。这些并行技术允许使用更大的批量尺寸进行训练,大大提高了SLMs和LLMs的效率和可扩展性。

3.2 微调技术

在较小的特定任务数据集上进行微调,允许LLMs利用预训练中获得的知识,从而在特定任务或领域中表现出色。微调技术旨在解决诸如计算资源有限、数据质量、可用性和鲁棒性等挑战,确保能够有效地适应新任务而无需进行广泛的再训练。

3.2.1 参数高效微调

参数高效微调(PEFT)仅更新一小部分参数或添加轻量级模块,同时保持大部分预训练模型的参数不变。这种方法减少了SLM微调时的计算成本,保留了模型的知识,减少了过拟合,并提高了灵活性。LoRA(Hu等人,2021)使用低秩分解,Prompt Tuning(Lester等人,2021)在输入中插入可学习的提示,而Llama-Adapter(Zhang等人,2023b;Gao等人,2023)将提示添加到LLaMA的注意力块中。动态适配器(Kong等人,2024;Feng等人,2024;Gou等人,2023;Liu等人,2023b;Luo等人,2024b)自动将多个适配器组合为专家混合模型,支持多任务处理并防止遗忘(Han等人,2024;Yang等人,2024)。

3.2.2 数据增强

数据增强通过增加训练数据的复杂性、多样性和质量,提升模型在下游任务中的泛化能力和性能。AugGPT(Dai等人,2023)使用ChatGPT对训练样本进行改写,Evol-Instruct(Xu等人,2023)通过多步修订生成复杂度更高的多样化开放域指令。Reflection-tuning(Li等人,2023a,2024a)通过基于预定义标准使用GPT-4对指令和响应进行优化,提升了数据质量和指令响应一致性。FANNO(Zhu等人,2024)通过检索增强生成技术引入外部知识源,以增强指令并生成响应。LLM2LLM(Lee等人,2024b)在训练过程中基于模型预测生成更难的样本。

数据增强在训练数据有限的情况下也非常有效,例如用于低资源语言(Whitehouse等人,2023)、医疗和临床应用(Chintagunta等人,2021)以及隐私敏感数据(Song等人,2024),从而使模型能够在受限场景下更好地泛化并表现出更强的鲁棒性。

通过使用f散度(f-divergences)的广义版本,序列级蒸馏损失可以得到改进,如Wen等人(2023)所示。Liang等人(2023)通过使用任务感知滤波器扩展了针对语言模型的逐层蒸馏策略,该滤波器仅蒸馏来自教师模型的特定任务知识。最近的研究(Wan等人,2024a,b)表明,通过战略性地融合多个语言模型的输出概率分布,可以将多个语言模型融合为教师模型,以蒸馏知识到小型语言模型中。

语言模型的知识蒸馏面临的一个问题是,当(1)教师和学生语言模型共享相同的分词器,且(2)教师模型的预训练数据可用时,蒸馏策略效果最佳。Boizard等人(2024)通过引入一种受最优传输理论启发的通用logit蒸馏损失,解决了这一问题。蒸馏常常还与剪枝技术相结合,以创建更小的语言模型。例如,Sreenivas等人(2024)和Muralidharan等人(2024)展示了通过对大型语言模型进行剪枝并结合蒸馏损失进行重训练的迭代步骤,可以生成性能强大的小型模型。

最新的进展探索了超越传统标签蒸馏的方法,通过在蒸馏过程中加入额外的监督来创建小型语言模型。Hsieh等人(2023)发现,在蒸馏过程中使用“推理依据”(rationales)作为额外的监督来源,使得蒸馏过程更加样本高效。此外,作者发现蒸馏后的模型在常用的自然语言推理(NLI)、常识问答和算术推理基准测试上超越了大型语言模型。同样地,Dai等人(2024)、Magister等人(2023)、Ho等人(2023)和Fu等人(2023)将从大型语言模型中提取的推理链与标签信息一起蒸馏到小型语言模型中。研究表明,这些蒸馏后的模型在算术、多步数学、符号推理和常识推理能力上有显著提升。

结论

鉴于小型语言模型(SLMs)因其高效性和在广泛设备与环境中的应用而变得愈发重要,本文综述了SLMs,包括其模型架构、训练技术以及用于优化SLMs的模型压缩技术。我们还提出了一个直观的SLM评估指标分类法,并总结了SLMs在各种设置和应用中的重要性。此外,我们总结了用于SLMs的训练和基准数据集。最后,我们强调了SLMs领域中亟待解决的基本挑战和开放性问题。我们希望这篇综述能成为研究人员和从业者的宝贵资源,推动小型但功能强大的语言模型的进一步发展。

在这里插入图片描述

大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

在这里插入图片描述

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
在这里插入图片描述

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述


http://www.kler.cn/a/373234.html

相关文章:

  • Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (二)
  • Python小游戏17——飞机大战
  • 编写dockerfile生成镜像,并且构建容器运行
  • 如何在Linux系统中使用Zabbix进行监控
  • MoveIt 控制自己的真实机械臂【2】——编写 action server 端代码
  • 一些有用的科研数据网站
  • TVB被嘲讽工资低,张兆辉得体且高情商的回应,赢得网友赞赏
  • 【JIT/极态云】技术文档--发起申请
  • Chrome DevTools:Console Performance 汇总篇
  • LabVIEW涡扇发动机加力泵测试
  • 知难而进:什么是Web开发——关于软件开发你需要知道些什么
  • AIGC时代的数据盛宴:R语言引领数据分析新风尚
  • C++算法第五天
  • 无人机产校融合,突破理论与实战代沟,快速转化市场价值
  • php解密,sg11解密-sg15解密 如何由sourceGuardian11-sourceGuardian15加密(sg11加密~sg15加密)的源码
  • Flutter主题切换
  • Apache Linkis:重新定义计算中间件
  • 事务的四大隔离级别、数据库中的共享锁与排他锁、MySQL 的行级锁与表级锁
  • C++虚函数(详解)
  • 无人机避障——路径规划篇(一) JPS跳点搜索算法A*算法对比
  • React四官方文档总结一UI与交互
  • 4.2-7 运行MR应用:词频统计
  • flutter VideoPlayer适配:保持视频的原始宽高比,缩放视频使它完全覆盖父容器
  • Vue生成名片二维码带logo并支持下载
  • 《人工智能炒股:变革与挑战》
  • 《YOLO 目标检测》—— YOLO v3详细介绍