可以将 mlflow.spark 保存的模型加载为 Spark/Scala 管道吗?

Posted

技术标签:

【中文标题】可以将 mlflow.spark 保存的模型加载为 Spark/Scala 管道吗?【英文标题】:can mlflow.spark's saved model loaded as Spark/Scala Pipeline? 【发布时间】:2020-06-19 09:04:39 【问题描述】:

我们的算法工程师正在使用 pyspark 和 mlflow 开发机器学习模型。他正在尝试使用mlflow.spark API 保存模型,模型格式是原生的spark MLlib 格式。可以从Spark Scala 代码加载模型吗?似乎 mlflow 在跨语言使用方面受到很大限制。

【问题讨论】:

【参考方案1】:

MLflow Java/Scala 客户端不具备与 MLflow Python 相同的功能,因为它缺少项目和模型的概念。但是,您可以使用 downloadArtifact 方法使用 Scala 读取 PySpark 生成的 Spark ML 模型。

https://mlflow.org/docs/latest/java_api/org/mlflow/tracking/MlflowClient.html#downloadArtifacts-java.lang.String-java.lang.String-

%python
mlflow.spark.log_model(model, "spark-model")

%scala
val modelPath = client.downloadArtifacts(runId, "spark-model/sparkml").getAbsolutePath
import org.apache.spark.ml.PipelineModel
val model = PipelineModel.load(modelPath)
val predictions = model.transform(data)

【讨论】:

以上是关于可以将 mlflow.spark 保存的模型加载为 Spark/Scala 管道吗?的主要内容,如果未能解决你的问题,请参考以下文章

最佳模型的 GridSearch:保存和加载参数

推荐收藏保存和加载机器学习模型的这两个方法不错

推荐收藏保存和加载机器学习模型的这两个方法不错

在哪里放置加载和保存功能

如何加载保存的 KMeans 模型(在 ML Pipeline 中)?

Tensorflow加载预训练模型和保存模型