LLM之大模型精度(fp32、fp16、bf16等)学习记录

前言

接触大模型一段时间,对于fp32、fp16、bf16,int8,int4等使用的时候大致知道这是讲精度问题,但不是很清楚

在正常情况下,大模型的参数多以浮点数的形式存在,不考虑算力的情况下,一般原始的模型的参数是32位的浮点数,也就是fp32

float 类型   

float类型,是由IEEE定义的标准浮点数类型 ,由符号位(sign)、指数位(exponent)和尾数位(fraction)三部分组成,以float32举例,它使用1位做符号位,8位做指数位,23位做尾数位,图片实例如下:

整个浮点数可表示为f=s\ast t\ast 2^{i^{}},其中s为符号位-1或1,t为尾数,i为指数。

符号位
        0表示正,1表示负

指数位

        指数位用8位移码表示。8bit可表示256个数,用移码可表示的十进制范围为-127~128。

        当指数位的移码为0表示浮点数的指数负无穷整个浮点数为0

        当指数位的移码为255时表示指数为正无穷浮点数为最大值

尾数位

        尾数部分部分共23位,表示范围为0, 2^{23}-1

计算机中一个字节是8位,那么一个fp32参数也就是4个字节大小,而12B的大模型也就是120亿参数,也就是480亿字节大小,通过二进制(1024)转换,也就是47GB大小,这么大的模型文件对于电脑性能显存的要求是非常高的,为了能够在算了有限的条件下使用大模型,因此就出现了量化的概念.

FP64、FP16、FP8、FP4都是类似组成,只是指数位和小数位不一样

FP16使用16位来表示浮点数,其中1位用于符号,5位用于指数,10位用于位数,因此其范围和精度都小于FP32,但是其占用的计算资源也是FP32的一半,大大降低了训练、微调的门槛

FP8是2022年9月由多家芯片厂商定义的,FP8格式有两种变体,E4M3(4位指数和3位尾数)和E5M2(5位指数和2位尾数)

FP4是2023年10月由某学术机构定义

特殊精度

BF16,由Google Brain提出,同样也是使用16位表示浮点数,与FP16不同,他的1位用于符号,8位用于指数,7位用于尾数,可以看出,他的指数位要多于FP16的指数位,因此其能够表示的范围和精度都要高一些,但又低于FP32。但同样在训练过程中,更多的指数部分也增加了一定的计算和存储开销。

TF32,英伟达针对机器学习设计的一种特殊的数值类型,用于替代FP32。首次在A100 GPU中支持,由1个符号位,8位指数位(对齐FP32)和10位小数位(对齐FP16)组成,实际只有19位。在性能、范围和精度上实现了平衡

INT类型

整数的两种表示方法:无符号整数 (Unsigned Integer)和有符号整数 (Signed Integer),以INT8举例,无符号整数取值范围为0-256,有符号取值范围则为-128至127

INT4、 INT16同理

多精度和混合精度概率

多精度计算,是指用不同精度进行计算,在需要使用高精度计算的部分使用双精度,其他部分使用半精度或单精度计算。

混合精度计算,是在单个操作中使用不同的精度级别,从而在不牺牲精度的情况下实现计算效率,减少运行所需的内存、时间和功耗

量化方法

到时候再写篇博客再讲

参考链接:

大模型涉及到的精度是啥?FP32、TF32、FP16、BF16、FP8、FP4、NF4、INT8区别

 欢迎大家点赞或收藏~

大家的点赞或收藏可以鼓励作者加快更新哟~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值