兄弟们,最近陪跑几个模型部署项目,踩了不少坑。今天直接上干货,5个亲测有效的优化技巧,不说废话。
1️⃣ **量化是基本功**
FP16 起步,INT8 打底。用 bitsandbytes 或者 GPTQ 量化后,显存占用直接砍半,精度损失通常在1%以内。别跟我说怕掉点,不量化你的模型根本跑不起来。
2️⃣ **Flash Attention 必须开**
不管是训练还是推理,Flash Attention 都能让你在长序列场景下省30%显存,速度还快。HuggingFace 里设置 `attn_implementation="flash_attention_2"` 就行,别再用老掉牙的缩放点积。
3️⃣ **KV Cache 要会裁剪**
长文本对话时,KV cache 是显存杀手。用 PagedAttention 或 StreamingLLM,只保留关键 token 的 cache,显存能省40%以上,回答质量几乎不变。
4️⃣ **批量推理不如流式输出**
别傻傻等全部生成再返回。设置 `stream=True`,逐 token 输出,用户体验好,显存压力也小。尤其适合 API 部署场景。
5️⃣ **模型剪枝别乱来**
结构化剪枝(比如去掉无用的注意力头)比非结构化的实用。用 SparseGPT 或 Wanda 方法,剪掉20%参数,性能几乎不掉。但别信那些“剪掉50%还很强”的鬼话。
最后问下:你们在生产环境用啥优化方案?我最近试了 TensorRT 和 ONNX Runtime,各有优劣,想听听实际落地经验。 |