[深度学习][LLM]:浮点数怎么表示,什么是混合精度训练?

混合精度训练

在日常深度学习训练中,一般使用单精度浮点数(float:FP32) 来表示参数并进行相关训练任务。那么浮点数在内存中是如何存储的呢?

在正式开始介绍混合精度训练之前,让我们先对半精度(FP16)单精度(FP32)双精度(FP64) 相关基础知识进行介绍。

1. 浮点表示法:IEEE二进制浮点数算术标准(IEEE 754)

IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number),一些特殊数值((无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种例外状况(包括例外发生的时机与处理方式)。

1.1 浮点数剖析

一个浮点数 (Value) 的表示其实可以这样表示:
Value=sign × exponent × fraction 1. M . . . × 2 E , E = exponent ; M = fraction \text{Value=sign} \times \text{exponent} \times \text{fraction} \\ 1.M... \times2^E,E=\text{exponent};M=\text{fraction} Value=sign×exponent×fraction1.M...×2E,E=exponent;M=fraction
也就是浮点数的实际值,等于符号位(sign bit)乘以指数偏移值(exponent bias)再乘以分数值(fraction)。

二进制浮点数是以符号数值表示法的格式存储——最高有效位被指定为符号位(sign bit);“指数部分”,即次高有效的e个比特,存储指数部分;最后剩下的f个低有效位的比特,存储“有效数”(significand)的小数部分。

img

指数部分,也称为指数偏移值(exponent bias),即浮点数表示法中指数域的编码值,等于指数的实际值加上某个固定的值,IEEE 754标准规定该固定值为 2 e − 1 − 1 2^{e−1}−1 2e11其中的 e e e 为存储指数的比特的长度。

以单精度浮点数为例,它的指数域是8个比特,固定偏移值是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值