【问题标题】:Tensorflow Model Deployment in GCP without Tensorflow Serving没有 Tensorflow Serving 的 GCP 中的 TensorFlow 模型部署
【发布时间】:2019-03-08 08:45:06
【问题描述】:

机器学习模型:基于 Tensorflow(1.9 版)和 Python 3.6 版

数据输入:来自 Bigquery

数据输出:至 Bigquery

生产预测频率:每月

我开发了一个基于 TensorFlow 的机器学习模型。我已经在本地对其进行了培训,并希望将其部署在 Google Cloud Platform 中进行预测。

模型从 Google Bigquery 读取输入数据,输出预测必须用 Google Bigquery 编写。在运行模型预测之前,必须运行一些数据准备脚本。目前我无法在生产中使用 BigQuery ML,因为它处于 Beta 阶段。此外,由于它是批量预测,我认为 Tensorflow Serving 不是一个好的选择。

我尝试过的部署策略:

  1. 使用 Google ML Engine 进行预测:这种方法在 GCS 上创建输出部分文件。这些必须合并并写入 Google Bigquery。所以在这种方法中,我必须启动一个虚拟机来执行数据准备脚本和 ML 引擎输出到 Google Bigquery 脚本。这增加了 24x7 的 VM 成本,仅在一个月内运行两个脚本。

  2. 使用 Dataflow 与 Google ML Engine 一起执行数据准备脚本:Dataflow 使用 python 2.7,而模型是在 Tensorflow 1.9 版和 python 3.6 版中开发的。所以不能用这种方法。

  3. Google App Engine:使用这种方法,必须开发一个完整的网络应用程序才能提供预测服务。由于预测是批量的,这种方法不适合。此外,flask/django 必须与代码集成才能使用它。

  4. Google Compute Engine:使用这种方法,VM 将 24x7 全天候运行,仅用于运行每月预测并运行两个脚本。这将导致大量成本开销。

我想知道什么是 Tensorflow 模型的最佳部署方法,它有一些预处理和后处理脚本。

【问题讨论】:

    标签: python-3.x tensorflow deployment google-cloud-platform google-bigquery


    【解决方案1】:

    关于选项 3,Dataflow 可以在作业结束时从 BigQuery 读取并将准备好的数据存储在 BigQuery 中。

    然后您可以让 Tensorflow 使用 BigQueryReader 来处理来自 BigQuery 的数据。

    您可以使用的另一个是Datalab,这是一个笔记本,您可以在其中准备数据,然后将其用于预测。

    【讨论】:

      【解决方案2】:

      我也没有发现这个流程简单或直观。有两个新的更新可能对您的项目有所帮助:

      • BigQuery ML 现在允许您导入 TensorFlow 模型link - 存在一些限制,但这可能会消除 BQ 和云存储或其他环境之间的一些来回数据移动。
      • Cloud DataFlow 支持 Alpha 版 Python 3(查看 Apache Beam 路线图 - link

      【讨论】:

        猜你喜欢
        • 2019-08-23
        • 2018-08-03
        • 2018-02-26
        • 2016-08-31
        • 2018-02-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-16
        • 2021-11-23
        相关资源
        最近更新 更多