GKE 上的 Slurm 简介

本文档可帮助您了解在 Google Kubernetes Engine (GKE) 上部署和管理 Slurm 集群的优势以及责任共担模式。Slurm 是一款高度可伸缩的开源工作负载管理器和作业调度程序,专注于高性能计算 (HPC) 工作负载。

本文档重点介绍 GKE 的 Slurm Operator 插件,该插件将 Slurm 批量作业接口与 GKE 的可伸缩性和高效的资源管理功能集成在一起。

本文档适用于希望通过 Slurm Operator 插件为 GKE 启用和配置 Slurm 的数据管理员、运维人员和开发者。

为何在 GKE 上使用 Slurm

在 GKE 上运行 Slurm 可让您设置环境,使 Slurm 训练作业能够与 Ray 作业或服务推理等其他 Kubernetes 工作负载在同一共享计算池中并行运行。

Google Cloud 提供以下在 GKE 上运行 Slurm 的方式:

  • Cluster Director:一种托管解决方案,可提供主观的预配置体验。如果您希望获得最少配置的托管体验,并由 Google 管理 Slurm 控制平面、软件版本和配置,我们建议您使用 Cluster Director。如需了解详情,请参阅 Cluster Director

  • 适用于 GKE 的 Slurm Operator 插件:作为开源 Slinky 项目的一部分而开发的开源技术,可提供 Slurm Operator 的托管式安装。此受管理的安装遵循 Google 最佳实践。 GKE 的 Slurm Operator 插件可帮助希望构建自定义平台的平台工程师在经过加速器优化的机器上运行人工智能 (AI)、机器学习 (ML) 和 HPC 工作负载。如果您需要完全控制 Slurm 配置、想要集成自定义容器,或者需要在同一集群上运行 Slurm 和其他工作负载(例如 Ray 或推理),我们建议您使用适用于 GKE 的 Slurm Operator 插件。适用于 GKE 的 Slurm Operator 插件具有以下优势:

    • 统一的基础设施:您可以管理单个 GKE 集群,以同时运行 HPC 批处理作业和微服务。这有助于减少运营孤岛。
    • 高效伸缩:GKE 的 Slurm Operator 插件使用 GKE 的快速节点预配和高效装箱功能来优化资源使用。
    • 高性能硬件:您可以使用 Slurm 命令访问 Google Cloud的最新加速器,例如 TPUGPU

本文档的以下部分重点介绍 Slurm Operator 插件。

了解基础设施层

通常,Slurm 直接部署在裸机服务器或虚拟机上。在这些设置中,Slurm 假设有一组相对静态的节点,并在其生命周期内对其进行管理。

另一方面,GKE 是一项代管式服务,它通过将底层虚拟机呈现为动态池中的节点来抽象化这些虚拟机。GKE 会自动处理这些节点的调度和伸缩。

借助适用于 GKE 的 Slurm Operator 插件,Slurm 可作为工作负载在 GKE 上运行。在此模型中,GKE 和 Slurm 提供以下功能:

  • 将 GKE 用作基础架构管理器:GKE 提供并管理底层节点、网络和安全性。
  • 将 Slurm 用作工作负载管理器:Slurm 为用户提供用于提交和管理批量作业的界面。

这种融合创建了一个异构堆栈,其中 Slurm 作业可以与 Kubernetes 应用(例如 Ray 或推理服务)共享相同的底层硬件(例如 GPU 和 TPU)。

Slurm Operator 插件的工作原理

在 GKE 集群中为 GKE 启用 Slurm Operator 插件后,GKE 会执行以下步骤:

  1. GKE 会安装并托管 Slurm Operator。此运算符在 GKE 控制平面中运行,并管理部署在集群中的 Slurm 组件的生命周期。此运算符会自动处理证书生成和自定义资源管理等前提条件。
  2. 在运算符运行后,您可以使用 Kubernetes 自定义资源定义 Slurm 集群拓扑。
  3. 该操作员会部署必要的 Pod(例如控制器、登录和工作器),以匹配工作负载的规范。

自定义资源

适用于 GKE 的 Slurm Operator 插件利用以下自定义资源来管理 Slurm 集群:

  • NodeSet:定义一组同类工作器节点。您可以将 Slurm worker 映射到特定的 GKE 节点池或硬件类型。例如,您可以为 H100 GPU 创建一个 NodeSet,再为 TPU 创建另一个 NodeSet。
  • 控制器:定义 Slurm 集群的核心组件,即控制器。此资源会在 Pod 和所有其他组件(例如 NodeSet 或 LoginSet)中创建 slurmctld 组件。
  • LoginSet:定义用户登录以提交作业的登录节点。
  • Restapi:定义 Slurm 集群的 REST API 组件。
  • 结算:配置后,部署 slurmdbd 组件以处理作业结算和使用情况跟踪,通常连接到 Cloud SQL 数据库。

Slurm Operator 插件的共担责任

如果您选择使用 GKE 的 Slurm Operator 插件在 GKE 上运行 Slurm,则Google Cloud 与您将共同承担责任。通过此集成,您可以灵活地自定义环境,同时让 Google 管理编排层。

Google 责任

  • Operator 生命周期:安装 Slurm Operator。
  • GKE 控制平面:管理 GKE 控制平面的可靠性和正常运行时间。
  • Kubernetes CustomResourceDefinition:管理 Slurm 所需的自定义资源。
  • 基础映像:为 Slurm 组件提供优化的 Google 自有容器映像。您可以选择是否使用这些映像;在配置 Slurm 集群时,您可以使用 Google 提供的这些映像,也可以使用自己的映像。

客户责任

  • Slurm 配置:使用 YAML 文件定义 Slurm 集群拓扑、分区、限制和插件。
  • 作业提交:管理用户访问权限和作业提交工作流。
  • 自定义映像:如果默认的 Google 映像无法满足特定要求,请维护用于登录或工作器节点的自定义容器映像。
  • 外部依赖项:管理外部资源,例如用于会计的 Cloud SQL 或用于共享存储的 Filestore。

如需了解详情,请参阅 GKE 责任共担

后续步骤

如需开始使用适用于 GKE 的 Slurm Operator 加载项,请执行以下操作: