无服务器 GPU 计算

重要

此功能在 Beta 版中。

本文介绍 Databricks 上的无服务器 GPU 计算,并提供建议的用例、有关如何设置 GPU 计算资源和功能限制的指导。

什么是无服务器 GPU 计算?

无服务器 GPU 计算是 无服务器计算产品的一部分。 无服务器 GPU 计算专用于自定义单节点和多节点 深度学习 工作负载。 可以使用无服务器 GPU 计算来使用偏好的框架训练和微调自定义模型,并获取最先进的效率、性能和质量。

无服务器 GPU 计算包括:

  • 跨笔记本、Unity 目录和 MLflow 的集成体验: 可以使用 Notebook 以交互方式开发代码。
  • A10 GPU 加速器:A10 GPU 旨在加速中小型机器学习和深度学习工作负载,包括经典 ML 模型和微调较小的语言模型。 A10 非常适合满足中等计算要求的任务。
  • 多 GPU 和多节点支持: 可以使用无服务器 GPU Python API 运行分布式训练工作负载多个 GPU 和多个节点。 请参阅 分布式训练

在无服务器 GPU 计算中预安装的包不是 Databricks Runtime ML 的替代项。 虽然存在常见包,但并非所有 Databricks Runtime ML 依赖项和库都反映在无服务器 GPU 计算环境中。

无服务器 GPU 计算上的 Python 环境

Databricks 提供了两个托管环境来提供不同的用例。

注释

在无服务器 GPU 计算中,不支持自定义基础环境。 请改用默认环境或 AI 环境,并在环境侧面板中pip install直接指定其他依赖项。

默认基础环境

这提供了具有稳定客户端 API 的最小环境,以确保应用程序兼容性。 仅安装必需的 Python 包。 这样,Databricks 就可以独立升级服务器,从而提供性能改进、安全增强和 bug 修复,而无需对工作负载进行任何代码更改。 如果要完全自定义训练的环境,请选择此环境。

有关更多详细信息,请参阅发行说明:

AI 环境

Databricks AI 环境在无服务器 GPU 环境 4 中可用。 AI 环境基于默认环境构建,其中包含特定于 GPU 上的机器学习的常见运行时包和包。 它包含常用的机器学习库,包括 PyTorch、langchain、transformers、ray 和 XGBoost,用于模型训练和推理。 选择此环境以运行训练任务。

有关更多详细信息,请参阅发行说明:

Databricks 建议对任何需要自定义训练和 GPU 的模型训练用例使用无服务器 GPU 计算。

例如:

  • LLM 微调
  • 计算机视觉
  • 推荐系统
  • 强化学习
  • 基于深度学习的时序预测

要求

  • 以下 Azure 支持的区域之一中的工作区:
    • eastus
    • eastus2
    • centralus
    • northcentralus
    • westcentralus
    • westus

配置无服务器 GPU 计算

将笔记本连接到无服务器 GPU 计算并配置环境:

  1. 在笔记本中,单击顶部的 “连接 ”下拉菜单,然后选择 “无服务器 GPU”。
  2. 单击 “环境”图标。 打开 “环境 ”侧面板。
  3. “加速器”字段中选择 A10
  4. 默认环境选择“无”,或者从“基础环境”字段中为 AI 环境选择“AIv4”。
  5. 如果选择“基本环境”字段中的“无”,请选择“环境”版本
  6. 单击 “应用 ”,然后 确认 要将无服务器 GPU 计算应用到笔记本环境。

注释

计算连接将在非活动状态持续60分钟后自动终止。

将库添加到环境

可以将其他库安装到无服务器 GPU 计算环境。 请参阅 向笔记本添加依赖项

注释

无服务器 GPU 计算的定时作业不支持使用“环境”面板来添加依赖项,就如在笔记本中添加依赖项

创建和计划作业

以下步骤演示如何为无服务器 GPU 计算工作负荷创建和计划作业。 有关更多详细信息,请参阅 “创建和管理计划笔记本作业 ”。

打开要使用的笔记本后:

  1. 选择右上角的 “计划 ”按钮。
  2. 选择 “添加计划”。
  3. 使用作业名称计划和计算填充“新建计划”窗体。
  4. 选择 创建

还可以从 作业和管道 UI 创建和计划作业。 有关分步指南,请参阅 “创建新作业 ”。

分布式训练

可以使用 无服务器 GPU Python API 在单个节点内或跨多个节点启动跨多个 GPU 的分布式训练。 API 提供了一个简单的统一接口,用于抽象化 GPU 预配、环境设置和工作负载分发的详细信息。 通过最少的代码更改,你可以从单 GPU 训练无缝移动到同一笔记本中远程 GPU 之间的分布式执行。

@distributed修饰器的工作方式和使用torchrun启动多节点训练非常相似,不过这是在纯 Python 环境下进行的。 例如,下面的代码片段将 hello_world 函数分布到 8 个远程 A10 GPU:

# Import the distributed decorator
from serverless_gpu import distributed

# Decorate the function with @distributed and specify the number of GPUs, the GPU type, and whether
# or not the GPUs are remote
@distributed(gpus=8, gpu_type='A10', remote=True)
def hello_world(name: str) -> None:
  print('hello', name)

# Trigger the distributed execution of the hello_world function
hello_world.distributed('world')

执行后,将收集所有工作人员的日志和输出,并显示在工作区的“试验”部分中。

该 API 支持常用的并行训练库,例如 分布式数据并行 (DDP)、 完全分片数据并行 (FSDP)、 DeepSpeedRay

首先,导入 初学者笔记本 以开始使用 API,然后浏览 笔记本示例 ,了解如何使用各种库在实际分布式训练方案中使用它。

有关完整详细信息,请参阅 无服务器 GPU Python API 文档。

局限性

  • 无服务器 GPU 计算仅支持 A10 加速器。
  • 不支持专用链接。 不支持专用链接后面的存储或 pip 存储库。
  • 合规性安全配置文件工作区(如 HIPAA 或 PCI)不支持无服务器 GPU 计算。 目前不支持处理受管制的数据。
  • 对于无服务器 GPU 计算上的定时任务,不支持针对与笔记本环境关联的不兼容包版本的自动恢复功能。
  • 工作负荷的最大运行时为 7 天。 对于超出此限制的模型训练作业,请在达到最大运行时后实现检查点并重启作业。

排查无服务器 GPU 计算服务中的问题

如果在无服务器 GPU 计算上运行工作负载时遇到问题,请参阅 故障排除指南 ,了解常见问题、解决方法和支持资源。

最佳做法清单

在使用无服务器 GPU 计算运行笔记本之前,请检查以下内容:

  • [ ] 环境: 确保库和包与所选无服务器环境版本兼容。

  • [ ] 检查点存储: 检查是否正在将检查点保存到 DBFS,或者将其保留为未指定,以便 MLflow 默认为 DBFS。

    • [ ] 避免使用 /Workspace,每个文件大小限制 为 500 MB
    • [ ] 更快地验证检查点。 例如,在 50 个步骤之后,而不是 1 个纪元。
  • [ ] MLFlow 日志记录: 将记录器步骤参数设置为足够大的批次数,以避免记录每个批次(默认值)并超出 1M 的度量步骤限制

  • [ ] 多节点启动: 添加重试或延长 超时时间 ,以避免出现屏障超时问题。

以下代码演示如何实现这些最佳做法:

# Settings for a quick run to verify logging and checkpointing

# If using transformers
from transformers import TrainingArguments

training_args = TrainingArguments(
    # checkpoint to /Vol if no symlinks created
    output_dir = "/Volumes/your_catalog/your_schema/your_vol/your_model",
    logging_strategy = "steps",
    logging_steps = 10, # avoid exceeding mlflow 1M metric step limit
    # save checkpoints earlier after 100 steps to verify checkpointing
    save_strategy = "steps",
    save_steps = 100,
    # terminate job earlier after 200 steps as a trial run to verify logging and checkpointing
    max_steps = 200,
    ...
)

笔记本示例

下面是演示如何对不同任务使用无服务器 GPU 计算的各种笔记本示例。

任务 Description
大型语言模型(LLM) 微调大型语言模型的示例,包括 Low-Rank 适应(LoRA)和监督式微调方法等参数高效方法。
计算机视觉 计算机视觉任务的示例,包括对象检测和图像分类。
基于深度学习的推荐器系统 使用现代深度学习方法(如双塔模型)构建建议系统的示例。
经典 ML 传统机器学习任务的示例,包括 XGBoost 模型训练和时序预测。
多 GPU 和多节点分布式训练 使用无服务器 GPU API 跨多个 GPU 和节点缩放训练的示例,包括分布式微调。

下面是演示了如何在无服务器 GPU 计算上使用各种分布式训练库进行多 GPU 训练的笔记本示例。

图书馆 Description
分布式数据并行 (DDP) 使用分布式数据并行度训练模型的示例。
完全分片数据并行 (FSDP) 使用完全分片数据并行度训练模型的示例。
DeepSpeed 使用 DeepSpeed 库中的优化训练模型的示例。
射线 使用 Ray 库训练模型的示例。