如何使用 Bulkinferrer 从之前在 Tensorflow Extended (TFX) 中推送的模型进行预测

Posted

技术标签:

【中文标题】如何使用 Bulkinferrer 从之前在 Tensorflow Extended (TFX) 中推送的模型进行预测【英文标题】:How to predict with Bulkinferrer from a previously pushed model in Tensorflow Extended (TFX) 【发布时间】:2021-12-16 07:37:01 【问题描述】:

在 TFX 管道中,我们如何使用BulkInferrer

BulkInferrer 与训练有素的modelpushed_model 连接起来是相当标准的。但是,如果我不想再次训练模型,我会喜欢使用先前训练的 modelpushed_model 并使用 BulkInferrer 进行批量推理(有点像使用 BulkInferrer 服务)。有可能吗?

如果不是,BulkInferrer 组件的目的是什么,只是为了在整个训练之后进行一次性预测或验证?

任何建议或cmets将不胜感激,谢谢。

【问题讨论】:

【参考方案1】:

BulkInferrer 是 TFX 库中最新添加的组件,用于支持未标记数据的批量推理。

Robert Crowe 在最近的BEAM summit

中很好地将 BulkInferrer 定位在推理管道中

以下是为什么有人会使用 BulkInferrer 的用例列表,试图在 ml-pipelines 而不是 data-pipelines 的情况下使用它:

    批处理作业中定期进行,例如每晚运行以推断前一天收到的数据的分数。例如,当推理延迟较高且需要离线运行以使用分数填充缓存时,或者当需要推理大量实例时。 当推理结果预计不会直接返回到推理请求(即实时)但可以异步执行时。例如,在新模型发布之前对其进行影子测试。 以事件驱动的方式。例如,在推断成批数据并检测到模型漂移时触发模型重新训练。 用于成本优化。例如,在低吞吐量模型/服务上,cpu/gpu 实例的空闲时间可能很长。

要在您的 ML 管道中执行此操作而不重新训练您的模型,您可以在管道的末尾添加 BulkInferrer,如果输入和配置没有更改,则可以添加 reuse the results from previous runs。这是由 Kubeflow 管道上的 Argo 和 Tekton 工作流管理器实现的,因为他们实现了 TFX,请参阅 step caching。

【讨论】:

谢谢一百万,这真的有助于我理解这个组件。我想我所需要的就是在管道中启用cache。只是一个后续问题,既然我有来自管道p-1pushed_model 的工件,是否可以创建一个新的管道p-2 并从p-1 加载这个pushed_model 以运行BulkInferrer p-2? 当然可以,可以参考p-1使用trainer.outputs['model']频道制作的神器(模型) 再次感谢您的帮助。我确实在尝试使用trainer.outputs['model'] 作为Bulkinferrer 的模型输入,但是,它们来自不同的运行(比如run-1run-2),所以我必须从@987654342 中选择trainer.outputs['model'] @(run-1)并加载为Channel 类型并将其提供给p-2run-2)中的Bulkinferrer。到目前为止,我没有任何运气将trainer.outputs['model'] 加载为Channel 类型,你介意给我一些详细的例子吗?我怎样才能做到这一点? 从您的元数据存储中获取它怎么样?如果您使用 MLMD,您可以查询上一次运行的模型,例如根据其名称。 感谢您的帮助,我花了一段时间才弄清楚解析器的工作原理。贝当克特! @TheofilosPapapanagiotou

以上是关于如何使用 Bulkinferrer 从之前在 Tensorflow Extended (TFX) 中推送的模型进行预测的主要内容,如果未能解决你的问题,请参考以下文章

如何在所有 eunit 案例之前启动应用程序

如何在 SwiftUI 中的文件、编辑和查看之前将项目添加到应用程序菜单?

如何在您的网站中嵌入样式化的谷歌地图

如何在设置或获取之前截取FormControl的值?

干货!如何使用仪表构造SRv6-TE性能测试环境

Eager Mode,写在TensorFlow 2.0 到来之前