LLM - 大模型 ScallingLaws 的 C=6ND 公式推导 教程(1)

news2025/1/19 3:10:58

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/145185794


Scaling Laws

Scaling Laws (缩放法则) 是大模型领域中,用于描述 模型性能(Loss) 与 模型规模N、数据量D、计算资源C 之间关系的经验规律,揭示在大模型中,随着模型参数数量、数据集大小和计算资源的增加,模型性能的变化模式,指导更高效地分配资源,优化模型训练过程,实现更好的性能。这些规律不仅有助于预测不同规模模型的表现,还能为模型设计和训练提供理论依据,是推动大模型发展和应用的重要理论基础。

  • Paper: Scaling Laws for Neural Language Models
  • 其他参考:计算 大语言模型(多模态) 的参数量

系列文章:

  1. 大模型 ScallingLaws 的 C=6ND 公式推导
  2. 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数
  3. 大模型 ScallingLaws 的迁移学习与混合训练

对于 Decoder-Only 模型,计算量 C C C (Flops)、模型参数量 N,数据大小 D D D (Tokens),三者近似满足 C ≈ 6 N D C \approx 6ND C6ND

1. 模型参数量 (N)

假设 Decoder 堆叠层数是 l l lAttention 隐藏层维度是 d d dFeedForward 维度是 4 d 4d 4d,其中,忽略 Embedding、Norm 和 Bias。

Transformer 的每 1 层包括 Self-AttentionMLP 等 2 个部分:

  • Self-Attention 的 参数量,包括 W Q , W K , W V , W O W_{Q},W_{K},W_{V},W_{O} WQ,WK,WV,WO 等 4个部分,维度均是 R d × d \mathbb{R}^{d \times d} Rd×d,整体参数量是 4 d 2 4d^2 4d2 (暂时忽略 MQA)
  • MLP 的参数量,只包括 W u p , W d o w n W_{up},W_{down} Wup,Wdown,维度均是 R d × 4 d \mathbb{R}^{d \times 4d} Rd×4d,整体参数量 2 ∗ 4 ∗ d 2 = 8 d 2 2*4*d^{2}=8d^{2} 24d2=8d2,(暂时忽略 W g a t e W_{gate} Wgate)
  • 全部层数 l l l 参数量,即 12 l d 2 12ld^{2} 12ld2

2. 模型计算量 (C)

模型的前向推理的计算量:

计算量的单位是 FLOPs (Floating Point Operations),对于矩阵 A ∈ R m × n , B ∈ R n × p A \in \mathbb{R}^{m \times n},B \in \mathbb{R}^{n \times p} ARm×n,BRn×p A B AB AB相乘的计算量为 2 m n p 2mnp 2mnp,计算每个元素 c i , j c_{i,j} ci,j 包括 1 次加法 1 次乘法,即每个点积运算都有 n n n 次 乘法和 n − 1 n-1 n1 次加法,即 2 × m n p 2 \times mnp 2×mnp

模型的反向推理的计算量是前向推理的 2 倍,即:

前向只需要结果往后传递,反向除了需要梯度往前传递,还需要计算当前参数 W W W 的梯度,更新当前的参数 W W W,因此计算量是 2 倍。

Decoder 的输入是 X ∈ R b × s × d X \in \mathbb{R}^{b \times s \times d} XRb×s×d,其中 b b b 是 batch size, s s s 是序列长度, d d d 是模型维度。

其中 Self-Attention 的 计算量:

  • 输入层计算: Q = X W Q , K = X W K , V = X W V Q=XW_{Q},K=XW_{K},V=XW_{V} Q=XWQ,K=XWK,V=XWV,即 3 × b × ( 2 × s × d × d ) = 6 b s d 2 3 \times b \times (2 \times s \times d \times d) = 6bsd^{2} 3×b×(2×s×d×d)=6bsd2
  • Attention 计算 Score: A = Q K ⊤ A=QK^{\top} A=QK ,使用 bmm (批次矩阵乘法),batch size 不变,计算过程是 b × R s × d × R d × s = b × R s × s b \times \mathbb{R}^{s \times d} \times \mathbb{R}^{d \times s} = b \times \mathbb{R}^{s \times s} b×Rs×d×Rd×s=b×Rs×s,计算量即 b × ( 2 × s × d × s ) = 2 b s 2 d b \times (2 \times s \times d \times s) = 2bs^{2}d b×(2×s×d×s)=2bs2d
  • Score 与 V 计算: X ′ = A V X^{'}=AV X=AV,计算过程是 b × R s × s × R s × d = b × R s × d b \times \mathbb{R}^{s \times s} \times \mathbb{R}^{s \times d} = b \times \mathbb{R}^{s \times d} b×Rs×s×Rs×d=b×Rs×d,计算量即 b × ( 2 × s × s × d ) = 2 b s 2 d b \times (2 \times s \times s \times d)=2bs^{2}d b×(2×s×s×d)=2bs2d
  • 输出层计算: X ′ W O X^{'}W_{O} XWO,计算过程是 b × R s × d × R d × d = b × R s × d b \times \mathbb{R}^{s \times d} \times \mathbb{R}^{d \times d} = b \times \mathbb{R}^{s \times d} b×Rs×d×Rd×d=b×Rs×d,计算量即 b × ( 2 × s × d × d ) = 2 b s d 2 b \times (2 \times s \times d \times d)=2bsd^{2} b×(2×s×d×d)=2bsd2
  • 合计: C A t t e n t i o n = 8 b s d 2 + 4 b s 2 d = b s d ( 8 d + 4 s ) C_{Attention}=8bsd^{2}+4bs^{2}d=bsd(8d+4s) CAttention=8bsd2+4bs2d=bsd(8d+4s)

其中 MLP 的 计算量,升维和降维的计算量相同:

  • 升维 X W u p XW_{up} XWup,计算过程是 b × R s × d × R d × 4 d = b × R s × 4 d b \times \mathbb{R}^{s \times d} \times \mathbb{R}^{d \times 4d} = b \times \mathbb{R}^{s \times 4d} b×Rs×d×Rd×4d=b×Rs×4d,计算量 b × ( 2 × s × d × 4 d ) = 8 b s d 2 b \times (2 \times s \times d \times 4d)=8bsd^{2} b×(2×s×d×4d)=8bsd2
  • 同理,降维也是一样。
  • 合计: C M L P = 16 b s d 2 C_{MLP}=16bsd^{2} CMLP=16bsd2

则每层的计算量:

C L a y e r = C A t t e n i o n + C M L P = 24 b s d 2 + 4 b s 2 d = b s d ( 24 d + 4 s ) C f o r w a r d = l b s d ( 24 d + 4 s ) C_{Layer}=C_{Attenion}+C_{MLP}=24bsd^{2}+4bs^{2}d=bsd(24d+4s) \\ C_{forward}=lbsd(24d+4s) CLayer=CAttenion+CMLP=24bsd2+4bs2d=bsd(24d+4s)Cforward=lbsd(24d+4s)

反向传播是正向传播的 2 倍,合计是 3 倍,即:

C = 3 × C f o r w a r d = 72 l b s d 2 + 12 l b s 2 d = 12 l b s d ( 6 d + s ) C= 3 \times C_{forward} = 72lbsd^{2} + 12lbs^{2}d = 12lbsd(6d + s) C=3×Cforward=72lbsd2+12lbs2d=12lbsd(6d+s)

1.3 合计

模型参数量是 N = 12 l d 2 N=12ld^{2} N=12ld2,计算量是 C = l b s d ( 72 d + 12 s ) C=lbsd(72d + 12s) C=lbsd(72d+12s),假设 s ≪ 6 d s \ll 6d s6d,那么:

C = 12 l d 2 × b s × ( 6 + s d ) = 6 × b s × 12 l d 2 × ( 1 + s 6 d ) = 6 × b s × N C = 12ld^{2} \times bs \times (6+\frac{s}{d}) = 6 \times bs \times 12ld^{2} \times (1+\frac{s}{6d}) = 6 \times bs \times N C=12ld2×bs×(6+ds)=6×bs×12ld2×(1+6ds)=6×bs×N

那么每个 Token 的计算量,即 除以 b s bs bs,整体计算量再 乘以 全部数据集(Token) D D D,即:

C = 6 × N × D C=6 \times N \times D C=6×N×D

参考:

  • 知乎 - 为什么反向计算是前向耗时的两倍?
  • GitHub - backprop_FLOPs.py
  • 知乎 - 腾讯算出 MoE 模型的 Scaling Law
  • 知乎 - 解析大模型中的 Scaling Law

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

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

相关文章

CSS认识与实践

目录 CSS 是什么 基本语法规范 引入方式 内部样式表 行内样式表 外部样式 空格规范 选择器 选择器的功能 选择器的种类 基础选择器 标签选择器 类选择器 id 选择器 通配符选择器 基础选择器小结 复合选择器 后代选择器 子选择器 并集选择器 伪类选择器 复合…

vue项目引入阿里云svg资源图标

1:生成svg图标 登录阿里云官网 1.1 创建项目组 1.2 从阿里云网站上面获取喜欢的图标加入到已有的项目组 1.3 如果团队有自己的设计师,也可以让设计师上传自己的svg图标到阿里云指定的项目组; 使用的时候,把 资源包下载到本地项…

Redis 中 TTL 的基本知识与禁用缓存键的实现策略(Java)

目录 前言1. 基本知识2. Java代码 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 单纯学习Redis可以看我前言的Java基本知识路线!! 对于Java的基本知识推荐阅读: java框架…

使用nginx搭建通用的图片代理服务器,支持http/https/重定向式图片地址

从http切换至https 许多不同ip的图片地址需要统一进行代理 部分图片地址是重定向地址 nginx配置 主站地址:https://192.168.123.100/ 主站nginx配置 server {listen 443 ssl;server_name localhost;#ssl证书ssl_certificate ../ssl/ca.crt; #私钥文件ssl_ce…

Unix 与 Linux 深度应用与对比分析

文章目录 引言Unix 与 Linux 的相似之处1. 设计理念2. 文件系统结构3. 命令行界面4. 多用户多任务支持 Unix 与 Linux 的不同之处1. 开源性2. 内核架构3. 应用场景4. 发行版 Unix 和 Linux 的开发语言1. C 语言2. 脚本语言 在 Unix 和 Linux 上开发简单应用示例1. 编写一个简单…

事务机制及Spring事务管理

事务概览 事务是一组操作的集合,它是一个不可分割的工作单位。 事务会将所有的操作作为一个整体一起向系统提交或撤销操作请求,换句话说:这些操作要么同时成功、要么同时失败。 具体案例 我们先看一个需求:现在有两张数据库表&…

48.【6】BUUCTF WEB BabySQL

进入靶场 order by 判断字节数 输入内容是 1 order by 2# 显示图片内容,知被过滤了 一般最简单的绕过方法是双写或大小写 尝试双写 It is ok continue 经过多次尝试,4时异常,所以字节数是3 union select都被过滤了 双写解决,成…

Spring6.0新特性-HTTP接口:使用@HttpExchange实现更优雅的Http客户端

文章目录 一、概述二、使用1、创建接口HttpExchange方法2、创建一个在调用方法时执行请求的代理3、方法参数4、返回值5、错误处理(1)为RestClient(2)为WebClient(3)为RestTemplate 注意 一、概述 官方文档…

高效并发编程:掌握Go语言sync包的使用方法

高效并发编程:掌握Go语言sync包的使用方法 引言基本概念并发与并行互斥锁(Mutex)读写锁(RWMutex)等待组(WaitGroup)一次性操作(Once)条件变量(Cond&#xff0…

.Net Core webapi 实现JWT认证

文章目录 需求准备创建JWT配置创建JWTService注册JWT创建中间件读取jwt的token在需要的接口上添加属性启动认证启动swagger的授权认证使用 需求 实现一个记录某个用户所有操作的功能 准备 创建你的webapi项目从nuget下载安装JWT资源包根据你的项目使用.net版本下载对应的jwt…

Linux《Linux简介与环境的搭建》

在学习了C或者是C语言的基础知识之后就可以开始Linux的学习了,现在Linux无论是在服务器领域还是在桌面领域都被广泛的使用,所以Linxu也是我们学习编程的重要环节,在此接下来我们将会花大量的时间在Linxu的学习上。在学习Linux初期你可以会像初…

从零开始:Gitee 仓库创建与 Git 配置指南

引言 Git 是一款广泛使用的版本控制工具,它能够帮助开发者在开发过程中高效地管理代码的版本。而 Gitee(码云)是国内知名的 Git 托管平台,它提供了强大的代码托管、团队协作和项目管理功能。如果你是 Git 和 Gitee 的新手&#x…

创建模式、结构模式及行为模式

谁在什么地方提供什么功能? 要设计几个类?这些类各个是什么功能?相互间的关系是什么? 创建模式指的是对象那么多,怎么把它"生"出来?生几个?从这个角度上来说数组就是一种另类的创建模式。主要…

SpringBoot链接Kafka

一、SpringBoot生产者 (1)修改SpringBoot核心配置文件application.propeties, 添加生产者相关信息 # 连接 Kafka 集群 spring.kafka.bootstrap-servers192.168.134.47:9093# SASL_PLAINTEXT 和 SCRAM-SHA-512 认证配置 spring.kafka.properties.securi…

Linux下源码编译安装Nginx1.24及服务脚本实战

1、下载Nginx [rootlocalhost ~]# wget -c https://nginx.org/download/nginx-1.24.0.tar.gz2、解压 [rootlocalhost ~]# tar xf nginx-1.24.0.tar.gz -C /usr/local/src/3、安装依赖 [rootlocalhost ~]# yum install gcc gcc-c make pcre-devel openssl-devel -y4、 准备 N…

解答二重积分

什么是积分? 一元函数的积分。具体计算过程,是将无数个小矩形加起来,然后求极限。 而今天我们要讲的积分,是二元函数的积分。我们可以用曲顶柱体的体积来理解。 什么是曲顶柱体? 它的底是xoy平面上的一个闭区域。顶是…

代理模式实现

一、概念:代理模式属于结构型设计模式。客户端不能直接访问一个对象,可以通过代理的第三者来间接访问该对象,代理对象控制着对于原对象的访问,并允许在客户端访问对象的前后进行一些扩展和处理;这种设置模式称为代理模…

回归预测 | MATLAB实TCN时间卷积神经网络多输入单输出回归预测

效果一览 基本介绍 回归预测 | MATLAB实TCN时间卷积神经网络多输入单输出回归预测 …………训练集误差指标………… 1.均方差(MSE):166116.6814 2.根均方差(RMSE):407.5741 3.平均绝对误差(MAE):302.5888 4.平均相对…

《目标检测数据集下载地址》

一、引言 在计算机视觉的广袤领域中,目标检测宛如一颗璀璨的明星,占据着举足轻重的地位。它宛如赋予计算机一双锐利的 “眼睛”,使其能够精准识别图像或视频中的各类目标,并确定其位置,以边界框的形式清晰呈现。这项技…

Android系统定制APP开发_如何对应用进行系统签名

前言 当项目开发需要使用系统级别权限或frame层某些api时,普通应用是无法使用的,需要在AndroidManifest中配置sharedUserId: AndroidManifest.xml中的android:sharedUserId“android.uid.system”,代表的意思是和系统相同的uid&a…