In [ ]:
pip install hqq
In [ ]:
from transformers import AutoModelForCausalLM, AutoTokenizer, HqqConfig
# 所有线性层使用相同的量化配置
quant_config = HqqConfig(nbits=8, group_size=64)
方法 2:具有相同标签的每个线性层使用专门的量化配置¶
In [ ]:
# 不同线性层使用不同的量化配置
q4_config = {'nbits': 4, 'group_size': 64}
q3_config = {'nbits': 3, 'group_size': 32}
quant_config = HqqConfig(dynamic_config={
'self_attn.q_proj': q4_config,
'self_attn.k_proj': q4_config,
'self_attn.v_proj': q4_config,
'self_attn.o_proj': q4_config,
'mlp.gate_proj': q3_config,
'mlp.up_proj': q3_config,
'mlp.down_proj': q3_config,
})
第二种方法特别适用于量化混合专家模型(Mixture-of-Experts, MoEs),因为专家在较低的量化设置下受影响较小。
然后,您可以按以下方式量化模型:
In [ ]:
model = transformers.AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.float16,
device_map="cuda",
quantization_config=quant_config
)