了解基于 OCI 的按需 HPC 和 AI 平台

运行 AI、ML、科学计算、基因组学、工程模拟和分析工作负载的组织可以使用此参考架构为 Oracle Cloud Infrastructure (OCI) 上的研究、AI 和高性能计算 (HPC) 工作负载提供安全、基于浏览器的多租户 GPU 和 CPU 访问。

主要生产主题包括经过验证的浏览器接受度、GPU Lustre 定位、黄金映像标准化、共享交互式应用运行时以及项目治理自动化。

在此解决方案手册中,您将了解如何使用 Open OnDemand (OOD)、Slurm 工作负载管理、GPU 自动缩放和多层存储架构在 OCI 上部署按需 HPC 和 AI 平台。研究人员、数据科学家和工程师可以通过 Web 浏览器安全地访问交互式 AI 和 HPC 环境。该平台可根据负载需求动态扩展 GPU 和计算资源。

该体系结构组合了以下功能:

  • 使用 Open OnDemand 访问基于浏览器的 HPC 和 AI。
  • 使用 Microsoft Entra ID 和 OpenID Connect (OIDC) 实现安全的单点登录 (SSO) 集成。
  • 面向交互式和批处理作业的基于泥浆的工作量编排。
  • 自动缩放适用于 AI、ML、远程桌面和 HPC 负载的 CPU 和 GPU 分区。
  • 使用 OCI Object StorageOCI File Storage (FSS)、JuiceFS 和 File Storage with Lustre 的分层存储。
  • 使用 FreeIPA 进行集中式 Linux 身份管理。
  • 使用 Prometheus 和 Grafana 进行集成监视。
  • 多用户项目隔离和配额管理。

使用须知

在部署此架构之前,请先查看建议的知识区域,以降低实施风险并排除延迟问题。

交付团队应熟悉以下内容:

  • Slurm 工作负载管理器和分区设计。
  • Linux 高性能计算 (high-performance computing,HPC) 环境和共享文件系统。
  • OCI 网络、计算、图形处理单元 (GPU) 配置和存储服务。
  • 打开 OnDemand 和 Batch Connect 应用程序。
  • 基于 GPU 的 AI 和 ML 负载。
  • 监视堆栈,例如 Prometheus 和 Grafana。
  • 自动缩放节点的黄金映像生命周期管理。

体系结构

使用此架构可为多租户 HPC 和 AI 程序提供经过验证的浏览器访问、Slurm 管理的调度以及自动缩放的 CPU 和 GPU 容量。

以下架构将 OCI 基础设施服务与经过验证的开源 HPC 工具相结合,为批处理和交互式工作负载提供安全、可扩展的平台:



需求平台 -hpc-oci-arch-oracle.zip#GUID-6AF78407-525D-4CF8-A7FD-6AC4A30F0C12

在较高级别,用户通过 HTTPS 访问 OOD 并通过 Microsoft Entra ID 进行验证。OOD 提供对文件、shell 会话、作业编写器和交互式应用程序的浏览器访问权限。Slurm 调度跨永久和自动缩放 CPU 和 GPU 分区工作。OCI 自动化可按需预配计算容量,节点引导逻辑可在用户工作负载启动之前为身份、Slurm 运行时、GPU 设备、共享应用路径和存储装载做准备。

此架构在 OOD 4.2、Slurm 自动缩放 CPU 节点、远程桌面/noVNC、作业编写器分区选择、GPU 节点引导流、/odata 数据挂载、/lustre 访问模式和 OOD /rnode 路由中应用实际操作实施模式。

用户和访问层

  • OCI 负载平衡器提供对 OOD 端点的 HTTPS 访问。
  • 可选的 Web 应用防火墙 (web application firewall,WAF)、NSG 或允许列表强制实施边界控制。
  • Microsoft Entra ID 为浏览器用户提供 OIDC 验证。
  • 堡垒或受限 SSH 路径提供受控的管理员访问权限。

打开 OnDemand 服务器

  • OOD 仪表盘为 HPC 用户提供了浏览器条目。
  • 文件和 Shell 应用程序提供文件和 shell 操作。
  • Job Composer 提交 Slurm 作业。
  • Batch Connect 应用程序提供 Remote Desktop、VS Code、 JupyterLab 和 RStudio 会话。
  • /node/rnode 在计算节点上路由代理交互服务。

HPC 集群

Slurm 25.11.0 管理 HPC 环境,包括控制器节点、登录节点、永久计算分区、自动缩放 CPU 分区和自动缩放 GPU 分区。

  • Slurm controller(Slurm 控制器)托管 slurmctldslurmdbd、记帐数据和自动缩放集成脚本。
  • Login node 提供受控的命令行提交和故障排除访问。
  • Permanent compute partition 托管需要立即容量的工作负荷。
  • 自动缩放 CPU 分区可为批处理和交互式工作负载提供弹性 CPU 容量。
  • 自动缩放 GPU 分区按工作负载类型和映像通道提供弹性 GPU 容量。

多层存储架构

路径 后备层 主要用途
/home OCI 文件存储 用户主目录和 OOD 状态
/scratch OCI 文件存储或高性能共享存储 工作数据和临时工作输出
/apps OCI 文件存储 共享应用程序和模块树
/odata OCI Object Storage 支持的 JuiceFS 持久的共享数据集和项目数据
/lustre 带 Lustre 的文件存储 高吞吐量 AI 训练、检查点和 HPC 模拟 I/O

身份管理系统

FreeIPA 为 HPC 层提供集中式 Linux 身份和访问管理。项目组映射到 Slurm 账户,以强制实施多租户访问控制、配额以及拖欠款项或回退模型。

监视和自动化

Prometheus 和 Grafana 可跨 OOD、Slurm、计算节点、GPU 运行时和存储收集运行信号。后台自动化可确保节点引导、主机同步和清除工作流在集群容量扩展时保持一致。

推荐

应用这些建议来改善 OCI 上共享 GPU 和 CPU 研究环境的治理、安全性、成本控制和可靠性。

以下建议基于 OCI HPC 和 OOD 环境的实际实施模式。

使用专用区间

将基础设施资源隔离到 OCI 区间中,以进行网络、身份、存储、共享服务、GPU 计算和监视。

按工作负载类型部署 GPU 池

为交互式 AI 开发、生产培训、推断工作负载、批处理 HPC 作业和 Lustre 要求的 GPU 工作负载创建单独的 Slurm 分区。

积极使用自动缩放

  • 对昂贵的 GPU 节点使用短暂停隔。
  • 仅对延迟敏感的工作负载使用热池。
  • 按分区和 GPU 类型设置单独的扩展策略。
  • 使用运行状况检查验证 mungeslurmd、节点名称注册、通用资源 (GRES)、挂载和交互式运行时就绪情况。

隔离存储工作负载

  • 将 FSS 用于起始目录、OD 状态和交互式开发。
  • 将对象存储与 JuiceFS 结合使用以获得持久的共享数据集。
  • 使用 Lustre 进行高吞吐量训练、检查点和模拟输出。

安全交互式访问

  • 将基于 OIDC 的 SSO 集成与 OOD 的 Microsoft Entra ID 一起使用。
  • 使用仅 HTTPS 访问和受限 SSH 管理。
  • 对计算节点使用专用子网。
  • 在可能的情况下,优先使用 NSG,而不是广泛的安全列表。
  • 使用最少权限的 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 策略。
  • 使用基于项目的 FreeIPA 组和 Slurm 帐户。
  • 强制实施 OOD Shell 允许列表和 /rnode 主机正则表达式控制。

实施用户工作流的可观测性

  • 跟踪 Slurm 节点状态和失败的作业原因。
  • 跟踪自动缩放简历和修复日志。
  • 跟踪 GPU 运行状况和 nvidia-smi 输出。
  • 跟踪 mungeslurmd 服务状态。
  • 跟踪 FSS、JuiceFS 和 Lustre 挂载运行状况。
  • 跟踪 OOD Apache、Passenger 和每个用户的 PUN 错误。
  • 跟踪 FreeIPA、DNS、LDAP 和 Kerberos 服务运行状况。

在升级期间保留 OOD 自定义

将 OOD 升级视为应用程序发行版,并在每次升级后验证或重新应用定制小部件、作业编写器分区处理、批处理连接应用程序、外壳程序和文件允许列表以及代理主机控制。

注意事项

在 OCI 上平衡多租户 HPC 和 AI 工作负载的性能、安全性、可用性、成本和运营。

部署此参考体系结构时,请考虑以下几点。

性能

GPU 密集型 AI 工作负载可以产生大量的网络和存储流量。

  • 尽可能将 GPU 节点、Lustre 和存储路径放置在同一区域和可用性域中。
  • 为 GPU 和存储繁重的工作负载使用高带宽网络。
  • 尽可能减少跨区域数据移动。
  • 针对 GPU 局部性和特定于分区的行为优化 Slurm 调度策略。
  • 预制具有稳定运行时依赖性的 GPU 映像,以减少冷启动时间。

安全

通过为计算节点使用专用子网、限制 SSH 访问、实施最低权限的 OCI IAM 策略、加密存储层、集成集中式身份管理以及启用审计日志记录和监视来保护敏感 AI 和研究工作负载。

可用性

考虑 Slurm 控制器、OOD Web 后端、FreeIPA 服务、共享存储系统和监视基础设施的高可用性。

通过部署冗余控制器、备份 Slurm 会计数据库、验证 FreeIPA 服务自动启动以及在升级之前保留 OOD 回退备份来提高弹性。

成本

GPU 基础设施可以代表最大的运营费用。

  • 使用自动缩放 GPU 分区。
  • 自动暂停空闲 GPU 节点。
  • 分别进行开发、交互和生产培训分区。
  • 对于非活动数据集,首选使用持久的 OCI 对象存储
  • 使用金色图像缩短开始时间并缩短失败的冷启动周期。

操作

最重要的操作经验是,就绪情况必须从用户工作流中衡量,而不仅仅是云控制台。

对于交互式作业,验证 Slurm 作业状态、节点服务状态、存储挂载、交互式应用程序监听程序、OD /node/rnode 路由以及在验证后浏览器启动行为。

生产就绪核对清单

  • 跨冗余 Web 后端进行 OOD 部署。
  • Microsoft Entra ID OIDC 路由和注销行为。
  • 在所有公开的 Slurm 分区中选择作业编辑器分区。
  • 远程桌面启动、noVNC 连接和 /rnode 代理路由。
  • 自动缩放 CPU 节点引导和交互式工作量接受。
  • GPU 节点引导、 NVIDIA 运行时检查、GRES 注册和 Slurm 运行状况。
  • Code Server 和 JupyterLab 的共享交互式应用程序运行时位于 /apps 下。
  • 版本升级后的 OOD 自定义助手兼容性。

关于必需的服务和角色

此解决方案需要以下服务和角色。
  • OCI 身份和访问管理 / 身份域
  • OCI 网络
  • OCI DNS
  • OCI 负载均衡器
  • OCI 堡垒
  • OCI Compute
  • OCI 块存储卷
  • OCI 文件存储
  • 带 Lustre 的文件存储
  • OCI 对象存储
  • OCI 注册表
  • OCI Vault
  • OCI MonitoringOCI LoggingOCI NotificationsOCI Audit
  • 可选的 OCI Web Application FirewallOracle Cloud Guard
  • 平台服务:Open OnDemand、Slurm、FreeIPA、Linux/POSIX 身份和共享运行时工具

这些是每项服务所需的角色。

服务名称:角色 必需 ...
OCI IAM/身份域:manage groupsmanage dynamic-groupsmanage policies 创建和维护 UAT 管理员组、动态组和最低权限 IAM 策略。将此角色限制为租户或身份管理员。
OCI 网络manage virtual-network-family 创建和维护 VCN、公共/专用子网、路由表、互联网网关、NAT 网关、服务网关、NSG 和安全列表。
OCI DNS:manage dns 管理 OOD 端点和相关入站名称的公共或委派 DNS 记录。
OCI 负载平衡器manage load-balancers 为 OOD 创建和运行公共 HTTPS 入站层,并将流量路由到专用 OOD 后端。
OCI Web Application Firewall (可选):manage waf-family 为 UAT 启用 WAF 时,通过 WAF 策略、访问规则和 Web 入站控制来保护公共应用端点。
OCI 堡垒manage bastion-family 创建审计的、有时限的管理 SSH 会话,以连接到专用登录、控制器或管理主机。
OCI Computemanage instance-familymanage compute-management-family 预配和运行 OOD 主机、登录节点、Slurm 控制器、FreeIPA、CPU/GPU 工作进程、自动缩放池和映像管道实例。
OCI Block Volumes :manage volume-family 管理平台、控制器、登录和计算节点的引导卷和连接的块存储卷。
OCI 文件存储manage file-family 管理共享 POSIX 文件系统、挂载目标、导出集以及 /home/scratch/apps 的导出。
带 Lustre 的文件存储manage lustre-file-family 启用高吞吐量 /lustre 文件系统后,为活动 HPC/AI 工作负载 I/O 运行。
OCI 对象存储manage object-family 或作用域为 manage bucketsmanage objects 存储 JuiceFS 支持数据、持久的项目数据、备份、生命周期数据和可选的 Lustre 导入/导出内容。
OCI 注册表manage repos 或作用域 read repos 推送或拉取黄金映像管道和共享平台运行时使用的运行时和应用程序映像。
OCI Vault/Keys/Secrets:manage vaultsmanage keysmanage secret-family;运行时节点应仅在需要时使用 read secret-family 可存储凭证、密钥、令牌和集成密钥,且无需在实例或脚本中硬编码。
OCI 监视read metricsmanage alarms 查看 UAT 容量/性能度量并配置操作预警。
OCI 日志记录manage log-groupsread log-contentuse unified-configuration 管理日志组、搜索日志以及配置日志代理或统一代理设置。
OCI 通知manage ons-family 为操作通知创建预警主题和订阅。
OCI 审计read audit-events 查看 OCI API 活动以进行监管、故障排除和活动审查。
Cloud Guard (可选):read cloud-guard-familymanage cloud-guard-family 仅经过监管审批 检查安全状况和调查结果。仅在明确批准时启用响应器管理。
计算/OOD/Slurm 实例的动态组:read buckets、范围为 manage objectsread reposuse metricsuse log-content、可选 read secret-family 允许平台实例访问批准的 OCI 对象存储存储桶、提取映像、发射遥测并使用实例主体检索批准的密钥。
映像管道的动态组:manage instance-familymanage volume-familyread object-family、范围为 manage repos、可选 read secret-family 无需使用持久的用户 API 密钥,即可构建、验证、提升和发布黄金映像或运行时工件。
File Storage with Lustre sync(如果使用)的动态组:read buckets,作用域为 manage objects 允许 File Storage with Lustre 导入/导出或与批准的 OCI Object Storage 存储桶同步。
OOD 应用程序角色:OOD user / OOD admin 允许用户访问 Files、Shell、Desktop、Code Server、 JupyterLab 和作业;允许平台管理员管理 OOD 配置和应用程序。
Slurm 角色:user, account/partition admin, or scheduler admin 提交作业、管理帐户/分区/QOS 以及运行 CPU/GPU 调度策略。
Linux/POSIX 角色:POSIX 用户/组和控制 sudo 控制平台节点上的 shell 登录、文件权限、项目组访问和紧急管理。
FreeIPA / 身份服务角色:identity administrator 管理 POSIX 身份、组、适用的 HBAC/DNS 以及 UAT 的主机/用户注册。

观看 Oracle 产品、解决方案和服务,了解您的需求。