GPU-enabled集群

请注意

一些支持gpu的实例类型已经存在β在创建集群时,当您选择驱动程序和工作类型时,会在下拉列表中这样标记。

概述

Databricks支持图形处理单元(gpu)加速的集群。本文描述了如何使用启用GPU的实例创建集群,并描述了安装在这些实例上的GPU驱动程序和库。

要了解BOB低频彩关于支持gpu的集群上的深度学习的更多信息,请参见深度学习

创建GPU集群

创建GPU集群类似于创建任何Spark集群(请参阅集群).你应该牢记以下几点:

  • Databricks运行时版本必须是gpu支持的版本,例如运行时9.1 LTS ML (GPU, Scala 2.12, Spark 3.1.2)

  • 工作类型而且驱动程序类型必须是GPU实例类型。

  • 对于不使用Spark的单机工作流,可以将worker数设置为0。

Databricks支持以下gpu加速实例类型:

  • P2实例类型系列: p2。Xlarge, p2.8xlarge和p2.16xlarge

  • P3实例类型系列: p3.2xlarge、p3.8xlarge、p3.16xlarge。

    • P3实例仅在部分AWS区域可用。有关信息,请参见亚马逊EC2定价.Databricks部署必须位于受支持的区域,才能启动启用gpu的集群。

  • P4d实例类型系列: p4d.24xlarge。

    • P4d实例需要Databricks Runtime 9.1 LTS ML或以上。

  • G4实例类型系列,这些优化用于在生产中部署机器学习模型。

  • G5实例类型系列,它可以用于广泛的图形密集型和机器学习用例。

    • G5实例需要Databricks Runtime 9.1 LTS ML或以上版本。

对于所有gpu加速的实例类型,请记住以下内容:

  • 由于亚马逊现货实例价格飙升,GPU现货实例很难保留。如果需要,按需使用。

  • 你可能需要申请增加限额来创建gpu集群。

看到支持的实例类型获取支持的GPU实例类型及其属性的列表。

GPU调度

Databricks运行时支持GPU-aware调度Apache Spark 3.0。Databricks在GPU集群上预配置它。

单机集群不开启GPU调度功能。

spark.task.resource.gpu.amount是唯一一个与gpu感知调度相关的Spark配置,您可能需要更改。默认配置为每个任务使用一个GPU,如果使用所有GPU节点,这对于分布式推理工作负载和分布式训练非常理想。为了在节点的子集上进行分布式训练,这有助于减少分布式训练期间的通信开销,Databricks建议设置spark.task.resource.gpu.amount到集群中每个工作节点的gpu数量火花配置

对于PySpark任务,Databricks自动将分配的GPU重新映射到索引0,1,....在每个任务使用一个GPU的默认配置下,您的代码可以简单地使用默认GPU,而不需要检查分配给任务的GPU。如果你为每个任务设置多个gpu,例如4,你的代码可以假设分配的gpu的索引总是0、1、2和3。如果您确实需要分配的gpu的物理索引,您可以从CUDA_VISIBLE_DEVICES环境变量。

如果你使用Scala,你可以得到分配给任务的gpu的索引TaskContext.resources () . get (gpu)

对于7.0以下的Databricks Runtime版本,为了避免多个Spark任务试图使用同一GPU之间的冲突,Databricks自动配置GPU集群,以便每个节点最多有一个正在运行的任务。这样,任务就可以使用节点上的所有gpu,而不会与其他任务发生冲突。

NVIDIA GPU驱动,CUDA和cuDNN

Databricks在Spark驱动程序和工作实例上安装使用gpu所需的NVIDIA驱动程序和库:

  • CUDA工具包,安装在/usr/local/cuda

  • cuDNN: NVIDIA CUDA深度神经网络库。

  • NCCL: NVIDIA集合通信库。

包含的NVIDIA驱动版本为470.57.02,支持CUDA 11.0。

有关包含的库的版本,请参见发布说明用于您正在使用的特定Databricks Runtime版本。

请注意

本软件包含NVIDIA公司提供的源代码。具体来说,为了支持gpu, Databricks包含了来自CUDA样品

NVIDIA最终用户许可协议(EULA)

当您在Databricks中选择启用gpu的“Databricks运行时版本”时,即表示您默认同意在英伟达EULA关于CUDA, cuDNN和Tesla库,以及NVIDIA最终用户许可协议(含NCCL补充)NCCL图书馆。

Databricks Container GPU集群的服务

预览

此功能已在公共预览

你可以使用Databricks容器服务在gpu集群上创建具有定制库的可移植深度学习环境。看到使用Databricks Container Services定制容器的指令。

要为GPU集群创建自定义映像,必须选择标准运行时版本,而不是为GPU选择Databricks runtime ML。当你选择使用您自己的Docker容器,您可以选择标准运行时版本的GPU集群。图形处理器集群的自定义映像基于官方CUDA容器,与GPU的Databricks Runtime ML不同。

当您为GPU集群创建自定义映像时,您不能更改NVIDIA驱动程序版本,因为它必须与主机上的驱动程序版本匹配。

databricksruntime码头工人中心包含具有GPU功能的示例基本图像。用于生成这些映像的Dockerfiles位于示例容器GitHub存储库,其中还详细介绍了示例图像提供的内容以及如何自定义它们。

错误消息

  • 以下错误表明AWS云提供程序没有足够的容量提供所请求的计算资源。错误:集群终止。原因:AWS不足实例能力失败

    为了解决这个问题,您可以尝试在不同的可用分区中创建集群。可用分区处于集群配置下,高级选项.你也可以复习一下AWS保留实例定价购买额外配额。

  • 如果您的集群使用P4d或G5实例类型和Databricks Runtime 7.3 LTS ML,则7.3中的CUDA包版本与较新的GPU实例不兼容。在这些情况下,像TensorFlow Keras和PyTorch这样的ML包会产生如下错误:

    • TensorFlow Keras:InternalError:CUDA运行时隐式的初始化GPU: x失败了。状态:设备内核图像无效的

    • PyTorch:UserWarning:英伟达A100-SXM4-40GBCUDA能力sm_80兼容的当前的PyTorch安装。

    您可以通过升级到Databricks Runtime 10.4 LTS ML或更高版本来解决这些错误。