1. 推理加速概述:为什么需要推理加速?

大家好,我是这门课的主讲。今天咱们聊聊推理加速——说白了,就是让训练好的模型在“干活”的时候跑得更快、更省、更稳。

你可能觉得,模型能跑起来不就行了?嗯,我刚开始也这么想。直到有一次,我把一个BERT模型部署到线上,结果单次推理耗时300毫秒,用户反馈“转圈圈转半天”。老板问我:“这玩意儿能用吗?”我哑口无言。从那以后,我彻底明白了——推理性能不是锦上添花,而是生死线。

1.1 为什么需要推理加速?

先看几个真实场景:

  • 实时对话系统:用户说一句话,你必须在几百毫秒内回复。慢了,对话就断了。
  • 自动驾驶:摄像头拍到障碍物,模型必须在几十毫秒内做出判断。延迟一高,可能就是事故。
  • 批量图像处理:电商平台每天要审核几百万张图片,单张慢1毫秒,一天就多出近20分钟。
  • 边缘设备:手机、IoT设备上跑模型,算力有限,内存有限,不加速根本跑不动。

我见过一个团队,把模型从PyTorch直接搬到手机端,没做任何优化。结果呢?推理一次要5秒,手机发烫,用户直接卸载。后来他们用了量化+剪枝,推理时间降到200毫秒,内存占用也砍了一半。这就是推理加速的价值。

核心观点:推理加速不是“可选项”,而是“必选项”。它决定了你的模型能不能真正落地,能不能被用户接受,能不能在成本上跑得通。

1.2 推理加速的核心挑战

推理加速要解决三个核心问题:延迟、吞吐量、成本。这三个指标互相牵制,你很难同时做到最优。我习惯把它们称为“不可能三角”。

1.2.1 延迟(Latency)

延迟,就是模型处理一个请求需要多长时间。单位通常是毫秒。

  • P50延迟:一半请求的耗时。这个指标代表“典型体验”。
  • P99延迟:99%请求的耗时。这个指标代表“最差体验”。

为什么P99更重要?因为用户不会记住99次流畅的体验,但会记住那1次卡顿。我在做推荐系统时,P50只有50毫秒,但P99飙到了800毫秒。排查后发现,是某个特征工程模块在极端数据下触发了慢路径。优化后P99降到120毫秒,用户满意度直接提升了15%。

避坑指南:我曾经只盯着P50优化,结果P99越来越差。后来我养成了一个习惯——每次优化后,必须同时看P50和P99。如果P99恶化,说明优化有副作用。

1.2.2 吞吐量(Throughput)

吞吐量,就是单位时间内模型能处理多少个请求。单位通常是QPS(每秒查询数)或TPS(每秒事务数)。

延迟和吞吐量是什么关系?你想想看:

  • 如果每个请求处理得很快(低延迟),单位时间内就能处理更多请求(高吞吐量)。
  • 但如果你把请求批量处理(batch),单个请求的延迟可能会增加,但整体吞吐量会大幅提升。

举个例子:

策略 单次延迟 批量大小 吞吐量(QPS)
单请求处理 10 ms 1 100
批量处理(batch=8) 40 ms 8 200

看到了吗?批量处理让单次延迟从10ms涨到40ms,但吞吐量翻了一倍。这就是延迟和吞吐量的权衡。我在做广告点击率预估时,就遇到过这种选择——用户点击广告必须实时响应,所以延迟不能超过50ms;但后台又有海量请求需要处理。最后我们用了动态批处理:请求少时单条处理,请求多时自动合并成batch。

1.2.3 成本(Cost)

成本,说白了就是钱。包括:

  • 计算成本:GPU/CPU的算力消耗。用更贵的硬件当然更快,但预算有限。
  • 内存成本:模型参数和中间结果占用的显存/内存。大模型动辄几十GB,不是所有设备都装得下。
  • 带宽成本:数据传输的耗时和费用。尤其是跨机房、跨地域的推理。

我见过一个团队,为了追求极致延迟,给每个模型都配了A100 GPU。结果呢?月账单出来,老板直接叫停项目。后来他们改用量化+CPU推理,延迟只增加了30%,但成本降了80%。

注意:成本优化不能只看硬件。模型结构、推理框架、部署方式都会影响成本。我曾经踩过一个坑——为了省GPU,把模型部署在CPU上,结果延迟太高,用户流失。后来发现,用FP16推理+适当batch,GPU成本只增加20%,但延迟降了5倍。算总账,反而更划算。

1.3 三个挑战的权衡

延迟、吞吐量、成本,这三者就像跷跷板。你压下一头,另一头就会翘起来。我习惯用一张图来理解它们的关系:

推理加速“不可能三角” 延迟 吞吐量 成本 低延迟 vs 高吞吐 批量处理提升吞吐 但可能增加延迟 高性能 vs 低成本 量化/剪枝降低成本 但可能牺牲精度 核心:找到平衡点 根据业务场景取舍

你看,三个角互相拉扯。你追求低延迟,可能就要牺牲吞吐量或增加成本。你追求低成本,可能就要接受更高的延迟。没有完美的方案,只有最适合你业务的方案。

1.4 推理加速的常见手段

既然挑战这么明确,那怎么解决呢?我简单列一下后续章节会深入讲解的技术:

  • 模型压缩:量化、剪枝、蒸馏。把模型变小,自然跑得快。
  • 推理框架优化:TensorRT、ONNX Runtime、OpenVINO。这些框架专门为推理做了极致优化。
  • 硬件加速:GPU、TPU、NPU。选对硬件,事半功倍。
  • 系统级优化:批处理、流水线、异步推理。从架构层面提升效率。
  • 算子融合:把多个小算子合并成一个大算子,减少内存访问和计算开销。

我的建议:不要一上来就想着用最复杂的技术。先做性能分析,找到瓶颈在哪。我见过太多人,模型还没跑通就想着量化,结果精度掉得一塌糊涂。先测量,再优化,这是铁律。

1.5 本章小结