模型内存计算

文章探讨了不同精度(fp32,fp16,int8)下内存计算的需求,以LLaMA-6B模型为例,计算了fp32和int8精度下的内存占用。同时解释了显卡算力的概念,以及如何通过核心数量、时钟速度等因素计算FLOPS。
摘要由CSDN通过智能技术生成

一、目录

  1. 内存计算
  2. 内存计算案例
  3. 显卡算力
    1B参数显存计算: n*10^9 *4(fp32) /1024^3=3.72G
LLMs加载精度	1B参数量所需显存(GB)
fp32         	3.72
fp16 / bf16   	1.86
int8	        0.93

二、实现
内存计算案例
● fp32 精度,一个参数需要 32 bits, 4 bytes.
● fp16 精度,一个参数需要 16 bits, 2 bytes.
● int8 精度,一个参数需要 8 bits, 1 byte.
内存分配: 1.模型参数 2. 梯度 3.优化器参数。

  1. 内存计算案例
    LLaMA-6B为例:
    模型参数:等于参数量每个参数所需内存。
    对于 fp32,LLaMA-6B 需要 6B
    4 bytes = 24GB内存
    对于 int8,LLaMA-6B 需要 6B1 byte = 6GB
    梯度:同上,等于参数量
    每个梯度参数所需内存。
    对于 fp32,LLaMA-6B 需要 6B4 bytes = 24GB内存
    对于 int8,LLaMA-6B 需要 6B
    1 byte = 6GB
    优化器参数:不同的优化器所储存的参数量不同。
    对于常用的 AdamW 来说,需要储存两倍的模型参数(用来储存一阶和二阶momentum)。
    fp32 的 LLaMA-6B,AdamW 需要 6B8 bytes = 48 GB
    int8 的 LLaMA-6B,AdamW 需要 6B
    2 bytes = 12 GB
    除此之外,CUDA kernel也会占据一些 RAM,大概 1.3GB 左右,查看方式如下。
    综上,int8 精度的 LLaMA-6B 模型部分大致需要 6GB+6GB+12GB+1.3GB = 25.3GB 左右
  2. 显卡算力
    显卡算力是什么?
    显卡算力是指显卡能够在给定时间内完成多少次浮点运算。它用于评估显卡的性能。通常被表示为每秒执行的浮点运算次数,也称为 FLOPS(Floating Point Operations Per Second)。
    计算显卡算力涉及到几个因素。首先,需要知道显卡的核心数量、时钟速度和每个核心的浮点运算单元数量。然后,将这些因素结合在一起,使用以下公式计算显卡算力:
    显卡算力 = 核心数量 x 时钟速度 x 浮点运算单元数量
    例如,如果显卡具有1280个核心,时钟速度为1400 MHz,每个核心具有两个浮点运算单元,则该显卡的算力为
    算力 = 1280 x 1400 x 2 = 3.584 TFLOPS
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值