图说GPT网络结构(参数量与计算量)

news/2024/9/18 11:48:24/ 标签: LLM, 参数量, 计算量, FLOPs, GPT

现在AI领域的主流模型几乎都是Transformer网络架构衍生而来。大热的LLM中的生成类模型很多都是来自于Transformer的变体,即decoder only架构。而GPT就是该类中的经典模型。尽管现在变体甚多,但大多没有根本性地改变其套路。

为了阐述方便,首先约定一些符号:

符号含义
bBatch size
LTransformer layer层数
sSequence length
nAttention head个数
hHidden size,或embedding dim
d每个head的hidden size,与前两者有关系 h = n d h = n d h=nd
VVocabulary size
P最大sequence length

在模型的优化时,我们经常需要一些信息,诸如特定配置的模型计算需要多少compute与memory资源,计算与数据传输大概需要多长时间等。这就要求我们对网络中的一些量(如参数量计算量,内存使用量等)进行一些粗略估计。基于这些估计,还可以得到这些量之间的大致关系。如一个transformer layer的参数量约为 12 h 2 + 13 h 12 h ^ 2 + 13 h 12h2+13h计算量约为 24 b s h 2 + 4 b h s 2 24 b s h^2 + 4 b h s^2 24bsh2+4bhs2。这意味着,在 h h h远大于 s s s的情况下,计算量参数量大约是两倍关系。而Backward的计算量又约是Forward计算量的两倍(因需要对输入与权重都计算梯度)。由于transformer layer是网络中参数量(除embedding外)与计算量的主要贡献者。因此,计算量与除embedding外参数量之间有那个著名的公式 C ≈ 6 N C \approx 6 N C6N

但是,诸如这些都是general的结论。实际使用时,我们会碰到各种网络变体,各种配置或各种跑法,另外还可能需要回答一些更细节具体的问题,比如KV Cache节省了多少计算量,需要额外占用多少memory,把某层分布式计算需要增加多少通信量,或者MQA/GQA相比传统的MHA可以节省多少memory等等。而只有了解了那些估计是怎么来的,才能够更加灵活地运用。

下面以经典的GPT2模型为例,在其网络结构上标注了各操作的shape,并进行参数量计算量估计。
Prefill阶段:
在这里插入图片描述
Generation阶段:
在这里插入图片描述


http://www.ppmy.cn/news/1525871.html

相关文章

Linux echo,printf 命令

参考资料 【Linux】ハイフンをいっぱい出したかっただけなのに【printfコマンド】 目录 一. echo命令1.1 -n 选项1.2 -e 选项1.3 配合扩展实现批量换行输出1.3.1 xargs -n 11.3.2 tr \n1.3.3 xargs printf "%s\n"1.4 ANSI转义序列1.5 彩色文本输出 二. printf 命令…

敏捷开发方法例题

答案:B 敏捷方法 特点 极限编程XP 4大价值观,5大原则,12个最佳实践 水晶法 认为每一个不同的项目都需要一套不同的策略,约定和方法论,认为人对软件质量有重要影响,因此随着项目质量和开发人员须知的提…

速盾:你知道高防 IP 和高防 CDN 的区别吗?

在当今网络安全形势日益严峻的情况下,网站的安全防护成为了企业和个人关注的焦点。高防 IP 和高防 CDN 作为两种常见的网络安全防护手段,被广泛应用于网站的安全防护中。那么,高防 IP 和高防 CDN 有什么区别呢?防护网站哪个更好呢…

ip地址为什么要轮换

在网络世界中,IP地址是设备与互联网通信的身份证。然而,单一的IP地址可能会因为各种原因而需要轮换。IP轮换是指在一定时间内更换正在使用的IP地址,这一策略在多种网络应用中发挥着重要作用。本文将探讨IP地址轮换的原因、其带来的优势以及实…

一口气学完docker【入门到精通】

一、容器 1、什么是容器 容器是一种轻量级的虚拟化技术,它为应用程序提供了一种隔离的运行环境。在操作系统级别上实现,容器将应用程序及其所有依赖项(包括库、配置文件等)封装在一起,形成一个独立的标准单元。 每个…

vscode配置django环境并创建django项目

1、创建文件夹 创建文件夹 并在vscode打开 终端输入命令 “ python -m venv env ” 查看目录结构 2、创建项目 在终端输入 django-admin startproject 文件名(这里以myshop为例) 3、创建应用 在myshop打开终端 在终端输入 django-admin startapp 应用名 这里以app1为例…

【论文笔记】AutoLFADS (Nature Methods, 2022)

相关链接: Is This Tutorial For You? - AutoLFADS TutorialDANDI ArchiveNonhuman Primate Reaching with Multichannel Sensorimotor Cortex Electrophysiology Abstract 通过深度神经群体动力学模型实现最先进的性能需要对每个数据集进行广泛的超参数调整。 Au…

Rust 数据类型

文章目录 发现宝藏1. 标量类型1.1 整型1.2 浮点型1.3 布尔型1.4 字符型 2. 复合类型2.1 元组2.2 数组 3. 总结 发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 Rust 是一种静态…

AI大模型与产品经理:替代与合作的深度剖析

在创业的征途中,产品经理常常被外界以一种半开玩笑的口吻提及:“就差一个程序员了。”这句话背后,既蕴含着对产品经理创意与策略能力的认可,也揭示了技术实现环节对于产品成功不可或缺的重要性。然而,随着AI技术的飞速…

【C++题解】1406. 石头剪刀布?

欢迎关注本专栏《C从零基础到信奥赛入门级(CSP-J)》 问题:1406. 石头剪刀布? 类型:二维数组 题目描述: 石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出…

Facebook的虚拟现实计划:未来社交的全新视角

随着科技的不断进步,虚拟现实(VR)正逐步成为我们日常生活的一部分。作为全球领先的社交平台,Facebook正在大力投入虚拟现实技术,以重新定义社交互动的方式。本文将深入探讨Facebook的虚拟现实计划,分析其如…

用Python-pptx定制你的形状效果

哈喽,大家好,我是木头左! 本篇文章将深入探讨如何使用Python-pptx来形状属性,包括颜色、边框和效果,让你的PPT设计更上一层楼。 准备工作:安装和导入python-pptx 首先确保你已经安装了python-pptx库。如果没有,可以通过pip安装: pip install python-pptx安装完成后,…

[数据集][目标检测]河道垃圾检测数据集VOC+YOLO格式2274张8类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2274 标注数量(xml文件个数):2274 标注数量(txt文件个数):2274 标注…

Python编码系列—Python抽象工厂模式:构建复杂对象家族的蓝图

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

汽车EDI:montaplast EDI对接

Montaplast 是一家总部位于德国的全球知名汽车零部件供应商,专注于高精度塑料部件的设计、开发和生产。公司成立于1958年,主要为汽车行业提供轻量化、高性能的塑料解决方案。Montaplast 以其在注塑成型技术、表面处理和装配技术方面的专业能力而著称&…

Java在零工市场中的应用:构建灵活高效的劳动力平台

随着数字经济的迅猛发展,零工经济作为一种新兴的劳动力市场模式,正在全球范围内迅速崛起。零工市场通过互联网平台将服务提供者与需求者进行快速匹配,使得个人可以临时、自由地提供服务,企业则能够按需雇佣劳动力,实现…

【VUE】11、安装nvm管理多个版本的node.js

1、简介 nvm 全称为 Node Version Manager,即 Node.js 版本管理器。它是一个用于在同一台机器上管理多个 Node.js 版本的工具。通过 nvm,用户可以轻松地安装、切换、卸载不同版本的 Node.js,而无需担心版本冲突或环境变量配置问题。这使得开…

大模型的实践应用29-大语言模型的RLHF(人类反馈强化学习)的具体应用与原理介绍

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用29-大语言模型的RLHF(人类反馈强化学习)的具体应用与原理介绍。在当今人工智能发展的浪潮中,大语言模型(Large Language Models, LLMs)凭借其强大的语言理解和生成能力,成为了研究与应用的热点。而在这股浪潮中,一…

tcp、http和rpc

tcp是传输层协议,http和rpc是应用层协议。http和rpc的底层都是tcp。tcp三大特点:面向连接、可靠、基于字节流。纯tcp发送的消息是基于字节流,无边界的,接收方不知道哪些字节是一条完整的消息。所以,tcp不能直接使用。可…

Kubernetes (k8s)v1.27.1版本安装步骤

这 一、k8s 安装步骤1.1 安装docker及containerd容器1.2、设置每台服务器的参数1.3、安装kubelet、kubeadm、kubectl1.4、修改 kubelet 的 cgroup 和 docker 的 cgroup-driver 保持一致1.5、使用containerd 默认容器的配置1.6、使用kubeadm进行初始化1.7、初始化成功1.8、集群部…