大模型时代下小模型知多少?从模型结构、预训练数据到运行时成本分析总结

devtools/2024/10/18 16:54:32/

今天,我们来谈谈小模型。《Small Language Models综述,Small Language Models: Survey, Measurements, and Insights》:https://arxiv.org/pdf/2409.15790这个工作,会有一些启发。

本文主要介绍三个话题,一个是小模型的运行时成本分析、小模型预训练数据总结以及什么是小语言模型,这些实验对比结论,对我们增强对大模型的认识,很有用处。

持续跟进,持续思考,供大家一起参考并思考。

一、什么是小语言模型

SLMs已经引起了研究和工业界的越来越多的关注。值得注意的是,自2023年底以来,SLM模型的数量显著增加。

其中,“小”的定义是主观的,并且是相对的。随着时间的推移,它也可能发生变化,考虑到设备内存在不断增加,并且将来可以承载更大的“小型语言模型”。将SLMs的大小上限设定为5B,因为截至2024年9月,7B LLMs主要还是在云端部署。

为了理解它们的能力与成本,根据以下标准全面收集了SLMs:(1)只收集具有仅解码器Transformer架构的模型(其性能优越且在现实世界中易于部署);目前不包括变体,如RWKV和Mamba。

(2)只收集具有开放权重的SLMs,以便可以评估它们。

(3)本文中SLMs的权重范围定义在100M到5B之间。

(4)调查主要关注来自预训练过程中的基础知识,因此我们只收集SLMs的基础模型,除非它们只提供了指导版本(Microsoft Phi和StabilityAI StableLM)。

根据这些标准,选择了59个SLMs,如表1所详述。

选择涵盖了来自工业界和学术界的各种模型,基于模型架构、参数大小和数据可用性等因素。虽然所有选定的SLMs都具有相似的架构,但它们在特定的超参数和训练数据集上有所不同,有些数据集仍然是封闭源代码的。这些变化导致了不同任务上的性能差异。

二、小模型的模型结构总结

虽然研究聚焦于仅具有解码器的Transformer SLMs,但这些模型的具体配置仍然多样化。Transformer的核心是多头自注意力(MHA)机制和前馈神经网络(FFN)。

1、模型架构分析

1)自注意力的类型:SLMs主要使用三种自注意力机制:多头注意力(MHA)、多查询注意力(MQA)、分组查询注意力(GQA)和多头潜在注意力(MLA)。这些机制在不同的SLMs中有不同的应用和变化。

2)前馈神经网络的类型:前馈网络可以分为标准FFN和带门控的FFN。标准FFN是带有激活函数的两层神经网络,而带门控的FFN增加了额外的门控层。

3)前馈网络的中间比例:FFN的中间比例是中间维度与隐藏维度的比率。不同的FFN类型和配置在这个比例上有所差异。

4)前馈神经网络的激活函数:FFN使用的激活函数主要有ReLU、GELU、GELUtanh和SiLU。这些激活函数在不同时间发布的模型中有不同的偏好。

5)层归一化类型:层归一化主要有LayerNorm和RMSNorm两种类型。随着时间的推移,这些归一化技术的使用有所变化。

6) 词汇量大小:词汇量是SLM能够识别的独特标记的总数。模型的词汇量随着时间的推移逐渐增加,最新模型的词汇量通常超过50k。

2、模型架构创新

1)参数共享:参数共享是大型语言模型中使用的一种技术,它允许在网络的不同层或组件之间重用同一组权重。这可以显著减少参数数量,从而提高训练和推理的效率,同时保持性能。

2)逐层参数缩放:这种技术最初由OpenELM提出。与每个Transformer层使用相同配置的传统SLMs不同,OpenELM中每个Transformer层有不同的配置,从而在模型的每个层中实现参数数量的变化。

3)非线性补偿:一些模型采用了非线性补偿技术来解决特征崩溃问题,例如在FFN中采用系列激活函数,并在MHA中集成增强的快捷方式。

总的来说,截至2024年8月,典型的SLM架构倾向于使用分组查询注意力、带SiLU激活的门控FFN、FFN的中间比例在2到8之间、RMS归一化,以及大于50K的词汇量。然而,这些设置的选择大多是基于经验的,没有严格的公开验证来证明这些模型容量的优越性。

此外,当今SLMs对Transformer架构的创新是有限的。对于少数进行了架构创新的模型(除了嵌入-lm头共享之外),并没有观察到它们明显优于原始Transformer的强有力证据,也没有被不同研究小组或公司普遍采用或研究。这些创新的重要性仍有待探索和验证。

三、小模型预训练数据总结

真堵开源预训练数据集在训练SLMs时的使用情况。作者发现共有12个这样的数据集被使用,包括如The Pile、FineWeb-Edu、StarCoder、Cosmopedia、RefinedWeb、RedPajama、Dolma、WuDaoCorpora、RoBERTa CCNewsV2、PushShift.io Reddit、DCLM-baseline和CulturaX等。

1、数据集使用偏好

通过统计2022年至2024年期间的数据集使用频率,发现选择变得越来越多样化。例如,The Pile在2022年和2023年最常被使用,但最近逐渐被其他数据集如RefinedWeb和RedPajama所取代。

2、数据集质量比较

作者还研究了基于SLMs性能的开源预训练数据集的质量。他们根据模型参数数量将过去三年的SLMs分为小于0.5B、1B、2B和3B的组,并根据常识推理/理解问题解决的平均准确率对这些组进行了排序。

研究发现,最近发布的两个数据集,DCLM和FineWeb-Edu,显示出比其他数据集更优越的性能。这些数据集的一个共同特点是采用了基于模型的数据过滤。

3、模型参数数量与训练token数量的关系

分析了2022年至2024年间训练令牌数量与SLMs模型参数数量的关系。通常,模型越大,用于训练的令牌数量就越多,较新的模型倾向于有更多的训练令牌。

值得注意的是,与Chinchilla法则建议的参数数量与训练令牌数量的最佳比例约为20相比,SLMs通常被训练在更多的训练令牌上(通常超过1.5T),无论它们的参数大小如何。

训练token数量与模型准确率的关系

通常,令牌数量与模型准确率之间存在正相关关系,尤其是对于那些训练令牌少于700B的模型。然而,当训练令牌超过1T时,这种相关性变得较弱,因为数据质量通常比更多的训练令牌的影响更大。

最后,也有一些具体的发现,例如:

数据质量对SLMs的能力至关重要,这一点在最近的SLMs研究中越来越受到重视。数据质量对最终SLMs能力的重要性通常超过了数据数量和模型架构配置。数据集研究的一个显著趋势是使用基于模型的过滤,这导致了两个最先进的开源预训练数据集:FineWeb-Edu和DCLM-baseline。

最近的SLMs在大量的训练token上进行训练(通常超过1.5T),不管它们的参数大小如何。在某些情况下,较小的SLMs甚至比更大的SLMs接受了更多的数据训练。这表明这些SLMs在训练时显著“过度训练”。这样做的动机是通过在训练时投入更多的计算资源,将功能强大的SLMs部署在资源受限的设备上。

三、小模型的运行时成本分析

通过不同参数大小模型的延迟和内存使用情况的总体分析,并研究量化方法和硬件对模型延迟的影响,可以对模型的不同部分的延迟和内存使用进行了详细分解后得到一些结论;

先看这个设置,有点意思,在Jetson Orin Module(常用于边缘AI设备)和智能手机(日常使用)上评估了20个模型,使用开源推理引擎llama.cpp进行所有实验,以消除推理引擎实现的差异,并记录模型参数、预填充和解码阶段的延迟以及运行时内存使用情况。

可以得到以下几个结论:

1、推理延迟:分析了从0.1B到3B参数大小的模型的推理延迟,包括首令牌时间和每令牌解码延迟。这些延迟随模型大小的增加而增加,但特定架构的模型在预填充阶段的延迟差异显著。

2、内存占用:内存占用测试表明,随着模型大小的增加,内存占用也线性增加。然而,拥有较大词汇量的模型(如Bloom系列)的内存使用量更大。

3、模型架构对延迟的影响在预填充阶段比解码阶段更为显著,因为预填充阶段的计算密度更高。

4、运行时内存使用通常与模型参数数量线性相关,但词汇量较大的模型内存使用量更大。

5、量化的影响:量化可以显著减少推理延迟,尤其是在预填充阶段。然而,随着提示长度的增加,量化带来的优势会减少。在解码阶段,量化带来的优势比预填充阶段更大。

6、硬件的影响:在Jetson Orin NX 16GB GPU上,预填充阶段的延迟比智能手机CPU低得多。智能手机在长时间推理任务中的延迟稳定性较差,而Jetson由于更有效的散热系统,延迟更稳定。GPU在预填充阶段比CPU有更大的优势,因为它能更好地处理令牌的并行处理。

7、 延迟分解:分析了Qwen1.5-0.5B和Qwen2-0.5B这两个参数相似但延迟不同的模型,发现矩阵-向量乘法操作占用了大部分推理时间。矩阵-向量乘法是SLM中最耗时的操作,占端到端推理时间的70%以上。

8、内存分解:内存使用主要由模型参数、KV缓存和计算过程中的中间变量决定。具有较大词汇量的模型需要更大的计算缓冲区。当上下文长度达到32,000时,KV缓存将占用超过80%的内存。

总结

本文主要回顾了三个话题,一个是小模型的运行时成本分析、小模型预训练数据总结以及什么是小语言模型,这些实验对比结论,对我们增强对大模型的认识,很有用处。大家可以多看看。

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

学习路线

在这里插入图片描述

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

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

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

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

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

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

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

在这里插入图片描述

👉学会后的收获:👈

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

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

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

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

在这里插入图片描述

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

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


http://www.ppmy.cn/devtools/122089.html

相关文章

滚雪球学Oracle[5.6讲]:资源管理与调优

全文目录: 前言一、Oracle Resource Manager的配置与使用1.1 什么是Oracle Resource Manager1.2 Oracle Resource Manager的优势1.3 配置Oracle Resource Manager案例演示:配置Resource Manager 二、基于服务的资源分配策略2.1 基于服务的资源管理典型场…

项目-坦克大战学习-控制人机发射子弹以及玩家受到攻击

控制人机发射子弹有几个条件,发射子弹的间隔以及攻击对象的筛选 我们前面已经将子弹生成程序写出来了,在子弹类中我们定义了枚举类型用来分辨是谁发射出来的子弹 玩家发射出来的子弹定义: duixiangweizhi.zidan(x, y, zidanen.wanjia, Fang…

助农小程序|助农扶贫系统|基于java的助农扶贫系统小程序设计与实现(源码+数据库+文档)

助农扶贫系统小程序 目录 基于java的助农扶贫系统小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 5.1.1 农户管理 5.1.2 用户管理 5.1.3 订单统计 5.2.1 商品信息管理 5.3.1 商品信息 5.3.2 订单信息 5.3.3 商品评价 5.3.4 商品退货 四、数据库设计 1、…

Hive数仓操作(二)

Hive 数据类型与连接 Hive 是一个用于处理大规模数据集的工具,支持多种数据类型以满足不同的需求。本文将详细介绍 Hive 的基本数据类型和集合数据类型。 一、Hive 基本数据类型 Hive 提供了多种基本数据类型,适用于不同的数据存储和处理需求&#xf…

KEYENCE Programming Contest 2024(AtCoder Beginner Contest 374) 题解

A - Takahashi san 2 Problem Statement KEYENCE has a culture of addressing everyone with the suffix “-san,” regardless of roles, age, or positions. You are given a string S consisting of lowercase English letters. If S ends with san, print Yes; otherwi…

【力扣 | SQL题 | 每日四题】力扣1783,1757,1747,1623,1468,1661

昨天晚上睡着了,今天把昨天的每日一题给补上。 1. 力扣1783:大满贯数量 1.1 题目: 表:Players ------------------------- | Column Name | Type | ------------------------- | player_id | int | | player_na…

C++ | Leetcode C++题解之第458题可怜的小猪

题目&#xff1a; 题解&#xff1a; class Solution { public:int poorPigs(int buckets, int minutesToDie, int minutesToTest) {if (buckets 1) {return 0;}vector<vector<int>> combinations(buckets 1,vector<int>(buckets 1));combinations[0][0] …

CentOS 7 系统中安装与配置 Telnet 服务详解(使用root登录)

目录 前言1. 安装 Telnet 服务端2. 配置 Telnet 服务允许 root 用户登录3. 启动与管理 Telnet 服务4. 配置防火墙允许 Telnet 通信5. 注册 Telnet 服务6. 添加 pts/0 终端7. 重启 xinetd 服务8. 在 Windows 本地终端安装 Telnet 客户端结语 前言 Telnet 是一种网络协议&#x…