兄弟们,模型优化这事儿,真不是靠堆硬件就能解决的。最近折腾了几个落地项目,分享一下实测有效的技巧,全是干货,不整虚的。
**1. 量化别只盯INT8,看看FP16+动态缩放**
很多人上来就INT8量化,结果精度崩了。试试FP16混合精度,搭配动态损失缩放,推理速度能提30-50%,显存直接砍半。特别是Transformer类模型,效果最明显。
**2. 算子融合 + 图优化,白嫖加速**
用TensorRT或者ONNX Runtime做图优化,把连续的小算子合并成大算子。我试过一个BERT模型,手动融合LayerNorm和残差连接,延迟从12ms降到8ms。别嫌麻烦,缓存图结构还能省加载时间。
**3. 批次策略:别傻等,动态Batching才是王道**
在线服务别用固定batch size。用动态batching,把请求攒够一定时间或数量再推理,吞吐能翻倍。配合CUDA Graph,kernel启动开销直接归零。
**4. 显存不够?试试模型并行 + 激活检查点**
单卡塞不下就用张量并行,但别全上。推荐只对Attention层做并行,FFN层用激活检查点换显存,V100上跑LLaMA-7B实测显存降40%,精度无损失。
最后问一句:你们在优化时,踩过最坑的“伪优化”是哪招?是算子融合Boom了,还是量化后精度崩了?评论区聊聊。 |