量化线性层,将原始的fp16/bf16权重加载到Linear8bitLt模块中,调用int8_module.to(“cuda”)量化 (44)
llm_int8_skip_modules
如果你通过 llm_int8_skip_modules
参数提供模块(短)名称列表,也可以自行选择要跳过的模块。有几点需要注意:
- 尽管该参数名称中包含
int8
,但它同样适用于 4 位量化。 - 你无需指定层的完整名称(例如
model.decoder.layers[0].self_attn.o_proj
),因为内部会使用正则表达式进行名称匹配(使用o_proj
即可,它会跳过 32 个解码器块中每一个的o_proj
层)。 - 该参数会覆盖
get_keys_to_not_convert()
生成的列表。
如果你的模型存在权重共享,且你选择使用自己的模块跳过列表,则必须在列表中添加其中一个共享权重的层。否则,可能会出现以下异常:
AttributeError: 'Parameter' object has no attribute 'SCB'