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

大模型炼丹基础--GPU内存计算

一、摘要

选择合适的GPU对成本和效率都至关重要,合理分析GPU

二、硬件计算基础

1 个字节可以表示零(00000000)和 255(11111111)之间的数字

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

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

2.1.消耗 GPU 内存因素

2.1.1 模型参数

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

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

添加一个缩放因子:例如 GPU 内存中加载额外内容的 20% 开销(Q=1.2),需要算出整体的加载内存后额外乘Q系数因子。

2.1.2 激活内存

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

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

激活内存 = 激活数量 x 批次大小 x 精度大小(GPU并行加速时同时计算的数据量)

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

2.1.3 梯度

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

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

梯度内存 = 参数内存

2.1.4 优化器状态

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

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

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

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

相关文章:

大模型炼丹基础--GPU内存计算

一、摘要 选择合适的GPU对成本和效率都至关重要,合理分析GPU 二、硬件计算基础 1 个字节可以表示零(00000000)和 255(11111111)之间的数字 模型参数常用的数据类型如下: float(32 位浮点&a…...

istio入门篇(一)

一、背景 一直以来“微服务”都是一个热门的词汇,在各种技术文章、大会上,关于微服务的讨论和主题都很多。对于基于 Dubbo、SpringCloud 技术体系的微服务架构,已经相当成熟并被大家所知晓,但伴随着互联网场景的复杂度提升、业务…...

Ubuntu 24.04.1 LTS 本地部署 DeepSeek 私有化知识库

文章目录 前言工具介绍与作用工具的关联与协同工作必要性分析 1、DeepSeek 简介1.1、DeepSeek-R1 硬件要求 2、Linux 环境说明2.1、最小部署(Ollama DeepSeek)2.1.1、扩展(非必须) - Ollama 后台运行、开机自启: 2.2、…...

沃德校园助手系统php+uniapp

一款基于FastAdminThinkPHPUniapp开发的为校园团队提供全套的技术系统及运营的方案(目前仅适配微信小程序),可以更好的帮助你打造自己的线上助手平台。成本低,见效快。各种场景都可以自主选择服务。 更新日志 V1.2.1小程序需要更…...

Visual Studio Code使用ai大模型编成

1、在Visual Studio Code搜索安装roo code 2、去https://openrouter.ai/settings/keys官网申请个免费的配置使用...

工业软件测试方案

一、方案概述 本测试方案致力于全面、系统地评估工业仿真软件的综合性能,涵盖性能表现、功能完整性以及用户体验层面的易用性。同时,将其与行业内广泛应用的MATLAB进行深入的对比分析,旨在为用户提供极具价值的参考依据,助力其在…...

红队视角出发的k8s敏感信息收集——Kubernetes API 扩展与未授权访问

针对 Kubernetes API 扩展与未授权访问 的详细攻击视角分析,聚焦 Custom Resource Definitions (CRD) 和 Aggregated API Servers 的潜在攻击面及利用方法: ​ 攻击链示例 1. 攻击者通过 ServiceAccount Token 访问集群 → 2. 枚举 CRD 发现数据库配…...

一种 SQL Server 数据库恢复方案:解密、恢复并导出 MDF/NDF/BAK文件

方案特色 本方案可以轻松恢复和导出SQL数据库:MDF、NDF 和 BAK 文件。 恢复和导出SQL数据库:主(MDF),辅助(NDF)和备份(BAK)文件分析 SQL Server LOG 数据库事务日志将 …...

Pygame中自定义事件处理的方法2-1

1 Pygame事件处理流程 Pygame中的事件处理流程如图1所示。 图1 Pygame中事件处理流程 系统事件包括鼠标事件和键盘事件等,当用户点击了鼠标或者键盘时,这些事件会自动被放入系统的事件队列中。用户自定义事件需要通过代码才能被放入事件队列中。Pygame…...

langchain学习笔记之消息存储在内存中的实现方法

langchain学习笔记之消息存储在内存中的实现方法 引言背景消息存储在内存的实现方法消息完整存储:完整代码 引言 本节将介绍 langchain \text{langchain} langchain将历史消息存储在内存中的实现方法。 背景 在与大模型交互过程中,经常出现消息管理方…...

HarmonyOS组件之Tabs

Tabs 1.1概念 Tabs 视图切换容器,通过相适应的页签进行视图页面的切换的容器组件每一个页签对应一个内容视图Tabs拥有一种唯一的子集元素TabContent 1.2子组件 不支持自定义组件为子组件,仅可包含子组件TabContent,以及渲染控制类型 if/e…...

【C++】基础入门(详解)

🌟 Hello,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 目录 输入&输出 缺省参数(默认参数) 函数重载 引用 概念及定义 特性及使用 const引用 与指针的关系 内联inline和nullptr in…...

bps是什么意思

本文来自DeepSeek "bps" 是 "bits per second" 的缩写,表示每秒传输的比特数,用于衡量数据传输速率。1 bps 即每秒传输 1 比特。 常见单位 bps:比特每秒 Kbps:千比特每秒(1 Kbps 1,000 bps&am…...

OceanBase使用ob-loader-dumper导出表报ORA-00600

执行下面的语句导出表报错,同样的语句之前都没有报错。 ob-loader-dumper-4.2.8-RELEASE/bin/obdumper -h xxx.xxx.xxx.xxx -P 2883 -p 密码 --column-splitter| --no-sys-t gzuat_ss#ob8(集群) -D 数据库名 --cut --table teacher --no-ne…...

JUC并发总结一

大纲 1.Java集合包源码 2.Thread源码分析 3.volatile关键字的原理 4.Java内存模型JMM 5.JMM如何处理并发中的原子性可见性有序性 6.volatile如何保证可见性 7.volatile的原理(Lock前缀指令 + 内存屏障) 8.双重检查单例模式的volatile优化 9.synchronized关键字的原理 …...

hive:分区>>静态分区,动态分区,混合分区

分区表 使用场景:数据量庞大且经常用来做查询的表 特点:将数据分别存储到不同的目录里 优点:避免全盘扫描,提高查询效率 分区的类型 它们的默认值分别是: false, strict, 要求至少有一个静态分区列,而 nonstr…...

深入解析PID控制算法:从理论到实践的完整指南

前言 大家好,今天我们介绍一下经典控制理论中的PID控制算法,并着重讲解该算法的编码实现,为实现后续的倒立摆样例内容做准备。 众所周知,掌握了 PID ,就相当于进入了控制工程的大门,也能为更高阶的控制理论…...

linux--关于GCC、动态库静态库

gcc和g的异同 他们是不同的编译器, 在linux中,生成可执行文件不像和windows一样。 linux中是以**.out作为可执行文件**的 无论是什么系统,生成可执行文件分为4步: 预处理–>编译–>汇编–>链接。 从.c/.cpp–>.i文件…...

matlab汽车动力学半车垂向振动模型

1、内容简介 matlab141-半车垂向振动模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

Pygame中自定义事件处理的方法2-2

在《Pygame中自定义事件处理的方法2-1》中提到了处理自定义事件的方法。通过处理自定义事件,可以实现动画等效果。 1 弹跳小球程序 通过处理自定义事件,可以实现弹跳小球程序,如图1所示。 图1 弹跳小球程序 2 弹跳小球程序原理 实现弹跳小…...

B. Longest Divisors Interval

time limit per test 2 seconds memory limit per test 256 megabytes Given a positive integer nn, find the maximum size of an interval [l,r][l,r] of positive integers such that, for every ii in the interval (i.e., l≤i≤rl≤i≤r), nn is a multiple of ii. …...

什么是服务的雪崩、熔断、降级的解释以及Hystrix和Sentinel服务熔断器的解释、比较

1.什么是服务雪崩? 定义:在微服务中,假如一个或者多个服务出现故障,如果这时候,依赖的服务还在不断发起请求,或者重试,那么这些请求的压力会不断在下游堆积,导致下游服务的负载急剧…...

从驾驶员到智能驾驶:汽车智能化进程中的控制与仿真技术

在汽车技术持续演进的历程中,人类驾驶员始终是一个极具研究价值的智能控制系统“原型”。驾驶员通过视觉感知、行为决策与操作执行的闭环控制,将复杂的驾驶任务转化为车辆的实际动作,同时动态适应道路环境的变化。这一过程不仅体现了高度的自…...

mysql和minio

在现代应用架构中,Word 文档、PPT 等文件通常存储在对象存储服务(如 MinIO)中,而不是直接存储在关系型数据库(如 MySQL)中。以下是具体的分工和原因: 为什么选择对象存储(如 MinIO&a…...

java练习(24)

PS:练习来自力扣 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意&am…...

Android的Activity生命周期知识点总结,详情

一. Activity生命周期 1.1 返回栈知识点 二. Activity状态 2.1 启动状态 2.2 运行状态 2.3 暂停状态 2.4 停止状态 2.5 销毁状态 三. Activity生存期 3.1 回调方法 3.2 生存期 四. 体验Activity的生命周期 五. Activity被回收办法 引言: 掌握Acti…...

STM32——HAL库开发笔记19(串口中断接收实验)(参考来源:b站铁头山羊)

本实验,我们以中断的方式使得串口发送数据控制LED的闪烁速度,发送1,慢闪;发送2,速度正常;发送3,快闪。 一、电路连接图 二、实现思路&CubeMx配置 1、实现控制LED的闪烁速度 uint32_t bli…...

基于腾讯云TI-ONE 训练平台快速部署和体验 DeepSeek 系列模型

引言 在前两篇文章中,我们通过腾讯云的HAI部署了DeepSeek-R1,并基于此进行了一系列实践。 腾讯云HAI DeepSeek 腾讯云AI代码助手 :零门槛打造AI代码审计环境 基于腾讯云HAI DeepSeek 快速开发中医辅助问诊系统 这些尝试不仅帮助我们理解…...

python的类装饰器

装饰器不仅可以用于函数,还能作用于类。将装饰器应用于类时,其核心原理与作用于函数类似,都是通过接收一个类作为输入,然后返回一个新的类或者修改后的原类,以此来为类添加额外的功能 简单的类装饰器 def add_method…...

C++17中的LegacyContiguousIterator(连续迭代器)

文章目录 特点内存连续性与指针的兼容性更高的性能 适用场景与C接口交互高性能计算 支持连续迭代器的容器示例代码性能优势缓存局部性指针算术优化 注意事项总结 在C17标准里,LegacyContiguousIterator(连续迭代器)是一类特殊的迭代器。它不仅…...

Linux-文件IO

1.open函数 【1】基本概念和使用 #include <fcntl.h> int open(const char *pathname&#xff0c;int flags); int open(const char *pathname&#xff0c;int flags&#xff0c;mode_t mode); 功能: 打开或创建文件 参数: pathname //打开的文件名 f…...

DeepSeek-R1 + Cherry Studio 本地部署打造个人 AI 知识库

ChatGPT 爆火的时候&#xff0c;我心里就燃起了一个想法&#xff1a;打造一个专属于自己的AI知识库&#xff0c;它就像我的第二大脑一样&#xff0c;能记住我生活里的点点滴滴。 我随口一问“去年5月我做了什么”&#xff0c;它不仅能精准找到记录&#xff0c;还能帮我回忆起那…...

《红色警戒:兵临城下》 游戏软件安装步骤与百度网盘链接

软件简介&#xff1a; 《红色警戒&#xff1a;兵临城下》&#xff08;Command & Conquer: Red Alert&#xff09;是一款经典的即时战略游戏&#xff0c;由Westwood Studios开发&#xff0c;于1996年首次发行。它是《命令与征服》系列的衍生作品&#xff0c;以其独特的世界…...

25/2/16 <算法笔记> DirectPose

DirectPose 是一种直接从图像中预测物体的 6DoF&#xff08;位姿&#xff1a;6 Degrees of Freedom&#xff09;姿态 的方法&#xff0c;包括平移和平面旋转。它在目标检测、机器人视觉、增强现实&#xff08;AR&#xff09;和自动驾驶等领域中具有广泛应用。相比于传统的位姿估…...

第32周:文献阅读

目录 摘要 Abstract 文献阅读 问题引入 研究问题 研究意义 研究方法 集成方法 随机森林&#xff08;RF&#xff09; 支持向量机&#xff08;SVM&#xff09; 简单循环神经网络&#xff08;SimpleRNN&#xff09; 长短期记忆网络&#xff08;LSTM&#xff09; 创…...

Ollama 开发指南

文章来源&#xff1a;开发指南 - Ollama中文文档|Ollama官方文档 安装先决条件&#xff1a; GOC/C 编译器&#xff0c;例如 macOS 上的 Clang、TDM-GCC &#xff08;Windows amd64&#xff09; 或 llvm-mingw &#xff08;Windows arm64&#xff09;、Linux 上的 GCC/Clang。…...

【deepseek与chatGPT辩论】辩论题: “人工智能是否应当具备自主决策能力?”

探讨辩论题 这个提案涉及创建一个精确的辩论题目&#xff0c;旨在测试deepseek的应答能力。 创建辩论题目 提议设计一个辩论题目以测试deepseek的应答能力。希望这个题目具有挑战性并能够测量其回应质量。 好的&#xff0c;来一道适合深度学习的辩论题&#xff1a; 辩论题&…...

神经网络常见激活函数 9-CELU函数

文章目录 CELU函数导函数函数和导函数图像优缺点pytorch中的CELU函数tensorflow 中的CELU函数 CELU 连续可微指数线性单元&#xff1a;CELU&#xff08;Continuously Differentiable Exponential Linear Unit&#xff09;,是一种连续可导的激活函数&#xff0c;结合了 ELU 和 …...

JavaScript系列(74)--反射API详解

JavaScript反射API详解 &#x1f50d; JavaScript的反射API提供了强大的运行时检查和操作对象的能力。本文将深入探讨Reflect API的原理、应用场景和最佳实践。 反射基础 &#x1f31f; &#x1f4a1; 小知识&#xff1a;反射是指程序在运行时能够检查、修改自身结构和行为的…...

轻量级分组加密算法RECTANGLE

轻量级分组加密算法RECTANGLE RECTANGLE轻量级分组密码算法是Wentao Zhang&#xff0c;Zhenzhen Bao,Dongdai Lin等学者于2014年提出的&#xff0c;该算法是SPN结构的&#xff0c;采用了线性移位的置换层以及44bit的S盒。RECTANGLE是一个迭代分组密码&#xff0c;分组长度为64…...

智能设备监控:AI 与 Python 助力设备管理的未来

智能设备监控:AI 与 Python 助力设备管理的未来 引言 随着物联网(IoT)和智能设备的广泛应用,我们的日常生活逐渐离不开这些高科技产品。从智能家居到工业控制,智能设备已经渗透到各个领域。然而,随着设备种类和数量的增加,如何高效地监控这些设备,确保它们的稳定性和…...

python语言进阶之函数

目录 前言 函数的创建和调用 函数创建 调用函数 参数传递 形式参数和实际参数 位置参数 数量必须与定义时一致 位置必须与定义时一致 关键字参数 为参数设置默认值 可变参数 **parameter 返回值 变量的作用域 局部变量 全局变量 匿名函数 前言 提到函数&…...

Golang Model 字段自动化校验设计

背景 在我们日常开发中&#xff0c;不可避免的总要去进行各种参数校验&#xff0c;但是如果在某个场景中&#xff0c;要校验的字段非常多&#xff0c;并且在其中还有耦合关系&#xff0c;那么我们手写校验逻辑就变得非常的低效且难以维护。本篇文档就基于 DDD 领域模型设计的思…...

Hot100 堆

215. 数组中的第K个最大元素 - 力扣&#xff08;LeetCode&#xff09; 堆排序 我们可以借助一个小顶堆来维护当前堆内元素的最小值&#xff0c;同时保证堆的大小为 k&#xff1a; 遍历数组将元素入堆&#xff1b; 如果当前堆内元素超过 k 了&#xff0c;我们就把堆顶元素去除…...

AIGC图生视频保姆级教程

一、AI文生图高阶技巧 推荐工具 ▸ MidJourney&#xff08;艺术感最强&#xff09; ▸ DALLE 3&#xff08;与ChatGPT深度联动&#xff09; ▸ Leonardo.ai&#xff08;精细化参数控制&#xff09; 核心策略 提示词架构&#xff1a; [主体描述][环境氛围][镜头语言][风格参数…...

Qt QDateTimeEdit总结

1. 概述 QDateTimeEdit 是 Qt 提供的用于编辑日期和时间的控件&#xff0c;支持直接输入或通过弹出日历/时间选择器调整值。继承自 QAbstractSpinBox&#xff0c;是 QDateEdit 和 QTimeEdit 的父类&#xff0c;可同时处理日期和时间。默认显示格式为系统本地化的日期时间格式&…...

【吾爱出品】 视频批量分段工具

视频批量分段工具 链接&#xff1a;https://pan.xunlei.com/s/VOJDvtHQE7GOiJ84WNea5Ay1A1?pwd5nta# 选择视频文件 启动程序后&#xff0c;点击 "文件" 菜单下的 "选择视频文件" 按钮&#xff0c;或者直接将视频文件拖放到程序窗口中的视频列表区域。支…...

SHEIN的迁移与无奈

日前&#xff0c;因杭州宇树科技、DeepSeek的“六小龙”企业崛起&#xff0c;不少地方开始反思&#xff0c;为什么本地没有留住创始人&#xff0c;或者发展出类似的企业。例如DeepSeek创始人梁文锋和Kimi创始人杨植麟都是广东人&#xff0c;但都在其他地区创业成功。而还有媒体…...

TCP/UDP 简介,三次握手与四次挥手

一、TCP 三次握手 目的&#xff1a;为了解决在不可靠的信道上建立可靠的网络连接 三次握手是连接请求的过程&#xff1a; A 发送连接请求的数据给 B&#xff08;发送 SYN 包&#xff09; B 同意连接&#xff0c;返回数据给 A&#xff08;返回 SYNACK 包&#xff09; A 收到后回…...

Windows Defender Control--禁用Windows安全中心

Windows Defender Control--禁用Windows安全中心 链接&#xff1a;https://pan.xunlei.com/s/VOJDuy2ZEqswU4sEgf12JthZA1?pwdtre6#...