使用keras进行AI平台在线预测,自定义预处理?

时间:2020-06-22 15:08:50

标签: python tensorflow keras google-cloud-ml

我是部署方面的新手,对于用于在线预测的AI平台我几乎没有疑问。我正在使用Tensorflow 2.1。 我使用keras API训练了模型,并使用tf.saved_model.save函数保存了模型。一切正常,但我想将我的预处理(令牌和填充)包含到模型中(或至少能够在“预测”函数中执行此操作)

我知道google cloud ml引擎上有一个名为“自定义预测例程”的选项,该选项允许在我们想要的任何框架上执行此操作,但是模型的限制为500 mb。我正在使用的模型为1.5 gb,而当我使用TF时,我想保留运行2 gb作为极限大小的模型的优势。

现在,我正在做的是:

预处理数据->进行请求->模型进行预测并发送结果->获取结果。

我想做:

对“原始数据”进行请求->对模型进行预处理,进行预测并发送结果->获取结果

有办法吗?

1 个答案:

答案 0 :(得分:1)

为此,您可能不需要预处理容器。而是在导出之前编写自定义服务功能:

@tf.function(input_signature=[tf.TensorSpec([None], dtype=tf.string)])
def preproc_prediction(text):
  # preprocess
  text_str = text.numpy().decode('utf-8')
  text_str = preproc(text_str)

  # call model with preprocessed string
  text = tf.constant(text_str)
  pred = model(text, training=False)
  return {
    'preds': pred
  }

model.save(EXPORT_PATH, signatures={'serving_default': preproc_prediction})