创建 Apache Spark 机器学习流水线

依托 Google Cloud 开箱即用的运行时创建 Spark ML 流水线,加速您的分布式机器学习之旅。

什么是分布式机器学习?

分布式机器学习让数据科学家与机器学习工程师能够突破单台机器的内存与算力限制,扩缩机器学习 (ML) 模型训练规模。通过在工作器节点集群中分发数据分区以及并行处理工作负载,您可以明显加快在海量数据集上训练复杂模型的速度。

为何使用 Apache Spark?

Apache Spark 是分布式数据处理的业界标准。其原生机器学习库 MLlib 提供了用于分类、回归、聚类和协同过滤的分布式算法,让您能够在单一统一的环境中完成从数据注入到模型部署的全流程。

什么是 Spark ML 流水线?

Spark ML 流水线是一种高级 API,旨在帮助您将多个机器学习工作流整合为一个紧密结合的流水线。它允许您在结构化的声明式工作流中,将各种数据转换(如特征提取和缩放)与机器学习算法(如模型训练)紧密串联起来。


借助流水线,您可以确保在模型训练与预测阶段一致地应用相同的数据预处理步骤,这对于防止数据泄露以及确保结果的可复现性至关重要。Spark ML 流水线的核心组件是 Transformer 与 Estimator。

为何选择 Google Cloud 来开启您的 Spark ML 之旅?

在扩缩机器学习工作负载以应用硬件加速时,通常会面临管理复杂 Spark GPU 依赖项的挑战。预配虚拟机实例,安装正确的 NVIDIA 驱动程序,并确保 CUDA 和 cuDNN 版本与您的 PyTorch 或 TensorFlow 库相匹配,这些工作可能会使开发人员的工作停滞数天。


Google Cloud 依托 Managed Service for Apache Spark 解决了这一问题,该服务提供预封装的机器学习运行时。这些运行时基于稳定的 Ubuntu 操作系统映像(2.3 及更高版本),预装并预配置了您的工作负载所需的对应 GPU 驱动程序(CUDA、cuDNN、NCCL)和行业标准机器学习框架(PyTorch、XGBoost、tokenizers 和 transformers)。这种开箱即用的环境让您的团队可以专注于编写代码,而不是配置基础设施。

常见问题解答

在 Spark MLlib 中,Transformer 是一种可将一个 DataFrame 转换为另一个 DataFrame 的算法(例如将文本转换为数值向量)。Estimator 是一种可在 DataFrame 上拟合训练以生成 Transformer 的算法(例如在训练数据上拟合逻辑回归算法以生成训练好的模型)。

依托 Spark ML 流水线,您可以确保数据准备逻辑与模型实现严格绑定。这可确保测试数据或推理数据的处理逻辑与训练数据完全保持一致。

借助 Managed Service for Apache Spark 上的 Google Cloud ML 运行时,依赖项管理负担得以减轻,无需您自行维护。Google 会持续更新这些基于 Ubuntu 的自定义映像,其中已预装原生兼容的适用版本 NVIDIA 驱动程序、CUDA 工具包和分布式机器学习框架。

Spark MLlib 组件与 Google Cloud 数据工具

了解 Spark MLlib 与 Google Cloud 数据工具的基础构成,对于大规模运行分布式机器学习至关重要。

组件

说明

主要用途


价格注意事项

Spark MLlib

Apache Spark 的可扩展机器学习库,包含通用学习算法、特征工程工具和流水线实用工具。

在分布式集群中执行大规模机器学习模型训练,而不依赖于单节点库。


运行 Apache Spark 所使用的底层 Google Cloud 服务会产生相应费用,主要来自 Managed Service for Apache Spark。具体价格取决于所预配的 Compute Engine 资源(vCPU、内存、GPU、磁盘)以及作业运行时长。


*请参阅 Managed Service for Apache Spark 价格。

VectorAssembler

Spark MLlib 中的核心特征 Transformer,可将多个特征列(连续数值、独热编码类别等)合并为单个向量列。

将原始表格数据处理转换成 Spark MLlib 机器学习算法所需的特定稠密或稀疏向量格式。

作为 Spark MLlib 内置的一个组件,其运行所产生的开销会计入在 Managed Service for Apache Spark 上运行 Spark 工作负载的总体计算成本中。

Spark ML 流水线

基于 DataFrame 构建的高级 API,可帮助用户将多个特征工程步骤和模型串联在一起。

将 Transformer 和 Estimator 整合到统一的流水线中,确保模型在训练与推理阶段执行完全一致的数据处理逻辑。

与其他 Spark MLlib 组件类似,相关费用均已包含在 Managed Service for Apache Spark 的执行费用中。

BigQuery ML


这项服务让您能够直接使用标准 SQL 查询在 BigQuery 中构建并运行机器学习模型。

在将高度复杂的迭代式分布式作业迁移到 Spark 之前,直接在数据驻留处训练模型。


BigQuery ML 拥有独立的价格模式。具体计费项包括:

  1. 模型训练(按 CREATE MODEL 查询期间所处理的数据量计费)
  2. 模型预测(按标准 BigQuery 查询定价计费)
  3. 模型存储(按标准 BigQuery 存储费率计费)。

运作方式

Google Cloud 的 Managed Service for Apache Spark 屏蔽了底层基础设施的复杂性,让您可以利用无服务器环境或可自定义的托管集群来运行 Spark 机器学习流水线,开展大规模模型训练。


为了消除复杂的 Spark GPU 依赖项问题,该服务采用预封装的机器学习运行时,其完整配备了原生兼容的 NVIDIA 驱动程序、CUDA 工具包和分布式框架,让您无需任何额外设置即可直接部署硬件加速工作负载。

详细了解如何使用 Spark 进行机器学习

常见使用场景

构建稳健的特征工程工作流

了解如何使用转换器提取和扩缩数据,以及如何使用估算器训练算法。

方法指南

  • 构建 Spark ML 流水线:如需了解在 Google Cloud 上使用 Spark 的一般指南,请参阅 Managed Service for Apache Spark 文档。
  • PySpark 中的流水线估算器:查看 Managed Service for Apache Spark 文档中提供的 Python API 示例。这些示例包括使用 Spark MLlib 组件的模式。您还可以找到在将 GPU 挂接到集群文档等指南中被引用的 Spark ML 示例。

其他资源

部署开箱即用的机器学习运行时

启动 GPU 加速的 Spark 集群,无需管理底层基础设施。Google Cloud 的机器学习运行时已预先配置,因此您可以绕过复杂的 Spark GPU 依赖项。

方法指南

  • Managed Service for Apache Spark ML 运行时概览:详细了解 Managed Service for Apache Spark 运行时映像版本,其中详细介绍了预安装的库,包括 TensorFlow、PyTorch 和 XGBoost,以及 GPU 专用库。


其他资源

  • Google Cloud 上的分布式深度学习:如需从更广泛的架构角度了解如何扩缩机器学习,请参阅实现机器学习的最佳实践文档。本文档针对开发自定义训练模型提供了一系列建议,涵盖了在 Google Cloud 上进行分布式训练和使用加速器等内容,并已与 Gemini 平台的 Model Registry 集成。

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。