使用
本文提供了一个示例,演示如何使用该 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.MaxAbsScaler和pyspark.ml.connect.feature.StandardScaler
- 计算器:pyspark.ml.connect.RegressionEvaluator、pyspark.ml.connect.BinaryClassificationEvaluator和MulticlassClassificationEvaluator
- 管道:pyspark.ml.connect.pipeline.Pipeline
- 模型优化:pyspark.ml.connect.tuning.CrossValidator
要求
在 Databricks Runtime 17.0 及更高版本上,默认情况下,Spark 上的 Spark ML 连接在具有 标准 访问模式的计算资源上启用,但存在一些限制。 有关 标准计算,请参阅 Databricks Runtime 17.0 的限制。 如果需要 Spark 级别的分布式计算,用于那些在单个节点内存中无法适应的数据,或者需要执行分布式超参数调优,请使用标准计算资源上的 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