导出 Apache Spark ML 模型和管道

本文讨论 Databricks ML 模型导出工作流的导出部分;有关工作流的导入和评分部分,请参阅将模型导入应用程序

使用 Databricks ML 模型导出可轻松导出训练后的 Apache Spark ML 模型和管道。

import com.databricks.ml.local.ModelExport
val lr = new LogisticRegression()
val model = lr.fit(trainingData)
// Export the model into provided directory
ModelExport.exportModel(lrModel, "<storage-location>")

有关详细的代码示例,请参阅示例笔记本

模型导出格式

MLlib 模型以 JSON 文件形式导出,且格式与 Spark ML 暂留格式匹配。 MLlib 格式的主要变化如下:

  • 使用 JSON 代替 Parquet
  • 添加其他元数据

模型导出格式具有多个优点:

JSON

简单易读的格式,可签入版本控制系统

匹配的 MLlib 格式

模型导出与 MLlib 标准和 API 同步

计分

Azure Databricks 中的其他元数据允许在 Spark 之外进行评分

例如,导出逻辑回归模型将生成包含以下 JSON 文件的目录:

  • metadata,其中包含模型的类型及其训练配置。 该文件与 MLlib 的 metadata 文件匹配。

    {
       "class":"org.apache.spark.ml.classification.LogisticRegressionModel",
       "paramMap":{
       "featuresCol":"features",
       "predictionCol":"prediction",
       "aggregationDepth":2,
       "elasticNetParam":0.0,
       "family":"auto",
       "fitIntercept":true,
       "maxIter":100,
       "regParam":0.0,
       "standardization":true,
       "threshold":0.5,
       "tol":1.0E-6
    },
    "sparkVersion":"2.1.0",
    "timestamp":1488858051051,
    "uid":"logreg_a99aee74cfef"}
    
  • data,其中包含训练后的模型参数。 该文件与 MLlib 的 data 文件匹配。 type 是 MLlib 向量格式:0 表示稀疏向量,1 表示密集向量。

    {
      "numClasses":2,
      "numFeatures":13,
      "interceptVector": {
        "type":1,
        "values":[ -8.44645260967139 ]
    },
    "coefficientMatrix":{
        "type":1,
        "numRows":1,
        "numCols":4,
        "values":[ -0.01747691176982096, 1.542111173068903, 0.700895509427004, 0.025215711086829903 ],
        "isTransposed":true
    },
    "isMultinomial":false}
    
  • dbmlMetadata,其中包含特定于 Databricks ML 模型导出的其他信息。

{
  "dbmlExportLibraryVersion":"0.1.1"
}

支持的模型

可以通过调用 ModelExport.supportedModels 以编程方式检索一系列支持的模型。 支持以下模型:

注意

概率分类器(决策树分类器、逻辑回归、随机林分类器等)可以输出包含类概率向量的附加 probability 字段。

从 Databricks 导出模型

以下笔记本演示如何从 Azure Databricks 导出 ML 模型。

模型导出 Scala 笔记本

获取笔记本

模型导出 Python 笔记本

获取笔记本