没有Tensorflow服务的GCP中的Tensorflow模型部署

时间:2018-10-03 07:13:16

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

  

机器学习模型:基于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 Engine输出到Google Bigquery脚本。仅在一个月内运行两个脚本,这会增加24x7的VM成本。

  2. 使用Dataflow和Google ML Engine一起执行数据准备脚本:当模型在Tensorflow 1.9版和python 3.6版中开发时,Dataflow使用python 2.7。因此无法使用这种方法。

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

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

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

2 个答案:

答案 0 :(得分:1)

我也没有发现此流程容易或直观。有两个新更新可能对您的项目有帮助:

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

答案 1 :(得分:0)

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

然后,您可以让Tensorflow使用programmatically not possible从BigQuery中获取数据。

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