兄弟们,最近在搞LLM推理优化,踩了不少坑,也提炼出几个真正能打的技巧,分享给大家直接拿来用。
**1. 动态Batch + 连续批处理(Continuous Batching)**
别再用固定batch size了!vLLM或者TGI都支持动态拼接请求。实测在A100上,把max_batch_size设到256,配合prefill-decode分离,吞吐直接提升2-3倍。注意调好max_num_seqs参数,别让显存爆了。
**2. 量化:INT4/FP8是性价比之王**
FP16?太奢侈了。对于7B以上模型,用AWQ或GPTQ做INT4量化,精度损失低于1%,但显存占用直接砍半。如果卡支持(比如H100),FP8推理更是白嫖性能——推荐用TensorRT-LLM的FP8模式。
**3. KV Cache优化:GQA+MQA**
如果你还在用多头注意力(MHA),赶紧换成Grouped Query Attention(GQA)或Multi-Query Attention(MQA)。比如LLaMA-2 70B默认MQA,KV cache大小只有MHA的1/8。对20K以上长上下文场景,这几乎是必选项。
**4. 推理引擎选型**
别迷信框架:PyTorch原生推理在复杂场景下比vLLM慢30-50%。如果你部署服务端,直接上vLLM或TensorRT-LLM;边缘端用llama.cpp(CPU优化极猛)。别自己造轮子,除非你想写CUDA。
**抛个问题**: 你们在实际部署中,遇到过哪些“优化后反而更慢”的坑?比如量化后多轮对话崩坏、batch调大导致超时?欢迎评论区真人案例。 |