兄弟们,最近搞模型部署有点心得,分享几个实测有效的优化技巧,别光盯着量化剪枝那点套路了。
**1. 计算图重写,别信框架默认**
你用的PyTorch或者TF,默认计算图不一定最优。试试 `torch.jit.script` 或者 `onnxruntime` 的图优化选项,手动合并一些小op。我上次把两个reshape+一个transpose合并成一个操作,推理直接快了15%。框架帮你做优化?别天真,自己动手才稳。
**2. 内存池切分,省掉申请开销**
大模型推理时,每次申请显存都有延迟。用 `cudaMallocAsync` 或者 `tensorrt` 的内存池机制,把常用尺寸的tensor预分配好。我调了个小demo,batch推理的尾延迟从50ms降到20ms。显存换速度,这买卖不亏。
**3. 算子选择器,屏蔽无用kernel**
你模型里可能混着一些低效的算子,比如某些gelu实现。手动指定 `torch.backends.cudnn.allow_tf32=True` 或者用 `torch.cuda.set_device` 配合 `cudaSetDevice` 禁止那些慢路径。我试过把某个自定义attention的float32 kernel强制转成float16,吞吐量翻倍。
最后问一句:你手头模型推理最大的坑是内存还是算力?评论区聊聊,踩坑经验最有价值。 |