Compartir a través de

使用 pyspark.ml.connect 在 Databricks Connect 上训练 Spark ML 模型

本文提供了一个示例,演示如何使用该 pyspark.ml.connect 模块执行分布式训练来训练 Spark ML 模型并运行模型推理。

pyspark.ml.connect 是什么?

Spark 3.5 引入了 pyspark.ml.connect,旨在支持 Spark 连接模式和 Databricks Connect。 详细了解 Databricks Connect

pyspark.ml.connect 模块包括常见的学习算法和实用工具,包括分类、功能转换器、ML 管道和交叉验证。 此模块提供与旧版 pyspark.ml 模块类似的接口,但 pyspark.ml.connect 模块目前仅包含 pyspark.ml 中的一部分算法。 下面列出了支持的算法:

  • 分类算法:pyspark.ml.connect.classification.LogisticRegression
  • 功能转换器:pyspark.ml.connect.feature.MaxAbsScalerpyspark.ml.connect.feature.StandardScaler
  • 评估者:pyspark.ml.connect.RegressionEvaluatorpyspark.ml.connect.BinaryClassificationEvaluatorMulticlassClassificationEvaluator
  • 管道:pyspark.ml.connect.pipeline.Pipeline
  • 模型优化:pyspark.ml.connect.tuning.CrossValidator

要求

在 Databricks Runtime 17.0 及更高版本上,默认情况下,Spark 上的 Spark ML 连接在具有 标准 访问模式的计算资源上启用,但存在一些限制。 有关 标准计算,请参阅 Databricks Runtime 17.0 的限制。 如果需要在标准计算环境上使用 Spark ML 来处理单个节点内存无法容纳的数据,或需要进行分布式超参数优化,请选用该配置。

对于 Databricks Runtime 14.0 ML 及更高版本(包括在独立访问模式下使用的计算资源环境的 Databricks Runtime 17.0),要使用 Spark ML,还有其他具体要求。

  • 在你的群集上设置 Databricks Connect。 请参阅 Databricks Connect 的计算配置
  • 已安装 Databricks Runtime 14.0 ML 或更高版本。
  • 具有 专用 访问模式的计算资源。

示例笔记本

以下笔记本演示如何在 Databricks Connect 上使用分布式 ML:

Databricks Connect 上的分布式 ML

获取笔记本

对于 pyspark.ml.connect 中 API 的相关参考信息,Databricks 建议使用 Apache Spark API 参考

Databricks Runtime 17.0 在标准计算上存在的限制条件

  • 仅 Python:标准计算上的 Spark ML 仅支持 Python。 不支持 R 和 Scala。
  • 库支持:仅支持pyspark.ml 包。 不支持包 pyspark.mllib
  • 模型大小约束:最大模型大小为 1 GB,因此训练非常大的模型可能不可行。 如果模型大小即将超过 1GB,则树模型训练将提前停止。
  • 内存约束:虽然数据可以分布在群集中,但训练的模型本身将缓存在驱动程序节点上,后者与其他用户共享。 每个会话的最大模型缓存大小为 10 GB,每个会话的最大内存中模型缓存大小为 25% Spark 驱动程序 JVM 内存。
  • 会话超时:标准计算上的缓存模型在处于非活动状态 15 分钟后自动超时。 若要防止丢失模型,请在训练完成后的 15 分钟内将其保存到磁盘,或使会话保持活动状态并频繁使用。
  • 资源争用:在标准计算环境中,资源在工作区中的用户和作业之间共享。 多个大型任务并发运行可能会导致性能下降或争夺执行者槽位。
  • 不支持 GPU:标准计算环境不支持 GPU 加速。 对于 GPU 加速的机器学习工作负载,建议使用专用 GPU 群集。
  • 有限的 SparkML 模型:不支持以下 SparkML 模型:
    • DistributedLDAModel
    • FPGrowthModel