mlflow.mleap

mlflow.mleap 模块提供了一个API,用于使用 MLeap 持久化机制保存 Spark MLLib 模型。

exception mlflow.mleap.MLeapSerializationException(message, error_code=1, **kwargs)[源代码]

基类:MlflowException

当模型或 DataFrame 无法以 MLeap 格式序列化时抛出的异常。

mlflow.mleap.add_to_model(mlflow_model, path, spark_model, sample_input)[源代码]

警告

mlflow.mleap.add_to_model 自 2.6.0 版本起已弃用。此方法将在未来的版本中移除。请改用 mlflow.onnx

备注

此方法要求所有参数都通过关键字指定。

将 MLeap 风格添加到现有的 MLflow 模型中。

参数:
  • mlflow_modelmlflow.models.Model 这是要添加此风格的模型。

  • path – 要添加此风格的模型路径。

  • spark_model – 要保存的 Spark PipelineModel。此模型必须是 MLeap 兼容的,并且不能包含任何自定义转换器。

  • sample_input – 模型可以评估的 PySpark DataFrame 输入示例。这是 MLeap 进行数据模式推断所必需的。

mlflow.mleap.log_model(spark_model, sample_input, artifact_path, registered_model_name=None, signature: ModelSignature = None, input_example: DataFrame | ndarray | dict | list | csr_matrix | csc_matrix | str | bytes | tuple = None, metadata=None)[源代码]

警告

mlflow.mleap.log_model 自 2.6.0 版本起已弃用。此方法将在未来的版本中移除。请改用 mlflow.onnx

备注

此方法要求所有参数都通过关键字指定。

将 Spark MLLib 模型以 MLeap 格式记录为当前运行的 MLflow 工件。记录的模型将具有 MLeap 风格。

备注

你不能在 Python 中加载 MLeap 模型风格;你必须使用 Java API 方法 downloadArtifacts(String runId) 下载它,并使用方法 MLeapLoader.loadPipeline(String modelRootPath) 加载模型。

参数:
  • spark_model – 要保存的 Spark PipelineModel。此模型必须是 MLeap 兼容的,并且不能包含任何自定义转换器。

  • sample_input – 模型可以评估的 PySpark DataFrame 输入示例。这是 MLeap 进行数据模式推断所必需的。

  • artifact_path – 运行相对的工件路径。

  • registered_model_name – 如果指定,在 registered_model_name 下创建一个模型版本,如果给定名称的注册模型不存在,则同时创建一个注册模型。

  • signatureModelSignature 描述了模型的输入和输出 Schema。模型签名可以从具有有效模型输入(例如,省略目标列的训练数据集)和有效模型输出(例如,在训练数据集上生成的模型预测)的数据集中 推断,例如: .. code-block:: python

  • input_example – {{ 输入示例 }}

  • metadata – {{ 元数据 }}

返回:

一个包含记录模型元数据的 ModelInfo 实例。

示例
import mlflow
import mlflow.mleap
import pyspark
from pyspark.ml import Pipeline
from pyspark.ml.classification import LogisticRegression
from pyspark.ml.feature import HashingTF, Tokenizer

# training DataFrame
training = spark.createDataFrame(
    [
        (0, "a b c d e spark", 1.0),
        (1, "b d", 0.0),
        (2, "spark f g h", 1.0),
        (3, "hadoop mapreduce", 0.0),
    ],
    ["id", "text", "label"],
)
# testing DataFrame
test_df = spark.createDataFrame(
    [(4, "spark i j k"), (5, "l m n"), (6, "spark hadoop spark"), (7, "apache hadoop")],
    ["id", "text"],
)
# Create an MLlib pipeline
tokenizer = Tokenizer(inputCol="text", outputCol="words")
hashingTF = HashingTF(inputCol=tokenizer.getOutputCol(), outputCol="features")
lr = LogisticRegression(maxIter=10, regParam=0.001)
pipeline = Pipeline(stages=[tokenizer, hashingTF, lr])
model = pipeline.fit(training)
# log parameters
mlflow.log_param("max_iter", 10)
mlflow.log_param("reg_param", 0.001)
# log the Spark MLlib model in MLeap format
mlflow.mleap.log_model(
    spark_model=model, sample_input=test_df, artifact_path="mleap-model"
)
mlflow.mleap.save_model(spark_model, sample_input, path, mlflow_model=None, signature: ModelSignature = None, input_example: DataFrame | ndarray | dict | list | csr_matrix | csc_matrix | str | bytes | tuple = None, metadata=None)[源代码]

警告

mlflow.mleap.save_model 自 2.6.0 版本起已被弃用。此方法将在未来的版本中移除。请改用 mlflow.onnx

备注

此方法要求所有参数都通过关键字指定。

将 Spark MLlib PipelineModel 以 MLeap 格式保存到本地路径。保存的模型将具有 MLeap 风格。

备注

你不能在 Python 中加载 MLeap 模型风格;你必须使用 Java API 方法 downloadArtifacts(String runId) 下载它,并使用方法 MLeapLoader.loadPipeline(String modelRootPath) 加载模型。

参数:
  • spark_model – 要保存的 Spark PipelineModel。此模型必须是 MLeap 兼容的,并且不能包含任何自定义转换器。

  • sample_input – 模型可以评估的 PySpark DataFrame 输入示例。这是 MLeap 进行数据模式推断所必需的。

  • path – 模型保存的本地路径。

  • mlflow_modelmlflow.models.Model 这是要添加此风格的模型。

  • signatureModelSignature 描述了模型的输入和输出 Schema。模型签名可以从具有有效模型输入(例如,省略目标列的训练数据集)和有效模型输出(例如,在训练数据集上生成的模型预测)的数据集中 推断,例如: .. code-block:: python

  • input_example – {{ 输入示例 }}

  • metadata – {{ 元数据 }}