最近发现很多做训练和推理的朋友都在讨论大模型参数量和模型大小之间的关系。
例如羊驼系列 LLaMA 大模型,按照参数量的大小有四个型号:LLaMA-7B、LLaMA-13B、LLaMA-33B 与 LLaMA-65B。
这里的 B 是 billion 的缩写,指代模型的参数规模。故最小的模型 7B 包含 70 亿个参数,而最大的一款 65B 则包含 650 亿个参数。
这个参数量到底是怎么算出来的?另外一个问题,对于一个存储有 100G 大小的模型,到底对应大模型的什么级别的参数量呢,十亿、百亿、千亿还是万亿呢?今天我们就来聊聊这个问题。
我们以大模型的最基本结构 Transformer 为例,首先来看一下参数量是怎么算出来的。
transformer 由 L 个相同的层组成,每个层分为两个部分:self-attention 和 MLP 层。
其中 self-attention 块,不管用的是 self-attention 还是 multi-head self-attention,参数量计算并不影响。
因为在输入时,对 Q,K,V 三个向量都进行了线性变换,只是 multi-head self-attention 会对隐藏层 h 切分成 head 份而已。
那么 self-attention 块的参数量为:4h²+4h。
MLP 块由 2 个线性层组成,这两个层的 shape 是先将维度 h 映射到 4h,然后第二个线性层再将维度从 4h 映射回 h。
self-attention 和 MLP 块各有一个 layer normalization,包含了 2 个可训练的参数:尺度缩放参数 gamma,和平移参数 beta,形状都是 [h]。
那么这两个 layer normalization 参数量为:4h。
那么,每个 transformer 层的参数量就为:12h²+13h。
除此之外,还有输入部分的词嵌入参数,词向量的维度为 h,假设词表大小 vocab size 为 V。
那么词嵌入的参数量为 Vh,而输出层的权重矩阵通常与输入的词嵌入矩阵参数是共享的,不会引入额外的参数量。
关于位置编码,这部分参数比较少,可以忽略。其中,如果采用可训练的位置编码,那么参数量为 N*h,N 是最大序列长度,例如 chatgpt 的 4k。
如果采用的是相对位置编码,如旋转编码 RoPE 或者 AliBi,则这部分就没有可训练的参数。
综上所述,L 层的 transformer 模型的总参数量为 L(12h²+13h)+Vh,当隐藏维度 h 较大时,可以忽略一次项,模型参数量可以近似为 12Lh²。
接下来,我们估计一下 LLaMA 的不同尺寸版本的参数量大小,看验证下是否符合上述规律:
最后我们来看一下第二个问题,大模型参数量和模型大小是怎么换算的。
我们以 LLaMA-7B 为例,这个大模型参数量约为 70 亿,假设每个参数都是一个 fp32,即 4 个字节,总字节就是 280 亿字节,则 280 亿字节/1024/1024 = 26.7GB,当然这是原始的理论值,我们再往下看。
因为实际存储 weight 权重参数会存 fp16,所以模型大小继续减半为 13.35GB。
但是部分 layer norm 等数据会保留源格式 fp32,因此实际会稍微有所增加到 13.5GB 左右,看下图:
具体增加多少其实不是很重要了,因为在模型权重文件里面,参数量 98% 的大头是权重数据,其他数据占比其实很少,我们从开源的 LLaMA-7B 的实际的存储结果来看,是符合上面的计算的。
END
AI大模型学习路线
如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!
扫描下方csdn官方合作二维码获取哦!
这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
100套AI大模型商业化落地方案
大模型全套视频教程
200本大模型PDF书籍
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
LLM面试题合集
大模型产品经理资源合集
大模型项目实战合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
