首先解释一下量化的概念,在正常情况下,大模型的参数都是以浮点数的形式存在的,一般原始的模型的一个参数是32位的浮点数,也就是FP32,而在计算机中一个字节是8位,那么一个参数也就是4个字节大小,而12B的大模型也就是120亿参数,也就是480亿字节大小,通过二进制(1024)转换,也就是47GB大小,这么大的模型文件对于电脑性能显存的要求是非常高的,也就阻碍了大批的技术爱好者,因此就出现了量化的概念。
FP16使用16位来表示浮点数,其中1位用于符号,5位用于指数,10位用于位数,因此其范围和精度都小于FP32,但是其占用的计算资源也是FP32的一半,大大降低了训练、微调的门槛。
而BF16同样也是使用16位表示浮点数,与FP16不同,他的1位用于符号,8位用于指数,7位用于尾数,可以看出,他的指数位要多于FP16的指数位,因此其能够表示的范围和精度都要高一些,但又低于FP32。但同样在训练过程中,更多的指数部分也增加了一定的计算和存储开销。
FP8以此类推,使用16位来表示浮点数,是进一步量化的版本。
&emsp&emsp因此通过量化的方式降低了训练的门槛和成本,大家可以根据个人机器的配置选择不同的模型进行训练。
大模型精度(fp32,fp16,bf16,fp8)详解
于 2024-08-29 12:45:36 首次发布