您可以使用动态工作负载调度器 (DWS) 灵活启动模式,提高 Managed Service for Apache Spark 批处理工作负载获取稀缺 GPU 资源的几率。
概览
动态工作负载调度器是一种可感知容量的调度器,可在全球范围内管理稀缺的计算资源。在灵活启动模式下,如果由于区域缺货而无法立即使用 GPU,Managed Service for Apache Spark 可以将您的请求排队等待一段时间(可配置)。
对于提交到 Managed Service for Apache Spark Spark 运行时版本 3.0+ 的所有启用 GPU 的工作负载,灵活启动是默认行为。当资源不可用时,系统会将请求排队,而不是因资源不足而失败。获得容量后,DWS 会在执行开始之前“一次性”预配整个集群。如需了解详情,请参阅动态工作负载调度程序简介。
优势
- 提高了可用性:大幅减少了因 GPU 容量暂时不足而导致的作业失败。
- 原子级配置:将集群工作器作为单个单元进行配置,确保集群完整性,并防止仅创建部分工作器的情形。
- 默认可靠性:无需手动配置参数即可改进资源获取。
配额要求
如需使用 DWS 灵活启动,您的项目必须具有足够的配额:
- 抢占式 GPU 配额:DWS Flex Start 会使用 GPU 配额池的抢占式版本,而不是标准版本(例如
PREEMPTIBLE_NVIDIA_L4_GPUS)。如需了解详情,请参阅 Managed Service for Apache Spark 资源配额。 - 本地 SSD 配额:将
performance存储类别与 GPU 加速机器搭配使用时,Managed Service for Apache Spark 会预配本地 SSD,以实现高速 shuffle 和临时存储。您的项目必须在目标区域中具有足够的本地 SSD 配额。
配置
对于运行时版本为 3.0 及更高版本的 GPU 工作负载,DWS 灵活启动功能默认处于启用状态。您可以使用以下 Spark 属性自定义超时时间或停用该功能:
| 属性 | 说明 | 值 | 默认 |
|---|---|---|---|
spark.dataproc.[driver|executor].provisioning.mode |
指定配置模型。使用 queue 表示 DWS 灵活启动(GPU 的默认设置),或使用 default 停用 DWS 并使用按需预配。 |
queue,default |
queue(适用于 3.0 及更高版本上的 GPU) |
spark.dataproc.[driver|executor].provisioning.allocationTimeout |
节点池在队列中等待容量的最长时长。默认值为 1 小时 (3600s),最大值为 2 小时 (7200s)。注意:值必须以“s”后缀结尾。 |
时长(以秒为单位,例如 1800s) |
3600s |
示例:使用 DWS 灵活启动的 GPU 批量工作负载
以下示例展示了如何使用 NVIDIA L4 GPU 提交 PySpark 批量作业。由于 DWS Flex Start 默认处于有效状态,因此该命令会为驱动程序和执行器设置 30 分钟 (1800s) 的排队超时时间:
gcloud dataproc batches submit pyspark \
gs://my-bucket/path/to/your-script.py \
--project="PROJECT_ID" \
--region="REGION" \
--version="3.0" \
--properties="spark.dataproc.driver.resource.accelerator.type=l4,\
spark.dataproc.driver.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.resource.accelerator.type=l4,\
spark.dataproc.executor.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.compute.tier=premium,\
spark.dataproc.executor.disk.tier=premium"