如何在TensorFlow Extended(TFX)中使用已有推送模型通过BulkInferrer预测
TFX BulkInferrer 组件使用问题解答
能否直接复用已训练完成的模型执行批量推理
完全可以实现,无需重新运行训练流程。你可以通过TFX内置的ImporterNode组件先将本地/远端存储的已有模型(Model或PushedModel类型)导入到当前流水线的ML元数据中,再把导入的模型输出直接传入BulkInferrer即可。
参考实现代码:
from tfx.components import ImporterNode, BulkInferrer from tfx.types import standard_artifacts from tfx.proto import bulk_inferrer_pb2 # 导入已训练完成的模型 model_importer = ImporterNode( # 替换为你存储模型的实际路径,支持本地路径、GCS、S3等远端存储路径 source_uri="/path/to/your/trained/model", artifact_type=standard_artifacts.Model, # 如果是PushedModel则替换为 standard_artifacts.PushedModel reimport=False ) # 初始化BulkInferrer执行批量推理 bulk_inferrer = BulkInferrer( # 传入要推理的输入数据集,一般来自ExampleGen的输出 examples=example_gen.outputs["examples"], # 直接绑定导入的已有模型 model=model_importer.outputs["result"], data_spec=bulk_inferrer_pb2.DataSpec( example_splits=["infer"] # 指定要执行推理的数据集分片 ), model_spec=bulk_inferrer_pb2.ModelSpec( signature_name="serving_default" # 对应模型的服务签名 ) )
BulkInferrer的核心定位
它是TFX生态内的离线批量推理专用组件,并非只能绑定流水线内训练的模型使用,核心适用场景包括:
- 全流程训练完模型后,对大规模离线数据集执行一次性批量预测,无需部署在线推理服务
- 模型校验阶段,对标注好的验证集批量生成预测结果,后续对接Evaluator做效果评估、对接ModelValidator做合规校验
- 定期离线批量生成预测结果,直接供给下游业务使用,比如风控离线打分、推荐系统召回结果预生成等
使用建议
- 如果你需要周期性执行批量推理,可以把「导入已有模型+运行BulkInferrer」的逻辑封装成独立的流水线,无需和训练流水线绑定,直接配置定时调度即可
- 推理完成后的结果会自动记录到ML元数据中,你可以通过
bulk_inferrer.outputs["inference_result"]获取结果存储路径,直接导出到业务系统使用 - 如果需要对推理结果做自定义后处理,可以在流水线中接一个自定义的PythonFunction组件读取推理结果处理即可
内容的提问来源于stack exchange,提问作者xmindata
相关产品推荐
相关产品推荐

