生产型机器学习系统:静态推理与动态推理

推理是指通过将训练后的模型应用于无标签示例做出预测的过程。一般来说,模型可以通过以下两种方式之一推断预测结果:

  • 静态推理(也称为离线推理批量推理)是指模型对一组常见的无标签示例进行预测,然后将这些预测缓存在某个位置。
  • 动态推理(也称为在线推理或实时推理)是指模型仅在需要时进行预测,例如在客户端请求预测时。

举个极端的例子,假设有一个非常复杂的模型,需要 1 小时才能推理出预测结果。这可能非常适合使用静态推理:

图 4. 在静态推理中,模型会生成预测结果,然后将其缓存在服务器上。
图 4. 在静态推理中,模型会生成预测结果,然后将这些结果缓存在服务器上。

 

假设这个复杂模型错误地使用了动态推理而非静态推理。如果许多客户端在同一时间请求预测,其中大多数客户端将在数小时或数天后才能收到该预测。

现在,假设有一个模型可以快速推理,可能只需 2 毫秒,并且使用相对最少的计算资源。在这种情况下,客户端可以通过动态推理快速高效地接收预测结果,如图 5 所示。

图 5. 在动态推理中,模型会根据需要推理出预测结果。
图 5. 在动态推理中,模型会根据需要推理出预测结果。

 

静态推理

静态推理具有一定的优势和缺点。

优势

  • 无需过多担心推理费用。
  • 可以在推送前对预测进行后验证。

缺点

  • 只能提供缓存的预测结果,因此系统可能无法针对不常见的输入示例提供预测结果。
  • 更新延迟时间可能以小时或天为单位。

动态推理

动态推理具有一定的优势和劣势。

优势

  • 可在新条目加入时对其进行预测,非常适合存在长尾(不常见)的情况。

缺点

  • 计算量非常大,对延迟较为敏感。这种组合可能会限制模型复杂性;也就是说,您可能需要构建一个比复杂模型更快地推理出预测结果的更简单的模型。
  • 监控需求更为密集。

练习:检查您的理解情况

以下四个陈述中,哪三个对静态推理来说是正确的?
模型必须为所有可能的输入创建预测。
是的,模型必须针对所有可能的输入进行预测,并将其存储在缓存或查找表中。 如果模型要预测的事物集合是有限的,则静态推理可能是一个不错的选择。 不过,对于包含大量不常见或罕见项的自由形式输入(例如用户查询),静态推理无法提供完整覆盖。
系统可以在投放推理出的预测结果之前对其进行验证。
是,这是静态推理的有用方面。
对于给定的输入,模型可以比动态推理更快地提供预测。
是的,静态推理几乎总是比动态推理更快地提供预测。
您可以快速应对世界形势的变化。
不可以,这是静态推理的缺点。
以下哪个关于动态推理的表述是正确的?
您可以为所有可能的条目提供预测。
是的,这是动态推理的优势。系统会为收到的任何请求分配一个得分。动态推理可处理长尾分布(包含许多稀有项的分布),例如电影评论中所有可能的句子的空间。
您可以在使用预测结果之前对其进行后验证。
通常,由于预测是按需进行的,因此无法在使用之前对所有预测进行后验证。不过,您或许可以监控汇总预测质量,以提供一定程度的质量检查,但这些检查只能在火势蔓延后发出火警。
执行动态推理时,您无需像执行静态推理时那样担心预测延迟时间(返回预测结果的延迟时间)。
在动态推理中,预测延迟时间通常是一个真正的问题。 很遗憾,添加更多推理服务器并不一定能解决预测延迟问题。