8位量化简介(40)
8位量化
8位量化的作用是什么?
“LLM.int8()是一种不会降低性能的量化方法,它使大型模型的推理更易于实现。其关键在于从输入和权重中提取异常值,并以16位进行乘法运算。所有其他值都以8位进行乘法运算,并在反量化回16位之前量化为Int8。16位和8位乘法运算的输出相结合,产生最终输出。”
来源:8位量化
如果选择使用这种方法对模型进行量化,BitsAndBytes配置中的其他一些参数和默认值也适用:
- llm_int8_threshold:6.0
- llm_int8_has_fp16_weight:False
- llm_int8_enable_fp32_cpu_offload:False
该阈值用于检测异常值,即需要以16位处理的值。在这种情况下,我们只需使用默认值即可。另外两个参数可能用于一些特殊且更高级的使用场景,因此在此不做处理。
不过,还有一个参数我们将单独用一节来介绍:llm_int8_skip_modules。
让我们将配置保持在最低限度,并以8位加载模型。就像处理半精度模型一样,我们可以使用from_pretrained()方法的quantization_config参数直接以8位加载模型:
bnb_config_q8 = BitsAndBytesConfig(load_in_8bit