第 3 章 运行分布式工作负载


在 OpenShift AI 中,您可以从笔记本或管道运行分布式工作负载。

如果可以从该环境中访问所有需要的软件,则可以在断开连接的环境中运行分布式工作负载。例如,您必须从断开连接的环境中访问 Ray 集群镜像,以及工作负载使用的数据集和 Python 依赖项。

3.1. 从笔记本运行分布式数据科学工作负载

要从笔记本运行分布式工作负载,您必须配置 Ray 集群。您还必须提供环境特定信息,如集群身份验证详情。

本节中的示例请参阅 JupyterLab 集成开发环境(IDE)。

3.1.1. 从 CodeFlare SDK 下载演示笔记本

CodeFlare SDK 中的演示笔记本提供了如何在您自己的笔记本中使用 CodeFlare 堆栈的指南。下载演示笔记本,以便您了解如何在本地运行笔记本。

先决条件

  • 您可以访问配置为运行分布式工作负载的数据科学项目,如 管理分布式工作负载 中所述。
  • 您可以访问包含工作台的数据科学项目,工作台正在运行包含 CodeFlare SDK 的默认笔记本镜像,如 Standard Data Science 笔记本。有关项目和工作台 的详情,请参考使用数据科学项目
  • 您有数据科学项目的 Admin 访问权限。

    • 如果创建项目,则自动具有 Admin 访问权限。
    • 如果没有创建项目,您的集群管理员必须授予 Admin 访问权限。
  • 您已登陆到 Red Hat OpenShift AI,启动工作台,并登录到 JupyterLab。

流程

  1. 在 JupyterLab 界面中,点 File > New > Notebook。指定您首选的 Python 版本,然后点 Select

    .ipynb 文件中创建一个新的笔记本。

  2. 在新笔记本的单元格中添加以下代码:

    下载演示笔记本的代码

    from codeflare_sdk import copy_demo_nbs
    copy_demo_nbs()
    Copy to Clipboard Toggle word wrap

  3. 选择单元,然后点 Run > Run selected cell

    几秒钟后,copy_demo_nbs () 函数复制与 CodeFlare SDK 当前安装版本的演示笔记本,并将其克隆到 demo-notebooks 文件夹中。

  4. 在左侧导航窗格中,右键单击新笔记本,再单击删除
  5. 单击 Delete 确认。

验证

在 JupyterLab 接口中找到下载的演示笔记本,如下所示:

  1. 在左侧导航窗格中,双击 demo-notebooks
  2. 双击 additional-demos,并验证 文件夹是否包含几个演示笔记本。
  3. 单击 demo-notebooks
  4. 双击 guided-demos,并验证 文件夹是否包含几个演示笔记本。

您可以运行这些演示笔记本,如从 CodeFlare SDK 中运行演示笔记本 中所述。

3.1.2. 从 CodeFlare SDK 中运行演示笔记本

要从 CodeFlare SDK 中运行演示笔记本,您必须提供环境特定信息。

在此流程中的示例中,您可以编辑 JupyterLab 中的演示笔记本来提供所需信息,然后运行笔记本。

先决条件

  • 您可以访问配置为运行分布式工作负载的数据科学项目,如 管理分布式工作负载 中所述。
  • 您可以从数据科学集群访问以下软件:

    • 与硬件架构兼容的 Ray 集群镜像
    • 工作负载使用的数据集和模型
    • 工作负载的 Python 依赖项,可以在 Ray 镜像或您自己的 Python Package Index (PyPI)服务器中
  • 您可以访问包含工作台的数据科学项目,工作台正在运行包含 CodeFlare SDK 的默认笔记本镜像,如 Standard Data Science 笔记本。有关项目和工作台 的详情,请参考使用数据科学项目
  • 您有数据科学项目的 Admin 访问权限。

    • 如果创建项目,则自动具有 Admin 访问权限。
    • 如果没有创建项目,您的集群管理员必须授予 Admin 访问权限。
  • 您已登陆到 Red Hat OpenShift AI,启动工作台,并登录到 JupyterLab。
  • 您已下载了 CodeFlare SDK 提供的演示笔记本,如从 CodeFlare SDK 下载演示笔记本 中所述。

流程

  1. 检查您的集群管理员是否为 Ray 集群定义了 默认 本地队列。

    您可以使用 codeflare_sdk.list_local_queues () 函数查看当前命名空间中的所有本地队列,以及与每个本地队列关联的资源类型。

    或者,您可以使用 OpenShift Web 控制台,如下所示:

    1. 在 OpenShift Web 控制台中,从 Project 列表中选择您的项目。
    2. 单击 Search,然后从 Resources 列表中选择 LocalQueue 以显示项目的本地队列列表。

      如果没有列出本地队列,请联络您的集群管理员。

    3. 查看每个本地队列的详情:

      1. 单击本地队列名称。
      2. YAML 选项卡,并查看 metadata.annotations 部分。

        如果 kueue.x-k8s.io/default-queue 注解被设置为 'true',则队列将配置为默认的本地队列。

        注意

        如果集群管理员没有定义默认的本地队列,则必须在每个笔记本中指定本地队列。

  2. 在 JupyterLab 界面中,打开 demo-notebooks > guided-demos 文件夹。
  3. 通过双击每个笔记本文件来打开所有笔记本。

    笔记本文件具有 .ipynb 文件名扩展名。

  4. 在每个笔记本中,确保 导入 部分从 CodeFlare SDK 中导入所需的组件,如下所示:

    import 部分示例

    from codeflare_sdk import Cluster, ClusterConfiguration, TokenAuthentication
    Copy to Clipboard Toggle word wrap

  5. 在每个笔记本中,更新 TokenAuthentication 部分,以提供 令牌和 服务器 详情,以使用 CodeFlare SDK 向 OpenShift 集群进行身份验证。

    您可以找到您的令牌和服务器详情,如下所示:

    1. 在 OpenShift AI 顶部导航栏中,点应用程序启动程序图标( The application launcher ),然后点 OpenShift Console 打开 OpenShift Web 控制台。
    2. 在 OpenShift Web 控制台右上角,单击您的用户名,然后选择 Copy login command
    3. 登录后,单击 Display Token
    4. Log in with this token 部分,找到所需的值,如下所示:

      • 令牌 值是 the- token= 前缀后的文本。
      • server 值是位于 the- server= 前缀后的文本。
    注意

    令牌和 服务器 值是安全凭证,请谨慎处理它们。

    • 不要在笔记本中保存令牌和服务器详情。
    • 不要在 Git 中存储令牌和服务器详细信息。

    令牌会在 24 小时后过期。

  6. 可选:如果要使用自定义证书,请更新 TokenAuthentication 部分,以添加 ca_cert_path 参数以指定自定义证书的位置,如下例所示:

    身份验证部分示例

    auth = TokenAuthentication(
        token = "XXXXX",
        server = "XXXXX",
        skip_tls=False,
        ca_cert_path="/path/to/cert"
    )
    auth.login()
    Copy to Clipboard Toggle word wrap

    或者,您可以设置 CF_SDK_CA_CERT_PATH 环境变量来指定自定义证书的位置。

  7. 在每个笔记本中,按如下所示更新集群配置部分:

    1. 如果指定了 namespace 值,将 example 值替换为项目的名称。

      如果省略这一行,则会在当前项目中创建 Ray 集群。

    2. 如果指定了 image 值,将 example 值替换为到合适的 Ray 集群镜像的链接。Ray 集群镜像中的 Python 版本必须与工作台中的 Python 版本相同。

      如果省略这一行,则默认使用以下 Ray 集群镜像之一,具体取决于工作台中检测到的 Python 版本:

      • Python 3.9: quay.io/modh/ray:2.35.0-py39-cu121
      • Python 3.11: quay.io/modh/ray:2.35.0-py311-cu121

      默认 Ray 镜像与 CUDA 12.1 支持的 NVIDIA GPU 兼容。默认镜像是 AMD64 镜像,可能不适用于其他架构。

      额外的兼容 ROCm 的集群镜像与 ROCm 6.1 支持的 AMD 加速器兼容。这些镜像是 AMD64 镜像,可能不适用于其他架构。

      有关最新可用培训镜像及其预安装的软件包的详情,请参考 Red Hat OpenShift AI: 支持的配置

    3. 如果集群管理员没有配置默认本地队列,请为 Ray 集群指定本地队列,如下例所示:

      本地队列分配示例

      local_queue="your_local_queue_name"
      Copy to Clipboard Toggle word wrap

    4. 可选: 将标签 参数的字典分配给 Ray 集群以进行识别和管理目的,如下例所示:

      标签分配示例

      labels = {"exampleLabel1": "exampleLabel1Value", "exampleLabel2": "exampleLabel2Value"}
      Copy to Clipboard Toggle word wrap

  8. 2_basic_interactive.ipynb 笔记本中,确保 Ray 集群创建部分中包含以下 Ray 集群身份验证代码:

    Ray 集群身份验证代码

    from codeflare_sdk import generate_cert
    generate_cert.generate_tls_cert(cluster.config.name, cluster.config.namespace)
    generate_cert.export_env(cluster.config.name, cluster.config.namespace)
    Copy to Clipboard Toggle word wrap

    注意

    在 OpenShift AI 的 CodeFlare 组件中默认启用 mutual Transport Layer Security (mTLS)。您必须包含 Ray 集群身份验证代码,以启用在笔记本中运行的 Ray 客户端,以连接到启用了 mTLS 的安全 Ray 集群。

  9. 按照文件名前缀(0_,1_ 等)运行笔记本。

    1. 在每个笔记本中,依次运行每个单元,并查看单元输出。
    2. 如果显示错误,请查看输出以查找有关问题的信息和所需的纠正操作。例如,按照指示替换任何已弃用的参数。另请参阅 用户对分布式工作负载的常见问题进行故障排除
    3. 有关在 Jupyter 笔记本中工作时,您可以使用交互式浏览器控制简化 Ray 集群任务的更多信息,请参阅 在 Jupyter 笔记本中 管理 Ray 集群

验证

  1. 笔记本运行以在没有错误的情况下完成。
  2. 在笔记本中,cluster.status () 函数或 cluster.details () 函数的输出表示 Ray 集群是 Active

3.1.3. 从 Jupyter 笔记本中管理 Ray 集群

在 Jupyter 笔记本中操作时,您可以使用交互式浏览器控制来简化 Ray 集群任务。

交互式浏览器控制提供了对等命令的替代选择,但不替换它们。您可以通过在笔记本中运行命令来继续管理 Ray 集群,以便在脚本和管道中轻松使用。

有几个不同的交互式浏览器控制可用:

  • 当您运行提供集群配置的单元时,笔记本会自动显示启动或删除集群的控制。
  • 您可以运行 view_clusters () 命令来添加提供以下功能的控制:

    • 查看您可以访问的 Ray 集群列表。
    • 查看所选 Ray 集群的集群状态和分配资源等集群信息。您可以在笔记本中查看此信息,而无需切换到 OpenShift 控制台或 Ray 仪表板。
    • 直接从笔记本打开 Ray 仪表板,以查看提交的作业。
    • 刷新所选集群的 Ray 集群列表和集群信息。

    您可以将这些控件添加到现有笔记本中,或者从单独的笔记本管理 Ray 集群。

3_widget_example.ipynb 演示笔记本显示所有可用的互动浏览器控制。在此流程示例中,您可以创建一个新的笔记本来管理 Ray 集群,类似于 3_widget_example.ipynb 演示笔记本中提供的示例。

先决条件

  • 您可以访问配置为运行分布式工作负载的数据科学项目,如 管理分布式工作负载 中所述。
  • 您可以从数据科学集群访问以下软件:

    • 与硬件架构兼容的 Ray 集群镜像
    • 工作负载使用的数据集和模型
    • 工作负载的 Python 依赖项,可以在 Ray 镜像或您自己的 Python Package Index (PyPI)服务器中
  • 您可以访问包含工作台的数据科学项目,工作台正在运行包含 CodeFlare SDK 的默认笔记本镜像,如 Standard Data Science 笔记本。有关项目和工作台 的详情,请参考使用数据科学项目
  • 您有数据科学项目的 Admin 访问权限。

    • 如果创建项目,则自动具有 Admin 访问权限。
    • 如果没有创建项目,您的集群管理员必须授予 Admin 访问权限。
  • 您已登陆到 Red Hat OpenShift AI,启动工作台,并登录到 JupyterLab。
  • 您已下载了 CodeFlare SDK 提供的演示笔记本,如从 CodeFlare SDK 下载演示笔记本 中所述。

流程

  1. 按照从 CodeFlare SDK 中运行演示笔记本所述的顺序运行所有演示笔记本 (0_1_ 等)。
  2. 在每个演示笔记本中,当运行集群配置步骤时,笔记本中会自动显示以下互动控制:

    • Cluster Up: 您可以点此按钮启动 Ray 集群。此按钮等同于 cluster.up () 命令。当您点此按钮时,信息会显示集群是否已成功创建。
    • Cluster Down :您可以点此按钮删除 Ray 集群。此按钮等同于 cluster.down () 命令。集群将立即删除,系统不会提示您确认删除。当您点此按钮时,信息会显示集群是否已成功删除。
    • 等待 Cluster: 您可以选择这个选项来指定笔记本应该等待 Ray 集群仪表板就绪,然后继续下一步。这个选项等同于 cluster.wait_ready () 命令。
  3. 在 JupyterLab 界面中,创建一个新的笔记本来管理 Ray 集群,如下所示:

    1. File > New > Notebook。指定您首选的 Python 版本,然后点 Select

      .ipynb 文件中创建一个新的笔记本。

    2. 在新笔记本的单元格中添加以下代码:

      导入所需软件包的代码

      from codeflare_sdk import TokenAuthentication, view_clusters
      Copy to Clipboard Toggle word wrap

      view_clusters 软件包提供了用于列出集群的交互式浏览器控制,显示集群详情、打开 Ray 仪表板并刷新集群数据。

    3. 在笔记本中添加新单元,并在新单元中添加以下代码:

      要进行身份验证的代码

      auth = TokenAuthentication(
          token = "XXXXX",
          server = "XXXXX",
          skip_tls=False
      )
      auth.login()
      Copy to Clipboard Toggle word wrap

      有关如何查找令牌和服务器值的详情,请参考从 CodeFlare SDK 中运行演示笔记本

    4. 在笔记本中添加新单元,并在新单元中添加以下代码:

      查看当前项目中的集群的代码

      view_clusters()
      Copy to Clipboard Toggle word wrap

      当您运行没有指定参数的 view_clusters () 命令时,您可以生成 当前 项目中的所有 Ray 集群的列表,并显示与 cluster.details () 函数类似的信息。

      如果可以访问另一个项目,您可以通过指定项目名称来列出该项目中的 Ray 集群,如下例所示:

      查看另一个项目中的集群的代码

      view_clusters("my_second_project")
      Copy to Clipboard Toggle word wrap

    5. File > Save Notebook As,输入 demo-notebooks/guided-demos/manage_ray_clusters.ipynb,然后点击 Save
  4. demo-notebooks/guided-demos/manage_ray_clusters.ipynb 笔记本中,选择每个单元格,然后点击 Run > Run selected cell
  5. 当您使用 view_clusters () 函数运行单元时,输出取决于是否存在 Ray 集群。

    如果没有 Ray 集群,则会显示以下文本,其中 _[project-name]_ 是目标项目的名称:

    No clusters found in the [project-name] namespace.
    Copy to Clipboard Toggle word wrap

    否则,笔记本显示有关现有 Ray 集群的以下信息:

    • 选择现有集群

      在此标题下,每个现有集群会显示一个切换按钮。点集群名称来选择集群。集群详情部分已更新,显示有关所选集群的详情,如集群名称、OpenShift AI 项目名称、集群资源信息和集群状态。

    • 删除集群

      点击此按钮删除所选集群。这个按钮等同于 Cluster Down 按钮。集群将立即删除,系统不会提示您确认删除。消息显示集群是否已成功删除,对应的按钮将不再显示在 Select an existing cluster 标题下。

    • 查看作业

      点击此按钮,打开所选集群的 Ray 仪表板中的 Jobs 选项卡,并查看提交的作业详情。对应的 URL 显示在笔记本中。

    • 打开 Ray Dashboard

      点击此按钮打开所选集群的 Ray 仪表板中的 Overview 选项卡。对应的 URL 显示在笔记本中。

    • 刷新数据

      点这个按钮刷新 Ray 集群列表以及所选集群的集群详情。当您选择集群以及删除所选集群时,集群详情会自动刷新。

验证

  1. 演示笔记本运行完成且无错误。
  2. manage_ray_clusters.ipynb 笔记本中,view_clusters () 函数的输出是正确的。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat