一文学会LLM参数量计算
01
引言
大型语言模型通常是在海量数据集上训练的神经网络,用于理解和生成人类语言。它们依赖于Transformer等架构,这些架构使用诸如自注意力机制来处理和生成文本。
模型参数是这些模型的核心组件,它们包括权重weight和偏差bias,模型在训练期间会调整它们以最大限度地减少预测中的误差。参数的数量通常与模型的容量和性能相关。
02
基础知识
自Meta发布基础模型LLama 系列后,我们目睹了各种基于Llama 的微调开源模型(如Alpacca 和Vicuna 等)。一些典型的模型如Falcon , MPT , 以及 Llama-2 和 Llama-3 等流行模型已成为主流模型选择。
值得一提的是,所有这些模型都有一个共同的基础模型结构,即Decoder-Only Transformer 模型。这些变种的区别在于位置嵌入以及注意力机制的选择的不同。
Model | Positional Embeddings | Attention Mechanism |
MPT | AliBi Embeddings | Multi-head Attention (MHA) |
Falcon | Rotary Embeddings | Multi-Query Attention |
Llama2 | Rotary Embeddings | Grouped Query Attention for 70B MHA for 13B and 7B |
本文将指导大家计算 Llama-2-13B 模型的参数量,我们将逐步拆解每层进行计算,并和使用Pytorch给出的结果进行比对确认。
03
Llama-2模型结构
首先,我们来加载Llama-2 模型,并尝试打印其模型结构,代码如下:
from transformers import AutoTokenizer, AutoModelForCausalLM# You can create token for ur account here: https://huggingface.co/settings/tokensmodel_name = "meta-llama/Llama-2-13b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model_name, token=token)
model = AutoModelForCausalLM.from_pretrained(model_name, token=token)
下图展示了该模型的具体网络结构,如下所示:
04
嵌入层参数计算
在本节,我们首先来观察上述结构中第一行嵌入层的参数计算。
大语言模型是以Tokens来看待文本的,Tokens是基础单元。Llama-2 使用 Bytepair encoding算法来定义这些基础单元,词汇量为 32,000 个。一旦模型对文本进行了Token化,它就会用大小为 dim 的固定嵌入来表示每个标记。特别是 Llama-2,它使用的嵌入维度为 dim=5120。
因此,嵌入层的参数总数为: 32000X5120=163840000 个。
05
注意力块参数计算
接着我们来关注自注意力块的参数量计算,其代码实现如下:
如我们在第二节中的表格所示,70B 版本的Llama-2 采用了分组查询注意力机制GQA , 而13B 版本的模型则采用了多头注意力机制MHA 。值得注意的是,GQA 涉及在每个组内共享 Key-Value 对,从而减少了推理过程中KV-Cache的大小。。
在Llama-2-13B 的 MHA 块中,有 40 个注意力头,每个注意力头的维度为 128。因此,W_Q 矩阵的大小计算为 5120 x (128 x 40),即 26 214 400 个参数。重要的是,在 MHA 块中,W_O、W_K 和 W_V 矩阵的维数与 W_Q 相同。
因此,整个自注意力模块的参数量为 4X5120X(128X40) = 104857600 个。
06
MLP块参数计算
接着我们来看MLP块,其结构为:
Llama-2 采用了独特的多层感知器(MLP)架构,使其有别于Transformer模型中常见的up_proj 和down_proj 操作。在一般情况下,标准 MLP 模块的结构如下:
out = down_proj(actn_fn(up_proj(input)))
不过,在 Llama-2 中,MLP 模块由三个基本层组成:up_proj、down_proj 和 gate_proj,这三个层的组合创造了一个独特的架构:
out = down_proj( act_fn(gate_proj(input)) x up_proj(input) )
据此我们可以计算,up_proj 层的大小为 5120 x 13824,从而得到 70 778 880 个参数。同样,down_proj 层的大小为 13824 x 5120,而 gated_proj 层的大小为 5120 x 13824。
因此,整个MLP 块的参数总计为 3X5120X13824 = 212336640 。
07
RMS归一化层参数计算
Llama-2 使用的是 RMSNorm,而不是论文 《Attention is All You Need》中提到的 LayerNorm。RMSNorm 使用激活的均方根进行归一化,并使用可学习的参数对其进行缩放。
上述公式中 g_i 的维数与 a_i 相同,在Llama-2-13B 中均为 5120。RMSNorm 应用于每层的 Attention 模块和 MLP 模块之前。此外,在 LM-head之前也使用了 RMSNorm。
因此,在transformer decoder block中的 RMS归一化层的参数量为:2X5120。在LM-head之前的归一化层的参数量为 5120.
08
LM head层参数计算
最后,我们来看 LM-head 分类头的结构,代码实现为:
最终的 LM 分类头接收了 5,120 维特征,并将其分为 32,000 个类别。
因此,lm_head_param = 5120X32000=163840000
09
计算总参数量
在Transformer架构中,注意力模块和 MLP 模块合并为一个Transformer层,并重复多次。要计算参数总数,我们可以使用下面的公式:
Total parameters = embed_parameters + num_layers x (attn_module_parameters
+ mlp_block_parameters + per_layer_rms_norm_ parameters)
+ pre_lm_head_rms_norm_parameters + lm_head_parameters
带入相应的数值,结果如下:
Total parameters = 163,840,000 + 40 x ( 104,857,600 + 212,336,640 + 5,120 x 2) + 5, 120 + 163,840,000
= 13,015,864,320
10
Pytorch验证
要确定上面加载的 PyTorch 模型中的参数数量,可以使用下面的代码片段:
num_parameters = sum(p.numel() for p in model.parameters())
print(num_parameters)# Number of parameters in Llama-2-13B: 13015864320
所以,我们的计算结果完全正确!
11
总结
本文探讨了如何计算LLM大语言模型的参数总量,通过逐层拆解计算,可以弄清楚每一层的参数量,最后通过和Pytorch的计算结果进行核验,证实了我们的计算过程,希望可以帮助大家处理其他模型的参数计算。
在大模型时代,我们如何有效的去学习大模型?
现如今大模型岗位需求越来越大,但是相关岗位人才难求,薪资持续走高,AI运营薪资平均值约18457元,AI工程师薪资平均值约37336元,大模型算法薪资平均值约39607元。
掌握大模型技术你还能拥有更多可能性:
• 成为一名全栈大模型工程师,包括Prompt,LangChain,LoRA等技术开发、运营、产品等方向全栈工程;
• 能够拥有模型二次训练和微调能力,带领大家完成智能对话、文生图等热门应用;
• 薪资上浮10%-20%,覆盖更多高薪岗位,这是一个高需求、高待遇的热门方向和领域;
• 更优质的项目可以为未来创新创业提供基石。
可能大家都想学习AI大模型技术,也_想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把都打包整理好,希望能够真正帮助到大家_。
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,下面是我整理好的一套完整的学习路线,希望能够帮助到你们学习AI大模型。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF书籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型各大场景实战案例
结语
【一一AGI大模型学习 所有资源获取处(无偿领取)一一】
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈