你可能在各种模型和lora以及vae等等版本上见过fp16这个后缀,包括在内核版本上,现在有一个琥珀青叶FP8先行版。
以及最近频繁有人问,某个controlnet带fp16和不带fp16,为什么名字一样,大小不一样?
下面就来解答这个问题。
fp32 fp16 fp8 这其实是三种精度格式,fp是floating-point的缩写,了解一点编程基础的对这个词肯定都不陌生。
说穿了就是三种存储格式,fp32指的是用32位二进制表示的浮点数,fp16就是16位,fp8就是8位。
在此之上还有FP64,甚至FP128,但这些我们日常基本遇不到,一个模型100多G,没必要。
这部分属于编程入门的基础知识,具体的请自行百度,这里不做展开。
简单来说,fp32最完整,可以携带和存储的信息最多,所以在大部分时候,默认使用的是fp32,特别是在训练模型的时候。
而你下载或使用的大模型或者controlnet模型,如果没有特别标注,默认都是fp32的,因此controlnet模型每一个都是1.35G。
但是,实际上在webUI中,默认使用的是FP16,比如启动器上默认的“开启半精度优化”: