LLM的一些基础知识:参数和内存估计

news2024/11/15 9:23:15

介绍:

基于 Transformer 架构的大型语言模型 (LLM) 已变得越来越普遍。例如,Mistral AI 团队推出了Mistral 7B 模型。了解其推理、微调和训练的内存需求对于高效部署和利用至关重要。

总结:

  • 推理内存估算:对于 70 亿参数模型 (7B),估计内存需求如下:

— 浮点精度 28 GB、BF16 精度 14 GB、int8 精度 7 GB。此估算可相应应用于其他版本。

  • 训练所需内存:保守估计,在参数数量和类型相同的情况下,推理所需内存约为其四倍。例如,训练具有浮点精度的 7B 模型大约需要 112 GB(28 GB * 4)。

训练大型语言模型的内存要求:

  • 梯度:梯度所需的内存等于参数的数量。
  • 优化器状态:优化器状态所需的内存取决于所使用的优化器的类型。

— 使用 AdamW 优化器,需要两倍的参数数量。

— 使用 SGD 优化器时,需要与参数数量相当的内存。

采用 LoRA/QloRA 技术的内存使用情况,以 LoRA 为例:

  • LoRA涉及在原始模型上运行推理并训练较小的模型以达到与训练原始参数几乎相同的效果。
  • 例如,如果您需要微调大小为 1024×512 的参数,使用选择等级为 8 的 LoRA,您只需要微调以下数量的参数:1024×8 + 512×8。
  • 此过程需要对原始参数体运行一次推理(无需梯度和优化器状态),但仍需要一些内存来存储计算过程中的数据。使用的总内存是这些要求的总和。

背景:

  • 在计算机内存/磁盘存储中,基本单位是字节,系统以 1024 为基础。单位有 KB、MB、GB 和 TB。重要的是不要将它们与十进制系统混淆:1 KB = 1024 字节;1 MB = 1024 KB;1 GB = 1024 MB

参数数量:

  • 以Mistral -7B 为例,“7B”表示该 LLM 有 70 亿个参数。

数据类型:

对于训练好的模型,参数类型可以包括:

  • float:32 位浮点数,4 个字节
  • half/BF16:16 位浮点,2 个字节
  • int8:8位整数,1个字节
  • int4:4位整数,0.5字节

参数类型所需的存储越少,性能往往越低。

一般情况下参数数量是首要因素,例如同架构下13B-int8模型一般会比7B-BF16模型表现更好。

估计推理的内存使用量:

虽然其他因素也使用内存,但推理过程中内存使用的主要部分是参数。

  • 例如,Mistral-7B-BF16 模型所需的内存等于参数数量乘以类型大小:70 亿个参数 * 2 字节 = 140 亿字节。因此,140 亿字节 = 14 * 1,000 * 1,000 * 1,000 / 1024 / 1024 / 1024 ≈ 13 GB(考虑 1000/1024)³ ≈ 0.93。
  • 注 1:(1000/1024)³ ≈ 0.93
  • 注 2:出于估算目的,将此比率视为 1 更为简单。因此,对于 7B-BF16 模型,内存需求大约为 7 * 2 = 14 GB。此估算值略高于准确计算值,但这是切实可行的,因为推理需要的内存不仅仅是参数。
  • 假设各种 llama2–13B 版本的预估内存需求,假设相应类型:float:13 * 4 = 52 GB;half/BF16:13 * 2 = 26 GB;int8:13 GB;int4:13 * 0.5 = 6.5 GB。

估计训练的内存使用量:

训练时为了保证模型收敛,参数类型不能为int8或者int4,一般使用float,如果性能稍差,也可以选择BF16。

  • 由于反向传播、Adam 优化、Transformer 架构等因素,训练所需的内存通常是相同大小的 LLM 推理所需内存的 3 到 4 倍。保守估计是使用 4 倍来计算。

例如,训练 Qwen-7B 模型所需的估计内存为:

  • 对于浮点型参数:7(十亿个参数)* 4(每个浮点型参数的字节数)* 4 = 112 GB
  • 对于 half/BF16 类型参数:7(十亿个参数)* 2(每个 BF16 参数的字节数)* 4 = 56 GB

结论:

了解 Mistral-7B 等模型的内存需求对于优化其部署和使用至关重要。这些信息对于那些考虑使用云服务进行模型训练和推理的人来说尤其重要,因为它会影响硬件的选择和总体成本。

​​欢迎前往我们的公众号,资讯

创作不易,觉得不错的话,点个赞吧!!!

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

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

相关文章

安装docker 遇到异常Could not resolve host: mirrorlist.centos.org; 未知的错误

问题 安装docker 遇到异常 Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx86_64&repoos&infrastock error was 14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误” 1、安装Docker依赖包 yum install …

机器学习第十二章-计算学习理论

目录 12.1基础知识 12.2 PAC学习 12.3有限假设空间 12.3.1可分情形 12.3.2不可分情形 12.4VC维 12.5 Rademacher复杂度 12.1基础知识 计算学习理论研究的是关于通过"计算"来进行"学习"的理论,即关于机器学习的理论基础,其目的…

数据分析实操案例分享:制造企业如何对订单数据进行BI分析?

提到数据分析,大家可能首先想到的是它在零售行业的应用,它能够助力商家实现精准营销,从而带来盈利。 事实上,数据分析的重要性已经扩展到制造业,它在该行业中的作用日益凸显。它能够帮助生产管理者迅速识别异常&#…

零基础也能看懂的五大网络安全技术,学网络安全真的可以很简单

网络安全技术是保护网络不受未经授权访问、破坏或盗取信息的重要手段。以下是五种零基础也能看懂的网络安全技术: 1.防火墙技术:防火墙是一种网络安全设备,用于监控和控制进入或离开网络的流量。它可以识别不安全的数据包,并阻止…

使用vs配置opencv环境(属性表方法)

opencv官网:https://opencv.org/releases/ 老手回忆(新建属性表) Step1: 安装VS,安装openCV Step2: 新建项目,新建项目属性表,debug|x64新建属性,命好名字 Step3: VC目录-包含目录中添加: 安装…

How can i wait for the actual reply of an openai-assistant? (Python OpenAI API)

题意:如何等待 OpenAI 助手的实际回复?(Python OpenAI API) 问题背景: I am interacting with the openai assistant API (python). so far, it works well. but sometimes the api returns the message i sent to th…

算法的学习笔记—包含 min 函数的栈(牛客JZ30)

😀前言 在日常编程中,栈是一种常见的数据结构,具有后进先出的特点。它支持基本的操作如 push(入栈)、pop(出栈)和 top(获取栈顶元素)。然而,当需要在栈中快速…

linux容器基础-namespace-1(mnt)

mnt namespace mount namespace可隔离出一个具有独立挂载点信息的运行环境,内核知道如何去维护每个namespace的挂载点列表。 即每个namespace之间的挂载点列表是独立的,各自挂载互不影响。(用户通常使用mount命令来挂载普通文件系统,但实际…

JAVA单个商户多个门店点餐系统小程序源码

🔥单个商户,多店管理新纪元!高效点餐系统大揭秘🍽️ 🚀【一店多管,轻松驾驭】🚀 你是否还在为多个门店的点餐管理手忙脚乱?🤯 想象一下,从繁华都市的中心商…

一站解决多域名安全:通配符SSL证书的全面指南

随着企业在线业务的不断扩展,拥有多个子域名变得越来越常见。为了确保这些子域名的安全,并简化管理流程,通配符SSL证书成为了一个高效且经济的选择。本文旨在提供一份全面的指南,帮助您了解通配符SSL证书的重要性和如何正确地选择…

用AI也能做短剧了?全球首款 AI 短剧平台 SkyReels重磅发布!

短剧的风头在2024年依然强劲。 几分钟到十几分钟的单集时长、强烈的娱乐性和快节奏剧情,频繁踩中用户「爽点」,仅在2023年,短剧市场规模就达到373.9亿元,预计2024年将超过500亿元,2027年则将超过1000亿元。 然而传统编…

ChatGPT完成论文润写的几点说明

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 论文润写是指对已完成的论文进行修改和优化,以提高其逻辑性、语言流畅度和整体质量。这一过程对提升论文的学术价值至关重要。ChatGPT是一种先进的人工智能语言模型&#xf…

[图解]片段16 ESS状态机图-SysMLEA建模住宅安全系统

1 00:00:00,220 --> 00:00:03,580 然后我们看初始这里 2 00:00:03,590 --> 00:00:09,500 有一个指向它的一个迁移的事件 3 00:00:09,710 --> 00:00:13,730 站点可用,这个实际上是错误的 4 00:00:14,020 --> 00:00:15,050 这不是事件 5 00:00:15,900…

绝密!头部数字人源码厂商在数字人直播软件开发技术有哪些?

随着数字人直播的逐渐兴起,数字人直播软件开发也成为了众多有意向进军数字人行业的创业者们重点关注的对象,以数字人直播软件开发技术有哪些为代表的问题更是屡次冲上相关社群话题榜的前列,并引发多轮热议。 不过,就市场现状来看&…

TIM定时中断之定时器定时中断定时器外部时钟应用案例

文章目录 前言一、定时器定时中断应用案例1.1 应用案例简介1.2 电路接线图1.3 应用案例代码1.4 应用案例分析1.4.1 初始化定时器1.4.2 编写定时器中断函数 二、定时器外部时钟应用案例2.1 应用案例简介2.2 电路接线图2.3 应用案例代码2.4 应用案例分析 前言 提示:本…

详细分析 el-progress的基本知识以及用法(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 由于实战项目中有所引用,对此记录基本的知识点,并且以Demo的形式呈现 1. 基本知识 el-progress 是 Element Plus UI 库中的一个进度条组件,用于显示任务的完成情况 可以帮助用户了解某个操作或任…

企业迈向可持续发展的钥匙:ISO 50001能源管理体系认证的深远影响

在全球环保意识日益增强的背景下,企业如何在节能减排的道路上脱颖而出,成为行业标杆?ISO 50001能源管理体系认证无疑是企业迈向可持续发展的重要钥匙。这一认证不仅帮助企业优化能源管理,还在多个层面为企业带来了深远的积极影响。…

【JavaEE】Callable,Semaphore和CountDownLatch

🔥个人主页: 中草药 🔥专栏:【Java】登神长阶 史诗般的Java成神之路 一.Callable 在Java中,Callable接口是一个可以返回结果的异步任务执行方式。它与Runnable接口类似,都是描述一个“任务”,…

如何为列表元素分配序列号(Java Stream API 实战)

摘要: 本文将详细介绍如何在Java中使用Stream API对列表中的元素进行分组,并为每组元素分配一个唯一的序列号。通过一个具体的示例和测试案例,我们将演示这一技术如何简化数据处理,提高代码效率。 在Java编程中,我们经…

Linux-进程间关系与守护进程

一、进程组 1.1 什么是进程组 之前我们提到了进程的概念, 其实每一个进程除了有一个进程 ID(PID)之外 还属于一 个进程组。进程组是一个或者多个进程的集合, 一个进程组可以包含多个进程。 每一 个进程组也有一个唯一的进程组 ID(PGID), 并且…