兄弟们,最近我把几个大模型压缩了一遍,先说说结论:模型量化确实能显著降低显存占用和推理延迟,但不是什么模型都能无脑上 int4 的。
先说常见的量化方式:
- **PTQ(训练后量化)**:最简单,但大模型容易掉精度,特别是 7B 以下的小模型,直接 int4 可能崩成渣。
- **QAT(量化感知训练)**:效果好,但需要重新微调,代价高。适合对精度要求高的场景,比如医疗、法律模型。
- **AWQ/GPTQ**:目前社区主流,对大模型支持较好,能保留大部分能力。实测 Llama-2-7B 用 AWQ int4 压缩后,推理速度提升约 2-3 倍,显存从 14GB 降到 4GB。
几个血泪教训:
1️⃣ 别盲目追求低位宽。int8 对大部分任务影响很小,但 int4 在代码生成、数学推理上容易翻车,建议先在评测集上跑一遍。
2️⃣ 注意校准数据集。用通用语料校准可能会让模型在垂域任务上变蠢,最好用你业务场景的数据。
3️⃣ 部署时调优:量化后模型对 batch size 和 token 长度敏感,建议实测不同配置再上线。
现在不少框架(vLLM、TGI、llama.cpp)都原生支持量化模型了,但坑还是不少。
提问时间:你们在实际部署中,遇到模型量化后最头疼的问题是什么?是精度暴跌还是推理速度没提上去?来评论区聊聊。 |