首页 > 其他分享 >大语言模型LLM推理及训练显存计算方法

大语言模型LLM推理及训练显存计算方法

时间:2023-10-03 20:44:43浏览次数:45  
标签:显存 1024 字节 BF16 GB LLM 推理 计算方法

一、推理:显存计算

推理的显存大头就是:参数量,参数类型版本一般有以下四种: 

  1. float 32位 浮点数 4 字节
  2. half / BF16 16位 浮点数 2 字节
  3. int8 8位 整数 1 字节
  4. int4 4位 整数 0.5 字节

 以 7B-BF16 版本为例,需要显存 = 数量 * 类型大小 = 70亿 * 2字节 = 140亿字节

 所以 140亿 字节 = 14 * 1000 * 1000 * 1000 / 1024 / 1024 / 1024 = 14 * (1000 / 1024) ^3 = 14 * 0.93 = 13 GB

 

注1: (1000/1024)^3 = 0.93...

注2: 估算的话,干脆直接记 1就好了,也就是 7B-BF 就是 7 * 2 = 14 GB 的显存,因为除了参数,推理还需要另外的显存,溢出一点没坏处。

按估算,各个 llama2-13B 版本推理大概用到多少显存(假设存在对应类型)

 

7B参数的4种常见类型所需推理显存计算如下:

  1. float 7 * 4 = 28 GB
  2. half / BF16 7 * 2 = 14 GB
  3. int8 7 * 1 = 7 GB
  4. int4 7 * 0.5 = 3.5 GB

13B参数的4种常见类型所需推理显存计算如下:

  1. float 13 * 4 = 52 GB
  2. half / BF16 13 * 2 = 26 GB
  3. int8 13 * 1 = 13 GB
  4. int4 13 * 0.5 = 6.5 GB

 

二、训练:显存

为了让模型收敛,训练的参数类型不能是 int8 / int4;一般是 float,效果差点的 就用 BF16;

 因为 反向传播 / Adam-优化 / Transformer架构 等因素,一般来说,训练需要的显存,是 同样规模 LLM 推理 的 3-4倍;

 

保守估计,按 4倍 计算。

 例如:7B 训练需要的显存,估算结果:

 参数类型 所需显存

float 7 * 4 * 4 = 112 GB

half / BF16 7 * 2 * 4 = 56 GB

 

梯度:参数量的1倍

优化器的状态:参数量的2倍

用 AdamW 优化器,需要2倍 参数量;

SGD 优化器,需要 1倍 参数量;

关于 LoRA / QLoRA 显存,以 LoRA 为例: 

LoRA 只需要给原始模型做推理,训练一个更小的模型来实现和训练原始参数差不多的效果。

例:原本需要微调1024×512的参数,用了LoRA之后,如果选择的 Rank=8,则只需要微调这么多参数:1024×8+512×8

 在这个基础上跑一次原始参数量的推理(不需要梯度和优化器状态,但仍然需要一些显存来存储运算过程的数据),合起来就是LoRA的所需要的显存。

 

标签:显存,1024,字节,BF16,GB,LLM,推理,计算方法
From: https://www.cnblogs.com/tommickey/p/17741619.html

相关文章

  • 全新注意力算法PagedAttention:LLM吞吐量提高2-4倍,模型越大效果越好
    前言 吞吐量上不去有可能是内存背锅!无需修改模型架构,减少内存浪费就能提高吞吐量!本文转载自新智元仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV各大方向专栏与各个部署框架最全教程整理......
  • 论文阅读_大模型_ToolLLM
    英文名称:ToolLLM:FacilitatingLargeLanguageModelstoMaster16000+Real-worldAPIs中文名称:TOOLLLM:帮助大语言模型掌握16000多个真实世界的API文章:http://arxiv.org/abs/2307.16789代码:https://github.com/OpenBMB/ToolBench作者:YujiaQin日期:2023-07-311......
  • 关于Pohlig-Hellmen算法喵
    \(g^x\equiva(mod\;p)\)当\(g\)为原根时拆分\(p-1=\prod_{i=1}p_i^{ki}\)对于每一个\(p_i\)进行处理将\(x\)转化为\(p\)进制数\(x=c_0+c_1p_i+c_2p_i^2+...+c_{k_i-1}p_i^{k_i-1}\)\(g^{x(\frac{p-1}{p_i})}\equiva^{\frac{p-1}{p_i}}(mod\;p)\)用1展开2中......
  • C/C++中结构体占用内存大小的计算方法
    两个值:对齐系数:一般为8个字节。#pragmapack(8)设置对齐系数为8。有效对齐值:假设结构体中最长的类型的长度为len,则有效对齐值=min(len,对齐系数)。计算规则:计算存放的位置:第一个成员放在位置0,后面的成员A存放的时候,会先计算size=min(A大小,有效对齐值),A只放在size的整数倍......
  • 解密Prompt系列15. LLM Agent之数据库应用设计:DIN & C3 & SQL-Palm & BIRD
    上一章我们主要讲搜索引擎和LLM的应用设计,这一章我们来唠唠大模型和DB数据库之间的交互方案。有很多数据平台已经接入,可以先去玩玩再来看下面的实现方案,推荐sqltranslate:简单,文本到SQL,SQL到文本双向翻译,新手体验ai2sql:功能更全,包括语法检查,格式化等chat2query:可处理复杂query......
  • LLM大模型微调:应用、策略与未来发展
    随着人工智能技术的快速发展,大型语言模型(LargeLanguageModels)已经成为了自然语言处理(NLP)领域的研究热点。这些大模型具备强大的语言生成和推理能力,为各种实际应用提供了强大的支持。近年来,许多开源的LLM大模型被发布,使得广大开发者可以自由地使用和调整这些模型。本文将对这些......
  • 生态保护红线划定与评估中气象因子计算方法 学习记录
    声明本文是学习GB-T42960-2023生态保护红线划定与评估中气象因子计算方法.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本文件规定了生态保护红线划定与评估中气象资料选取的要求,描述了气象因子计算的方法。本文件适用于生态功能的调查和生态保护......
  • 从Google开发者大会浅谈LLM的应用
    这周参加了在上海世博中心举办GoogleI/OConnect中国开发者大会,有几年没参加这么高质量的活动,有点感慨。     期间重点听了关于GCP和Google AI大语言模型的主题演讲,发现目前各大厂商仍然还处于大语言模型的早期应用阶段,GooglePaLM2也不例外。作为业界最领先的AI公司之......
  • 指令微调LLM进行推荐Recommendation as Instruction Following: A Large Language Mod
    原文地址:https://arxiv.org/abs/2305.07001本文作者将用户偏好、意图等构建为指令,并用这些指令调优一个LLM(3BFlan-T5-XL),该方法对用户友好,用户可以与系统交流获取更准确的推荐。INTRODUCTIONLLM是建立在自然语言文本上的,它不能直接适应基于行为数据的推荐系统。为了减少两者的g......
  • Public key cryptography - Diffie-Hellman Key Exchange
    https://www.youtube.com/watch?v=YEBfamv-_do#t=02m37s这个video很好地解释了DH算法的原理,简单清晰。需要稍微了解些取模运算的知识:参见:https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/modular-addition-and-subtraction?utm_source=poc......