如何通俗易懂地理解大模型参数?

大型语言模型 (LLM) 的大小是通过参数数量来衡量的。举几个典型例子,GPT-3 有 1750 亿个参数,1750亿也可称为175B(1B = 10亿),Meta最新开源的Llama3 参数数量在 80 亿到 700 亿之间,智谱公司最新开源的GLM4-9B参数为90亿。

这就有一个问题,什么叫做参数?

LLM 被称之为基于深度神经网络的大模型,为了了解这个非常复杂的模型,我们关注一个最简单并且与我们日常生活息息相关的的例子。

假设你是一名房地产经纪人,正在估算房屋的价值。你最近看到很多房子被卖出,并得出了一个简单的经验法则,即房子的价格约为每间房间 75,000 英镑。你可以用公式来表示:

从上面这公式可以看出,输入只有一个房间数量,75000称之为参数。然后再来看一个复杂一点的例子,我假设房子价格依赖于房间数量与修建年份,用公式表示为:

从上面这公式可以看出,输入有二个分别是房间数量和修建年份,其中50000-1000称之为参数

上面两个公式,我们可以理解成最简单意义上的模型。不过在实际情况中,会发现这两个模型都不是最准确的,房子价格受到周围多种因素影响,实际中可以列出一个更长的输入列表来影响房价,比如最近的学校有多远以及厕所的数量。通过往模型添加越来越多的输入和参数,并调整参数的值,模型可能会得到越来越好的房价估计。假设确定了7个你认为对房价最重要的输入。为了方便理解,可以画成图表。

其中输入在左侧。每个蓝色箭头将输入乘以一个参数,然后所有参数相加,得出绿色箭头处的估计房价。此图中有 7个参数,可以一直调整这7个参数(蓝色箭头),直到找到一个好的模型。

因此,参数是模型内部的数字,我们可以调整它以使其生成的结果更准确或更不准确。并且我们希望使用7个输入使模型比只有1个或2个输入时更准确。

怎么衍生到神经网络?

LLM 是神经网络模型。神经网络模型的构建模块与我们目前用于估算房价的模型非常相似,它的构建方法是将许多这些简单模型排列成网格排列,并排列成包含节点的层。

这个神经网络模型有 3 层,有 7 个输入。第一层有 2 个节点,第二层有 5 个节点,最后一层有 1 个节点。每条蓝线都是一个参数。

相同点:与上一个模型一样,输入为7个,输出仍然是房价的估计值。

不同点:在于模型的复杂程度。这个神经网络内部有更多的步骤来将输入转换为输出。因此,我们希望这个更复杂的模型可以为我们提供更好的房价估计。与以前模型一样,每个参数都可以调整以使模型更好。

怎么衍生到大模型?

LLM 是大型神经网络,由许多输入和许多参数组成。LLM与我们的房价神经网络示例的主要区别在于:

  • LLM 将单词作为输入和输出。
  • LLM 的神经网络内部结构与上述示例不同,目前主流LLM使用类似Transformer的网络架构 。
  • LLM 有许多层以及数十亿个参数。

这里的关键点是,参数是模型内部的数字,可以对其进行调整以使模型的预测更准确或更不准确。在非常简单的模型中,我们可以考虑手动调整参数。对于神经网络和其他复杂模型,参数是在称为模型训练的过程中调整的。

实战-分析llama3 8B的参数

随着huggingface transformers的流行,越来越多的模型采用了.safetensors的文件存储格式。本实战主要分析huggingface llama3 8B格式的模型权重。

代码如下:

1.查看有哪些参数

import os
import torch
import safetensors.torch
model_path = PATH_TO_YOUR_MODEL
model = safetensors.torch.load_file(os.path.join(model_path,"model-00001-of-00004.safetensors"))
print(json.dumps(list(model.keys())[:20], indent=4))
["model.embed_tokens.weight","model.layers.0.input_layernorm.weight","model.layers.0.mlp.down_proj.weight","model.layers.0.mlp.gate_proj.weight","model.layers.0.mlp.up_proj.weight","model.layers.0.post_attention_layernorm.weight","model.layers.0.self_attn.k_proj.weight","model.layers.0.self_attn.o_proj.weight","model.layers.0.self_attn.q_proj.weight","model.layers.0.self_attn.v_proj.weight","model.layers.1.input_layernorm.weight","model.layers.1.mlp.down_proj.weight",...."model.layers.2.input_layernorm.weight"
]

2.加载权重

model = safetensors.torch.load_file(os.path.join(model_path,"model-00001-of-00004.safetensors"))
model2 = safetensors.torch.load_file(os.path.join(model_path,"model-00002-of-00004.safetensors"))
model3 = safetensors.torch.load_file(os.path.join(model_path,"model-00003-of-00004.safetensors"))
model4 = safetensors.torch.load_file(os.path.join(model_path,"model-00004-of-00004.safetensors"))
model.update(model2)
model.update(model3)
model.update(model4)

3.分析参数

sum = 0
dict = {}
for key in list(model.keys()):dict[key] = torch.prod(torch.tensor(model[key].shape))sum = sum + dict[key]
print(f"总参数量:{sum/10**9}B")
# 总参数量:8.030261039733887B

最后,参数数量为8.03B,与llama3 8B的名字是对应上的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/23643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pESC-HIS是什么,怎么看?-实验操作系列-2

01 典型的pESC-HIS质粒遗传图谱 02 介绍 质粒类型:酿酒酵母蛋白表达载体 表达水平:高拷贝 诱导方法:半乳糖 启动子:GAL1和GAL10 克隆方法:多克隆位点,限制性内切酶 载体大小:6706bp 5 测…

浅谈一下实例化

实例化对象是面向对象编程中非常重要的概念,它允许我们根据类的定义创建具体的对象,并操作这些对象的属性和方法。下面具体谈一下实例化对象的一些特点和用途: 封装性和复用性:实例化对象可以将数据和行为封装在一起,从…

C++_如何改变std::tuple中元素的值,即使是const?

1. 需求 第三方库库函数&#xff0c;使用了 const std::tuple<name, id> 作为参数, 当需要改变这里tuple中元素的值&#xff0c; 怎么办&#xff1f; 答&#xff1a; 使用引用传参数&#xff0c;如何使用引用呢&#xff1f; 见如下代码. 2. 代码 #include <iostre…

GitHub最大的开源算法库

GitHub 上最大的开源算法库 The Algorithms&#xff0c;值得每位算法工程师收藏&#xff01; 该库收录了 Python、Java、C、JavaScript、Go 等多种主流编程语言的算法实现代码。 其中包含二分查找、快速排序、斐波那契数列等众多热门算法&#xff0c;可以说是应用尽有。 此外&a…

程序代写,代码编写

Java 项目代做&#xff0c;小程序&#xff0c;安卓&#xff0c;鸿蒙&#xff0c;VUE 程序代写 Java调试安装、项目运行、代码代做、环境配置、工具安装、代码讲解、代码调试、代码运行、代码部署、项目调试、项目部署、Java Web、Spring Boot、项目设计、前后端分离、代码报错解…

利用大语言模型进行事实匹配

论文地址:Automated Claim Matching with Large Language Models: Empowering Fact-Checkers in the Fight Against Misinformation | Companion Proceedings of the ACM on Web Conference 2024 WWW 2024 Automated Claim Matching with Large Language Models: Empowering F…

神经网络 torch.nn---优化器的使用

torch.optim - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.optim — PyTorch 2.3 documentation 反向传播可以求出神经网路中每个需要调节参数的梯度(grad)&#xff0c;优化器可以根据梯度进行调整&#xff0c;达到降低整体误差的作用。下面我们对优化器进行介绍。 …

[ZJCTF 2019]NiZhuanSiWei、[HUBUCTF 2022 新生赛]checkin、[SWPUCTF 2021 新生赛]pop

目录 [ZJCTF 2019]NiZhuanSiWei [HUBUCTF 2022 新生赛]checkin 1.PHP 关联数组 PHP 数组 | 菜鸟教程 2.PHP 弱比较绕过 PHP 类型比较 | 菜鸟教程 [SWPUCTF 2021 新生赛]pop [ZJCTF 2019]NiZhuanSiWei BUUCTF [ZJCTF 2019]NiZhuanSiWei特详解&#xff08;php伪…

安装 python3 其他版本(11)后 No module named ‘distutils.util‘

ModuleNotFoundError: No module named ‘distutils.util‘ 解决在colab切换python3.7遇到的报错_mac modulenotfounderror: no module named distutil-CSDN博客 sudo apt-get install python3.11-distutils python3.11 -m pip3 install pipenv

STM32-16-ADC

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32-11-电容触摸按键 STM32-12-OLED模块 STM32-13-MPU STM32-14-FSMC_LCD STM32-15-DMA…

docker-compose部署 kafka 3.7 集群(3台服务器)并启用账号密码认证

文章目录 1. 规划2. 服务部署2.1 kafka-012.2 kafka-022.3 kafka-032.4 启动服务 3. 测试3.1 kafkamap搭建&#xff08;测试工具&#xff09;3.2 测试 1. 规划 服务IPkafka-0110.10.xxx.199kafka-0210.10.xxx.198kafka-0310.10.xxx.197kafkamp10.10.xxx.199 2. 服务部署 2.1…

【启明智显技术分享】sigmastar ssd202d双网口开发板多串口调试说明

提示&#xff1a;作为Espressif&#xff08;乐鑫科技&#xff09;大中华区合作伙伴及sigmastar&#xff08;厦门星宸&#xff09;VAD合作伙伴&#xff0c;我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考。同时也用心整理了乐鑫及星宸…

Windows系统没有Hyper-v的解决方法

在控制面板-程序-启用或关闭Windows功能下找不到Hyper-v节点 Windows10解决方法&#xff1a; 解决办法 1.将下面命令复制到文本文档中&#xff0c;并将文档重命名Hyper.cmd pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt …

基于Python定向爬虫技术对微博数据可视化设计与实现

基于Python定向爬虫技术对微博数据可视化设计与实现 Design and Implementation of Weibo Data Visualization Based on Python Web Scraping Techniques 完整下载链接:基于Python定向爬虫技术对微博数据可视化设计与实现 文章目录 基于Python定向爬虫技术对微博数据可视化设…

GAT1399协议分析(9)--图像上传

一、官方定义 二、wirechark实例 有前面查询的基础,这个接口相对简单很多。 请求: 文本化: POST /VIID/Images HTTP/1.1 Host: 10.0.201.56:31400 User-Agent: python-requests/2.32.3 Accept-Encoding: gzip, deflate Accept: */* Connection: keep-alive content-type:…

LCTF 2018 bestphp‘s revenge

考点:Soap原生类Session反序列化CRLF注入 <?php highlight_file(__FILE__); $b implode; call_user_func($_GET[f], $_POST); session_start(); if (isset($_GET[name])) { $_SESSION[name] $_GET[name]; } var_dump($_SESSION); $a array(reset($_…

024、工具_慢查

1)发送命令 2)命令排队 3)命令执行 4)返回结果 需要注意,慢查询只统计步骤3)的时间,所以没有慢查询并不代表客 户端没有超时问题。 参数配置 slowlog-log-slower-than 单位是微秒(1秒=1000毫秒=1000000微秒),默认值是10000 lowlog-log-slower-than=0会记录所有的命…

【leetcode--文本对齐(还没整理完)】

根据题干描述的贪心算法&#xff0c;对于每一行&#xff0c;我们首先确定最多的是可以放置多少单词&#xff0c;这样可以得到该行的空格个数&#xff0c;从而确定该行单词之间的空格个数。 根据题目中填充空格的细节&#xff0c;我们分以下三种情况讨论&#xff1a; 当前行是…

TensorRT教程(1)初探TensorRT

1. TensorRT简要介绍 TensorRT&#xff08;NVIDIA TensorRT&#xff09;是 NVIDIA 开发的一个用于深度学习推理的高性能推理引擎。它可以针对 NVIDIA GPU 进行高效的深度学习推理加速&#xff0c;提供了许多优化技术&#xff0c;使得推理速度更快&#xff0c;并且可以在生产环境…

C语言实现教学计划编制问题,Dev C++编译器下可运行(240606最新更新)

背景&#xff1a; 问题描述 大学的每个专业都要编制教学计划。假设任何专业都有固定的学习年限&#xff0c;每学年含两学期&#xff0c; 每学期的时间长度和学分上限都相等。每个专业开设的课程都是确定的&#xff0c;而且课程的开设时间的安排必须满足先修关系。每个课程的先…