AI 领域新宠:小语言模型 (SLM)
背景与挑战
大语言模型(LLM)在过去几年产生了巨大影响,特别是随着 OpenAI 的 ChatGPT 的出现,各种大语言模型如雨后春笋般涌现。国内如 KimiChat、通义千问、文心一言和智谱清言等也相继发布。
然而,大语言模型通常拥有庞大的参数,从数十亿到数千亿,甚至到数万亿。例如通义千问发布的开源模型就包含了 70 亿、140 亿和 720 亿等多个规模的版本;而最近发布的 Llama3 大模型则是有 80 亿和 700 亿两个版本;广为人知的 ChatGPT-3 最大的一个模型参数则达到了 1750 亿。
大模型的参数越多,一般意味着它能够捕捉和处理更丰富的信息和更复杂的模式,回答的效果会更好。但是它们对于个人电脑、智能手机和其他智能设备来说计算量却太大,尽管出现了量化等技术,推理延迟和硬件成本依然是主要瓶颈。
由于上述原因,人们对小语言模型(SLM)的兴趣日益浓厚。SLM 旨在在保持合理性能的同时,显著降低计算资源需求,使其能够部署在边缘设备上。最近也出现了几款比较出名的小语言模型,以下将详细分析。
主流小语言模型分析
Phi-3 模型
Phi-3 是微软最近发布的一系列开放式 AI 模型,也是现有功能最强大、最具成本效益的小语言模型之一。
目前主要提供了 mini 版本,即 Phi-3-mini。这个版本拥有 38 亿个参数(3.8B),经过 3.3 万亿 token 的训练,并且被优化至可部署在手机上。如果想体验的话,可以在 Microsoft Azure AI Studio 或者 Ollama 上使用。
Phi-3-mini 一共支持两种上下文长度,分别是 4K 和 128K。其中 128K 的上下文长度是同类产品第一个支持的,这对于处理长文档、代码库或复杂对话历史至关重要,且对质量影响很小。而且 Phi-3-mini 是经过指令微调的,这意味着它可以开箱即用,无需额外的提示工程即可理解用户意图。
虽然 Phi-3-mini 参数很小,但是它表现良好,能够与 Mixtral 8x7B 和 GPT-3.5 等模型相媲美。不过需要注意的是,Phi-3 在事实基准测试上(如 TriviaQA)表现不佳,这是因为较小的模型大小会导致保留事实的能力较低,需要结合检索增强生成(RAG)技术来弥补知识时效性和准确性的不足。
微软在后续的几周内还会推出 7B 和 14B 两个型号,也就是图中的 Phi-3-small 和 Phi-3-medium,以满足不同场景的需求。
OpenELM 模型
OpenELM 是 Apple 团队最近发布的模型,这是一个旨在在手机和笔记本电脑上运行的开源小语言模型(SLM)系列。
这个系列一共包含了 2.7 亿、4.5 亿、11 亿和 30 亿四个参数版本(有预训练和指令微调版本,一共 8 个型号)。OpenELM 模型的突出特点是其内存和计算效率。它们建立在一系列最新的优化技术之上,这些技术减少了语言模型的内存和计算占用量。
根据 Apple 团队的描述,OpenELM 还使用了分层缩放策略(Hierarchical Scaling Strategy),即以非均匀的方式将参数分配给注意力层和前馈层,这与经典的 Transformer 模型相反,经典的 Transformer 模型在所有层上具有统一的结构。这种策略在参数预算约为 10 亿个参数的情况下,与 OLMo 相比,精度提高了 2.36%,同时需要的预训练令牌减少了 2 倍。
在性能上,OpenELM 的性能优于使用公开数据集进行预训练的现有开源 LLM。值得一提的是,苹果这次发布了完整的框架,包括数据准备、训练、微调和评估程序,以及多个预训练的 checkpoint 和训练日志,其目标是'赋权和加强开放研究社区',这与苹果之前的闭源生态形成了鲜明对比。
Gemma 模型
Gemma 由 Google DeepMind 和 Google 的其他团队开发,灵感来自 Gemini,其名称反映了拉丁语 gemma,意思是'宝石'。
Google 一共发布了两种尺寸的模型,分别是 Gemma 2B 和 Gemma 7B,每个尺寸都发布了经过预训练和指令调整的变体,并且能够直接在开发人员笔记本电脑或台式电脑上运行。
在官方的博客上提到,由于 Gemma 模型与 Gemini 模型共享技术和基础设施组件,这使得 Gemma 能够在同尺寸其他模型中保持比较好的性能。值得注意的是,Gemma 还有两个变体,分别是 CodeGemma 和 RecurrentGemma。
CodeGemma 注重的是编码功能,它也有几个不同的版本:一个 7B 的预训练变体,专门用于代码补全和代码生成任务;一个 7B 的指令调整变体,用于代码聊天和指令执行;还有一个 2B 的预训练变体,适用于快速代码补全,并且可以安装在你的本地计算机上。CodeGemma 与其他类似模型在单行和多行代码完成任务上的表现优异。
RecurrentGemma 注重的是推理能力,与其他模型不同的是,它并没有采用目前 LLM 的 Transformer 架构,而是基于 Google 新的 Griffin 架构。这种 Griffin 架构是一种比较独特的结构,主要利用了循环神经网络(RNNs)和局部注意力来提高记忆效率。
在 Transformer 架构出现之前,循环神经网络(RNNs)通常用于通过利用一个'隐藏状态'来处理序列数据,这个隐藏状态在处理数据时会不断更新。这个隐藏状态与一个'局部注意力'机制相结合,允许模型在不需要在每个步骤中回溯所有隐藏状态的情况下,回忆序列中早期的信息。


