模型参数、模型存储精度、参数与显存
本文介绍了模型参数量衡量单位(M表示百万,B表示十亿)以及不同精度存储方式对参数占用的影响。FP32参数占4字节,FP16占2字节,INT8占1字节,FP64占8字节。参数显存计算公式为参数量乘以单参数字节数,总显存还需加上激活值、梯度和优化器状态。以7B参数的FP16模型为例,参数显存约14GB。简言之,FP16显存为参数量×2,FP32为×4,INT8为×1。
·
模型参数量衡量单位
M:百万(Million)
B:十亿(Billion)
1B=1000M1B = 1000M1B=1000M
参数存储精度
模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么样的精度去存储。
- 单精度浮点数(FP32):每个参数占用4字节(32位),提供较高的数值精度。
- 半精度浮点数(FP16):每个参数占用2字节(16位),可以节省存储空间和计算资源,但精度有所降低。
- 8位整数(INT8):每个参数占用1字节(8位),主要用于量化模型,进一步减少存储和计算开销,但精度显著降低。
- 双精度浮点数(FP64):每个参数占用8字节(64位),提供最高精度,但存储和计算成本也最高。
参数所占显存
参数显存 = 参数数量 × 每个参数的字节数(B)
这里的 B 指的是字节
总显存 = 参数显存 + 激活值显存 + 梯度显存 + 优化器状态显存
在使用 checkpoint 进行推理的时候,主要计算参数显存。
举例:
一个 7b 参数的模型,参数存储精度为 float16,那么:
- 总参数个数:7∗1097 * 10^97∗109
- 一个参数所占字节数:16/8=2(B)16 / 8 = 2(B)16/8=2(B)
- 参数所占总字节数,即参数显存:7∗109∗2=14∗109(B)=14∗109/1024/1024/1024≈14(G)7 * 10^9 * 2 = 14*10^9(B)= 14*10^9 / 1024 / 1024 / 1024 ≈ 14(G)7∗109∗2=14∗109(B)=14∗109/1024/1024/1024≈14(G)
简单来看,如果是float16,参数显存就是 参数量*2;如果是 float32,参数显存就是 参数量*4;如果是int8,参数显存就是 参数量*1。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)