微软 AI 主管 Mustafa Suleyman 最近深入探讨了人工智能领域的最新趋势。他认为,未来几年 AI 模型将呈现大小模型“齐头并进”的趋势。一方面,大型模型的规模化竞赛仍将持续,并融入更多模态的数据,例如视频、图像等。另一方面,高效的小型模型将在特定场景中发挥巨大作用,知识将被浓缩到更小、更便宜的模型中,嵌入各种设备,实现真正的环境感知革命。
正如微软主管提到的一样:小型语言模型 (SLM)旨在在台式机、智能手机和可穿戴设备等设备上实现资源高效的部署。其目标是让每个人都能使用并负担得起先进的机器智能,就像人类认知的普遍性一样。
目前,小型语言模型的参数大小限制为 50 亿,因为到 2024 年 9 月,70 亿参数模型仍然主要部署在云端。小型语言模型 (SLM)已广泛集成到商业设备中。例如,最新的 Google 和三星智能手机具有内置大型语言模型 (LLM) 服务,如 Gemini Nano,它允许第三方应用通过提示和模块化集成访问 LLM 功能。
小型语言模型定义
1. SLMs中的模型架构?
今天我们介绍一篇对 SLMs 全面综述的文章,重点关注其架构、训练技术和模型压缩技术。开发 SLM 的架构设计涵盖了轻量级架构,高效的自注意力近似, 以及神经架构搜索。模型的架构(包括层数和词汇量等因素)会影响其速度和内存使用情况。
1.1 轻量级架构
轻量级语言模型架构专注于减少参数和计算开销,以适应资源受限的设备。这些模型通常采用仅编码器或仅解码器的设计。例如,MobileBERT通过引入反向瓶颈结构,相较于BERT实现了尺寸和速度的显著提升。DistilBERT和TinyBERT通过知识蒸馏和参数共享,实现了模型的小型化和性能保持。轻量级仅解码器架构如BabyLLaMA和TinyLLaMA通过知识蒸馏和内存优化,在保持竞争力的同时显著减少了参数数量。MobilLLaMA和MobileLLM进一步通过参数共享和嵌入共享等技术,降低了预训练和部署的成本。
1.2 高效自注意力近似
为了降低大型语言模型中自注意力层的高计算成本,研究者们提出了多种策略。Reformer通过局部敏感哈希降低自注意力的复杂度,而其他工作如Wang等人提出的线性注意力机制,将复杂度从O(n^2)降低到O(n),保持了模型性能的同时减少了计算量。这些进展导致了更先进的架构,如Mamba和RWKV,它们结合了Transformer和RNN的元素,实现了线性时间和空间复杂度,同时在各种任务中表现出竞争性能。
1.3 神经架构搜索技术
神经架构搜索技术(NAS)旨在自动发现针对特定任务和硬件约束的最有效模型架构。尽管NAS在视觉任务和BERT模型上取得了进展,但在大规模语言模型上的应用仍面临挑战。最近的研究,如MobileLLM,通过研究模型深度和宽度对性能的影响,有效地在较小参数范围内进行了架构搜索。Shen等人通过探索适当的初始化来缩小搜索空间,加快了搜索过程的收敛。
1.4 小型多模态模型
最新的多模态模型在减少参数数量的同时,保持了与大型模型相当的性能。这些模型通过使用更小的语言模型和减少视觉编码器的规模来实现轻量化。例如,InternVL2利用大型视觉编码器中间层的输出,而PaliGemma和Mini-Gemini采用轻量级视觉编码器。单片多模态模型如Chameleon和Mono-InternVL通过完全消除视觉编码器,转而使用轻量级架构来生成视觉符元,进一步推动了这一趋势。这些模型通过特定于模态的前馈网络,称为多模态专家混合模型,以区分不同模态,实现了在保持性能的同时减少计算和资源需求。
2. SLMs中的训练技巧?
2.1 预训练技术
混合精度训练是提升大型语言模型(LLM)预训练效率的关键技术,它结合了不同精度的数值表示,以优化计算效率。自动混合精度(AMP)和Brain Floating Point(BFLOAT16)是两种方法,它们在保持模型性能的同时减少了训练中的数值精度损失。现代GPU架构通过张量核心增强了这些能力,NVIDIA的Hopper架构甚至支持8位浮点数(FP8)精度,进一步提升了计算效率。此外,优化器如Adam和AdamW,以及内存效率更高的变体如Adafactor,被用来提高训练速度和效率。梯度裁剪和仔细的初始化策略也是保持训练稳定性的重要组成部分。分布式计算资源和系统级优化技术,如零冗余数据并行(ZeRO)和全分片数据并行(FSDP),使得模型能够使用更大的批次大小进行训练,提高了效率和可扩展性。
2.2 微调技术
参数高效微调(PEFT)通过更新少量参数或添加轻量级模块来适应新任务,同时保持大部分预训练参数不变。这种方法降低了计算成本,减少了过拟合,并提高了模型的灵活性。技术如LoRA、提示微调和Llama-Adapter等,通过不同的机制实现了参数高效微调,而动态适配器则通过组合多个适配器来实现多任务学习,防止模型遗忘。
3. SLMs中的模型压缩?
3.1 剪枝技术
剪枝技术通过减少模型参数来提升计算效率和降低内存使用量。无结构剪枝通过删除单个不重要的权重来实现细粒度的模型压缩,而结构化剪枝则通过删除整个参数组来保持硬件实现的效率。例如,SparseGPT通过稀疏回归问题进行大型语言模型的剪枝,而NVIDIA的TensorRT利用稀疏模式优化内存访问和计算负载。结构化剪枝则关注于神经元的稀疏性,如Li等人观察到的前馈网络中的稀疏性,以及Mirzadeh等人通过改变激活函数来提高激活稀疏性。
3.2 量化
量化技术用于压缩大型语言模型(LLM),通过将权重和激活映射到较低精度的表示来减少模型大小。GPTQ专注于逐层权重量化,而其他方法如AWQ和ZeroQuant则同时量化权重和激活,以利用快速整数矩阵乘法的优势。SmoothQuant和SpinQuant解决了激活量化中的异常值问题,而量化感知训练(QAT)方法如LLM-QAT和EdgeQAT通过与float16模型的蒸馏来恢复量化误差。
3.3 知识蒸馏技术
知识蒸馏涉及训练一个“学生”模型来复制一个更大、更复杂的“教师”模型的行为。Babyllama是使用Llama模型作为教师开发紧凑型语言模型的早期例子之一。Gu等人改进了蒸馏损失,以生成更高质量的响应。Liang等人通过使用任务感知过滤器来扩展逐层蒸馏策略。Boizard等人引入了通用logits蒸馏损失来解决教师和学生模型共享相同词元化器的问题。Hsieh等人发现,在蒸馏过程中使用“理由”作为额外的监督可以提高样本效率,而Dai等人将推理链从一个更大的语言模型蒸馏到一个更小的语言模型,以提高算术、多步数学、符号和常识推理能力。
看到这里,也顺手转发给关注大模型及人工智能技术的朋友们吧!更多内容请查阅综述原文:
论文链接:https://arxiv.org/pdf/2410.20011
致谢
如果您觉得这篇文章对你有帮助或启发,请不吝点赞、在看、转发,让更多人受益。同时,欢迎给个星标⭐,以便第一时间收到我的最新推送。每一个互动都是对我最大的鼓励。让我们携手并进,共同探索未知,见证一个充满希望和伟大的未来!