**1. 量化:FP16不够就上INT8**
别以为混合精度只是调个参数。实测发现,FP16推理在V100上能提速20%,但显存吃紧时直接上INT8量化(用TensorRT或ONNX Runtime),速度翻倍,精度损失<1%。别怕掉点,先跑个验证集再决定。
**2. 算子融合:别让GPU闲着**
PyTorch里一堆小算子(如LayerNorm+ReLU)导致频繁kernel launch。用`torch.compile`或ONNX图优化,把连续操作合并,省掉IO开销。我试过BART模型,直接降了15ms延迟。
**3. 动态批处理:别迷信大batch**
服务端部署时,别傻等凑够大batch。用NVIDIA Triton的Dynamic Batching,按请求实时合并,吞吐量能翻倍。关键调好Max Batch Size和Delay Time,避免死等。
**4. 注意力优化:Flash Attention真香**
长序列任务(比如GPT推理),别用原生attention复杂度O(n²)。换成Flash Attention(V2版),显存省40%,速度还快。我最近在Llama2上试过,8K token推理不再爆显存。
**5. 推理框架选型:别死磕PyTorch**
PyTorch的JIT和eager模式都不适合生产。直接上TensorRT(N卡)或OpenVINO(Intel),或者用ONNX Runtime + CUDA Execution Provider。我自己的项目从PyTorch切到TensorRT,延迟从80ms降到30ms。
**问大家:** 你们在生产环境里踩过哪些推理优化的大坑?是量化后精度崩了,还是框架兼容性问题?来评论区聊聊 🔧 |