LLM大模型训练/推理的显卡内存需求计算

news2024/9/23 10:13:11

无论你是从头开始训练 LLM、对其进行微调还是部署现有模型,选择合适的 GPU 对成本和效率都至关重要。在这篇博客中,我们将详细介绍使用单个和多个 GPU 以及不同的优化器和批处理大小进行 LLM 训练和推理时 GPU 要求的所有信息。

计算机处理器由多个决定性电路组成,每个电路都可以处于关闭或打开状态。就内存而言,这两种状态由 0 或 1 或位表示。一组八位称为一个字节。1 个字节可以表示零(00000000)和 255(11111111)之间的数字,或 28(等于 256 个不同位置)。通常,在 FP-32(包括符号、指数和尾数)数据类型上训练的神经网络最多占用 4 个字节的内存。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割

模型参数常用的数据类型如下:

  • float(32 位浮点):每个参数 4 个字节
  • half/BF16(16 位浮点):每个参数 2 个字节
  • int8(8 位整数):每个参数 1 个字节
  • int4(4​​ 位整数):每个参数 0.5 个字节

1、什么会消耗 GPU 内存?

在模型训练期间,大部分内存被四个东西消耗

11 模型参数

模型参数是神经网络的可学习组件。它们定义网络的结构和行为,并在训练期间更新以最小化损失函数。通常,我们有权重和偏差参数。

正如我们已经知道的那样,存储一个数字需要 4 个字节。假设我们的模型中有 P 个参数。

  • 参数内存(M)= 参数数量(P)x 精度大小(4 字节)
  • M = Px4
  • 16 位 M = P x 精度大小(2 字节)也类似

我们可以添加一个缩放因子并制定一个标准公式,如下所示:

这里 1.2 表示在 GPU 内存中加载额外内容的 20% 开销,Q 是加载模型应使用的位数。即 16 位、8 位或 4 位。

16 位 Llama 70B 需要 GPU 内存:

这是推理 Llama 70b 模型所需的总体最低 GPU。

1.2 激活

当输入数据通过网络时,激活是每层神经元的中间输出。在前向传递过程中,每层处理输入数据,应用权重、偏差和激活函数(如 ReLU、sigmoid 等)来产生激活。然后,这些激活将作为下一层输入。

需要存储每个层的激活,因为它们在反向传播期间用于计算梯度。

激活内存 = 激活数量 x 批次大小 x 精度大小

注意:“每个参数的激活”取决于模型架构、层数和序列长度。对于大型模型,激活通常需要与参数相当或超过参数的内存。将序列长度加倍也可能使激活内存加倍。

近似值:没有固定的公式来计算激活的 GPU 内存。对于较大的模型,激活所需的内存可能大致与参数的内存相似或略大。

1.3 梯度

梯度是损失函数关于模型参数的偏导数。它们表示应调整每个参数多少以最小化损失函数。

在反向传播期间,损失通过网络向后传播,并计算每个参数(权重和偏差)的梯度。优化器使用这些梯度来更新参数,从而减少整体损失。

存储梯度所需的内存等于参数本身所需的内存。由于每个参数都有相应的梯度,因此它们的内存要求相同。

梯度内存 = 参数内存

1.4 优化器状态

优化器状态是某些优化算法(如 Adam、RMSprop)维护的附加变量,用于提高训练效率。这些状态有助于根据过去的梯度更新模型参数。

不同的优化器维护不同类型的状态。例如:

  • SGD(随机梯度下降):没有附加状态;仅使用梯度来更新参数。
  • Adam:为每个参数维护两个状态:一阶矩(梯度平均值)和二阶矩(梯度平方平均值)。这有助于动态调整每个参数的学习率。对于具有 100 万个参数的模型,Adam 需要为每个参数维护 2 个附加值(一阶矩和二阶矩),从而产生 200 万个附加状态。

优化器状态的内存 = 参数数量 x 精度大小 x 优化器乘数

2、单GPU内存需求计算

我们举个例子

我们想在单个 GPU 上以混合精度(2 字节)训练 100 亿模型。

  • 参数内存=参数数量 x 2 字节 (FP16)
  • 参数内存=10B x 2 字节 = 20 GB
  • 激活内存=每个参数的激活 x 批次大小 x 精度大小

我们可以计算每层激活内存,而不是计算激活的总内存,这是一种高效的方法,需要的内存更少,因为它可以在下一层使用。

  • 每层神经元的近似数量 = sqrt(10B) ≈ 每层 100k 个神经元
  • 一层的激活内存 ≈ 32 x 100k x 2 字节 ≈ 每层 6.4 MB

对于大型模型中的层(假设有数百层),激活内存最多可达数十 GB。

因此,正如我们之前讨论过的,对于 32 的批次大小,大约需要 20-40 GB 的内存。现在,如果我们将批次大小加倍,这个范围可以加倍。

  • 梯度内存 = 参数内存
  • 梯度内存 = 20 GB
  • 优化器状态内存 = 参数数量 x 4 字节 (FP32) x 2 (用于 Adam)
  • 优化器状态内存 = 10B x 4 字节 x 2 = 80 GB

总内存估计:

  • 参数内存:20 GB
  • 激活内存:≈20–40 GB(取决于批次大小)
  • 梯度内存:20 GB
  • 优化器状态内存:80 GB
  • 总内存 = 20 + 20 到 40 + 20 + 80 = 140 到 160 GB

3、多个 GPU 的内存计算

要计算在 n 个 GPU 上训练时每个 GPU 的内存需求,我们需要考虑如何使用数据并行和模型并行等并行技术在 GPU 上分配内存。

关键假设:

  • 模型并行:模型的参数在 GPU 之间分配,因此每个 GPU 仅存储总模型参数的一小部分。梯度和优化器状态也同样被划分。
  • 数据并行:每个 GPU 都会获得整个模型参数的副本,但数据批次会在 GPU 之间分配。激活是针对每个 GPU 的小批次单独计算的。

如果我们使用模型并行性,那么所有模型参数、梯度和优化器统计数据都是分布式的。

但是,每个 GPU 仍然需要存储其批次部分的激活。激活的内存不会随着 GPU 数量的增加而减少,因为每个 GPU 都独立处理自己的数据。

因此,对于所有 GPU 来说,激活所需的内存仍然相同

因此,在 n 个 GPU 上以混合精度(2 字节)训练 100 亿模型所需的总内存为:

如果我们想使用 2 个 GPU 训练 LLM,我们需要大约 8o 到 100 GB 的内存。


原文链接:LLM显卡内存需求计算 - BimAnt

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

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

相关文章

SM2无证书及隐式证书公钥机制签名和加密过程详解(一)

前面介绍SM2无证书及隐式证书公钥机制下用户公私密钥对的Python实现(具体参看SM2隐式证书用户公私钥生成python代码实现_sm2 python 密钥生成-CSDN博客),可以看到需由用户和KGC(可信密钥生成中心)共同参与才能计算得到…

小程序-基础知识1

Mustache语法 小程序和vue一样提供了插值语法 但是小程序不能调用方法{{xxxx()}} hidden属性 hidden是所有组件都默认拥有的属性, hidden与wx:if的区别: wx:if是控制组件是否渲染,hidden控制显示或隐藏是通过添加hidden属性。 wx:for 除了可以遍历…

服务器配置虚拟环境及离线安装python

本篇文章基于已经装好conda环境进行哈,不会安装conda可参考服务器离线安装anaconda-CSDN博客 1.打印现有虚拟环境列表 conda env list,可以看见我现在有base、ai、py38三个环境 2.删除指定虚拟环境 conda remove -n py38 --all,回车后输入ye…

LeetCode 面试经典150题 190.颠倒二进制位

复习知识:正数的原码、反码、补码相同,负数的反码在其原码的基础上, 符号位不变,其余各个位取反,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后1 (即在反码的基础上1)。 题目:颠倒给定的 32 位无符号…

全国及分(31个)省全社会就业人数(1978-2022年)

分省就业人数分析 经济发达省份:如广东、江苏、浙江等省份的就业人数较高,这与它们的经济发展水平和产业结构密切相关。欠发达省份:虽然就业人数相对较低,但也呈现出增长态势,显示了国家在区域协调发展上的成效。 从…

软考高级:数据库事务状态区分:活动、部分提交、提交、失败、中止 AI 解读

讲解 数据库事务状态的区分可以用来表示事务在不同阶段的状态。事务(Transaction)是数据库中的一组操作,要么全部成功,要么全部失败。这些状态可以帮助我们理解事务从开始到结束的整个生命周期。 生活化例子 假设你去餐厅点餐&…

AI资深导师指导-ChatGPT深度科研工作应用、论文撰写、数据分析及机器学习与AI绘图

2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5,将人工智能的发展推向了一个新的高度。2023年4月,更强版本的ChatGPT4.0上线,文本、语音、图像等多模态交互方式使其在…

操作系统week3

操作系统学习 三.内存管理 16.内存映射文件 传统的文件访问方式: open系统调用–打开文件seek系统调用–将读写指针移到某个位置read系统调用–从读写指针所指位置读入若干数据write系统调用–将内存中的指定数据,写回磁盘 内存映射文件的访问方式&…

2.pytest框架实现一些前后置(固件,夹具)的处理,断言和allure-pytest插件生成allure测试报告

一、setup/teardowm,setup_class/teardown_class(所有) 为什么需要这些功能? 比如:web自动化执行用例之前,请问需要打开浏览器吗?用例执行后需要关闭浏览器吗? 前置后置 二、使用pytest.fixture…

KamaCoder 103. 水流问题

题目要求 N*M的矩阵,数值代表位置的相对高度。矩阵模拟了一个地形,当雨水落上时,会根据地形倾斜向低处流动。但是只能从较高或等高的地点流向较低或等高并且相邻的地点,我们的目标是确定那些单元格,从这些单元格出发的…

[数据结构与算法·C++] 笔记 2.1 线性表

线性结构 概念 二元组 B ( K , R ) B(K,R) B(K,R) K a 0 , a 1 , . . . , a n − 1 K{a_0,a_1,...,a_{n-1}} Ka0​,a1​,...,an−1​ ( R r R{r} Rr) 有一个唯一的开始结点,它没有前驱,有一个唯一的直接后继一个唯一的终止结点,它有一个…

Diffusion Models/Score-based Generative Models背后的深度学习原理(7):估计配分函数

Diffusion Models专栏文章汇总:入门与实战 前言:有不少订阅我专栏的读者问diffusion models很深奥读不懂,需要先看一些什么知识打下基础?虽然diffusion models是一个非常前沿的工作,但肯定不是凭空产生的,背…

【水文】LLM 成文测试|探索嵌入式硬件编程的奥秘:入门基础知识的全面解析

这次用的是智谱清言的,文字质量比百度的高一些。 但是在按要求改写的方面还是需要给出太过明确的指令,麻烦。 探索嵌入式硬件编程的奥秘:入门基础知识的全面解析 嵌入式硬件作为现代科技的核心,广泛应用于各种设备和系统中。对于…

【OSS安全最佳实践】对OSS内身份证图片中身份证号进行脱敏

为确保存储在私有OSS Bucket特定文件夹中包含中国内地身份证信息的PNG、JPG、JPEG、BMP或WEBP格式图片,在与其他用户共享时身份证信息不被泄露,可使用数据安全中心 DSC(Data Security Center)的图片脱敏功能。DSC目前仅支持对身份…

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-22

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-22 引言: 全球最热销的国产游戏-《黑神话: 悟空》不仅给世界各地玩家们带来愉悦,而且对计算机人工智能研究也带来新的思考。在本期的论文速读中,我们带来一篇关于视觉语言模型&#xff0…

【C++高阶】深入理解C++ I/O流:标准库中的隐藏宝石

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:C 特殊类 🌹🌹期待您的关注 🌹🌹 ❀ C IO流 📒1. C语言的输入…

Linux中的动静态库

目录 前言 1.库的文件名 2.库的制作 对于动态库: 对于静态库: 3.库文件的查找 4.库的加载与使用 对于动态库: 对于静态库: 可执行程序分段: 程序的编址于动态库: 总结 前言 在刚开始学习C语言…

NASA:ASTER L1A 重建未处理仪器数据 V003

ASTER L1A 重建未处理仪器数据 V003 简介 先进星载热发射和反射辐射计(ASTER)1A 级(AST_L1A)包含重建的仪器数字编号(DN),这些数字编号来自所获取的望远镜遥测数据流: 可见光和近红…

综合题第一题(地址表的填写)

题目 第一题的形式大概就是这样的,通常IP地址和子网掩码会给我们。 地址类别 补充知识 IP地址(Internet Protocol Address)是分配给网络中设备的数字标签,用于标识设备在网络中的位置。IP地址分为IPv4和IPv6两种版本&#xff0…

用Qt 对接‌百度AI平台

很多同学想利用几大模型AI弄点东西,但又不知道如何去介入??最近帮同学弄点东西,刚好要接入到AI平台,就顺便研究了一下,并记录下来。 首先我们选择的 AI模型是百度的,然后注册,申请密…