如何在spark上部署tensorflow模型仅进行推理

K_A*_*gus 5 java serving hdfs apache-spark tensorflow

我想在 Spark 上部署一个大模型(例如 bert)来进行推理,因为我没有足够的 GPU。现在我有两个问题。

  1. 我将模型导出为 pb 格式并使用 SavedModelBundle 接口加载模型。
SavedModelBundle bundle=SavedModelBundle.load("E:\\pb\\1561992264","serve");
Run Code Online (Sandbox Code Playgroud)

但是,我找不到加载 hdfs 文件系统路径的 pb 模型的方法

  1. Spark环境的Glibc版本与我训练模型的tensorflow版本不兼容。无论如何要解决这个问题吗?

我不确定这是否是在 Spark 上提供张量流模型的好方法。任何其他建议表示赞赏!

dan*_*all -1

您可以使用 Elephas ( https://github.com/maxpumperla/elephas ),它可以在 Spark 上进行 Keras 模型的分布式训练和推理。既然你提到它是一个 Tensorflow 模型,这可能需要转换(详细信息请参阅:How can I conversion a trained Tensorflow model to Keras?),但是一旦它是 Keras 模型,它应该像下面一样简单:

from elephas.spark_model import SparkModel


model = ... # load Keras model
data = ... # load in the data you want to perform inference on
spark_model = SparkModel(model)
predictions = spark_model.predict(data) # perform distributed inference on Spark cluster or local cores, depending on how Spark session is configured

Run Code Online (Sandbox Code Playgroud)