生产机器学习系统:静态推理与动态推理#
两种推理方式#
推理是把训练好的模型应用到未标注样本上、做出预测的过程。笼统地说,模型可以用两种方式做推理:
静态推理(也叫离线推理或批量推理):模型先对一批常见的未标注样本做出预测,然后把这些预测结果缓存到某个地方。
动态推理(也叫在线推理或实时推理):模型只在有需要的时候才做预测,比如客户端来请求一个预测的时候。
两个极端,说明为什么要分成这两种#
先来看一个极端情形。想象有一个非常复杂的模型,做一次预测要花一个小时。这种情况下,用静态推理大概再合适不过了:

假如这个同样复杂的模型搞错了、误用了动态推理,会怎样?当很多客户端在同一时间前后请求预测时,他们中的大多数要等上几个小时甚至几天,才能拿到那个预测。
再看另一个极端。假设模型推理很快——也许只要 2 毫秒,用的算力也相对最少。这种情况下,客户端就能通过动态推理又快又高效地拿到预测,正如图 5 所示:

静态推理#
静态推理有它的优点,也有它的缺点。
优点:
不必太操心推理的成本。
可以在把预测推出去之前,先做一轮事后验证。
缺点:
只能提供缓存过的预测,所以系统可能没法为那些不常见的输入样本给出预测。
更新延迟大概率是以小时或天来计的。
动态推理#
动态推理同样有优点,也有缺点。
优点:
- 任何新来的项目都能当场算出预测,这对长尾(也就是不常见的那部分)预测特别有用。
缺点:
既消耗算力,又对延迟敏感。这两件事凑在一起会限制模型的复杂度——也就是说,你可能不得不构建一个更简单、推理更快的模型,而不是继续用那个复杂模型。
监控上的要求更高。
练习:检查你的理解#
第1题:下面关于静态推理的说法,以下四条中哪些选项是正确的?
A. 模型必须为所有可能的输入都生成预测。
B. 对于同一个输入,模型提供预测的速度比动态推理更快。
C. 系统可以在把预测提供出去之前,先对它做一轮验证。
D. 你能对世界上的变化做出快速反应。
第2题:下面关于动态推理的说法,以下说法中哪些选项是正确的?
A. 你可以在预测被使用之前,先做一轮事后验证。
B. 做动态推理时,你不必像做静态推理那样操心预测延迟(返回预测所花的时间)。
C. 你可以为所有可能的输入提供预测。
关键术语:
- 示例(Example)
- 推理(Inference)
- 未标注样本(Unlabeled example)