当前位置: 首页 > news >正文

一文学会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

MPTAliBi EmbeddingsMulti-head
Attention     (MHA)
FalconRotary EmbeddingsMulti-Query Attention
Llama2Rotary 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_projdown_projgate_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大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈


http://www.mrgr.cn/news/58290.html

相关文章:

  • Transformer编码器结构及运算过程的符号表示
  • 初识jsp
  • django celery 定时任务 Crontab 计划格式
  • 硬件基础知识补全计划【一】电阻
  • MoCoOp: Mixture of Prompt Learning for Vision Language Models
  • 多线程初阶(七):单例模式指令重排序
  • qt中qjson存储的是string类型的数据时,对于““和null的区别
  • echarts 矩阵树图treemap
  • 当遇到 502 错误(Bad Gateway)怎么办
  • HarmonyOS 5.0应用开发——Navigation实现页面路由
  • 光谱指标-预测含水量-多种特征提取方式
  • 【数据结构和算法】一、算法复杂度:时间复杂度和空间复杂度)
  • Electron 是一个用于构建跨平台桌面应用程序的开源框架
  • Docker:容器化的革命
  • 【EndNote使用教程】创建文献库、导入文献、文献分类
  • DAY62WEB 攻防-PHP 反序列化CLI 框架类PHPGGC 生成器TPYiiLaravel 等利用
  • 设备管理智能化:中小企业的Spring Boot系统
  • 介绍一款Java开发的企业接口管理系统和开放平台
  • 27.8 把target做一致性哈希进行分发
  • 双十一电容笔选哪个好?!西圣、益博思、吉玛仕电容笔实测对比!
  • 区块链行业低迷的原因及未来发展展望
  • 【贪心算法】(第十四篇)
  • 落实安全左移迫在眉睫 | 伊朗APT34组织针对阿联酋及海湾关键基础设施发动攻击
  • uniapp:sqlite最详细教程,小白可直接粘贴复制
  • Linux 学习笔记(十七)—— 文件系统
  • MultipartFile文件与传递body并存问题