第 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。
流程
在 JupyterLab 界面中,点 File > New > Notebook。指定您首选的 Python 版本,然后点 Select。
在
.ipynb
文件中创建一个新的笔记本。在新笔记本的单元格中添加以下代码:
下载演示笔记本的代码
from codeflare_sdk import copy_demo_nbs copy_demo_nbs()
from codeflare_sdk import copy_demo_nbs copy_demo_nbs()
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 选择单元,然后点 Run > Run selected cell。
几秒钟后,
copy_demo_nbs ()
函数复制与 CodeFlare SDK 当前安装版本的演示笔记本,并将其克隆到demo-notebooks
文件夹中。- 在左侧导航窗格中,右键单击新笔记本,再单击删除。
- 单击 Delete 确认。
验证
在 JupyterLab 接口中找到下载的演示笔记本,如下所示:
- 在左侧导航窗格中,双击 demo-notebooks。
- 双击 additional-demos,并验证 文件夹是否包含几个演示笔记本。
- 单击 demo-notebooks。
- 双击 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 下载演示笔记本 中所述。
流程
检查您的集群管理员是否为 Ray 集群定义了 默认 本地队列。
您可以使用
codeflare_sdk.list_local_queues ()
函数查看当前命名空间中的所有本地队列,以及与每个本地队列关联的资源类型。或者,您可以使用 OpenShift Web 控制台,如下所示:
- 在 OpenShift Web 控制台中,从 Project 列表中选择您的项目。
单击 Search,然后从 Resources 列表中选择 LocalQueue 以显示项目的本地队列列表。
如果没有列出本地队列,请联络您的集群管理员。
查看每个本地队列的详情:
- 单击本地队列名称。
点 YAML 选项卡,并查看
metadata.annotations
部分。如果
kueue.x-k8s.io/default-queue
注解被设置为'true'
,则队列将配置为默认的本地队列。注意如果集群管理员没有定义默认的本地队列,则必须在每个笔记本中指定本地队列。
- 在 JupyterLab 界面中,打开 demo-notebooks > guided-demos 文件夹。
通过双击每个笔记本文件来打开所有笔记本。
笔记本文件具有
.ipynb
文件名扩展名。在每个笔记本中,确保
导入
部分从 CodeFlare SDK 中导入所需的组件,如下所示:import 部分示例
from codeflare_sdk import Cluster, ClusterConfiguration, TokenAuthentication
from codeflare_sdk import Cluster, ClusterConfiguration, TokenAuthentication
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在每个笔记本中,更新
TokenAuthentication
部分,以提供令牌和
服务器
详情,以使用 CodeFlare SDK 向 OpenShift 集群进行身份验证。您可以找到您的令牌和服务器详情,如下所示:
-
在 OpenShift AI 顶部导航栏中,点应用程序启动程序图标(
),然后点 OpenShift Console 打开 OpenShift Web 控制台。
- 在 OpenShift Web 控制台右上角,单击您的用户名,然后选择 Copy login command。
- 登录后,单击 Display Token。
在 Log in with this token 部分,找到所需的值,如下所示:
-
令牌
值是 the-token=
前缀后的文本。 -
server
值是位于 the-server=
前缀后的文本。
-
注意令牌和
服务器
值是安全凭证,请谨慎处理它们。- 不要在笔记本中保存令牌和服务器详情。
- 不要在 Git 中存储令牌和服务器详细信息。
令牌会在 24 小时后过期。
-
在 OpenShift AI 顶部导航栏中,点应用程序启动程序图标(
可选:如果要使用自定义证书,请更新
TokenAuthentication
部分,以添加ca_cert_path
参数以指定自定义证书的位置,如下例所示:身份验证部分示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以设置
CF_SDK_CA_CERT_PATH
环境变量来指定自定义证书的位置。在每个笔记本中,按如下所示更新集群配置部分:
如果指定了
namespace
值,将 example 值替换为项目的名称。如果省略这一行,则会在当前项目中创建 Ray 集群。
如果指定了
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: 支持的配置。
-
Python 3.9:
如果集群管理员没有配置默认本地队列,请为 Ray 集群指定本地队列,如下例所示:
本地队列分配示例
local_queue="your_local_queue_name"
local_queue="your_local_queue_name"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:
将标签
参数的字典分配给 Ray 集群以进行识别和管理目的,如下例所示:标签分配示例
labels = {"exampleLabel1": "exampleLabel1Value", "exampleLabel2": "exampleLabel2Value"}
labels = {"exampleLabel1": "exampleLabel1Value", "exampleLabel2": "exampleLabel2Value"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在
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)
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 Copied! Toggle word wrap Toggle overflow 注意在 OpenShift AI 的 CodeFlare 组件中默认启用 mutual Transport Layer Security (mTLS)。您必须包含 Ray 集群身份验证代码,以启用在笔记本中运行的 Ray 客户端,以连接到启用了 mTLS 的安全 Ray 集群。
按照文件名前缀(
0_
,1_
等)运行笔记本。- 在每个笔记本中,依次运行每个单元,并查看单元输出。
- 如果显示错误,请查看输出以查找有关问题的信息和所需的纠正操作。例如,按照指示替换任何已弃用的参数。另请参阅 用户对分布式工作负载的常见问题进行故障排除。
- 有关在 Jupyter 笔记本中工作时,您可以使用交互式浏览器控制简化 Ray 集群任务的更多信息,请参阅 在 Jupyter 笔记本中 管理 Ray 集群。
验证
- 笔记本运行以在没有错误的情况下完成。
-
在笔记本中,
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 下载演示笔记本 中所述。
流程
-
按照从 CodeFlare SDK 中运行演示笔记本所述的顺序运行所有演示笔记本 (
0_
、1_
等)。 在每个演示笔记本中,当运行集群配置步骤时,笔记本中会自动显示以下互动控制:
-
Cluster Up: 您可以点此按钮启动 Ray 集群。此按钮等同于
cluster.up ()
命令。当您点此按钮时,信息会显示集群是否已成功创建。 -
Cluster Down :您可以点此按钮删除 Ray 集群。此按钮等同于
cluster.down ()
命令。集群将立即删除,系统不会提示您确认删除。当您点此按钮时,信息会显示集群是否已成功删除。 -
等待 Cluster: 您可以选择这个选项来指定笔记本应该等待 Ray 集群仪表板就绪,然后继续下一步。这个选项等同于
cluster.wait_ready ()
命令。
-
Cluster Up: 您可以点此按钮启动 Ray 集群。此按钮等同于
在 JupyterLab 界面中,创建一个新的笔记本来管理 Ray 集群,如下所示:
点 File > New > Notebook。指定您首选的 Python 版本,然后点 Select。
在
.ipynb
文件中创建一个新的笔记本。在新笔记本的单元格中添加以下代码:
导入所需软件包的代码
from codeflare_sdk import TokenAuthentication, view_clusters
from codeflare_sdk import TokenAuthentication, view_clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow view_clusters
软件包提供了用于列出集群的交互式浏览器控制,显示集群详情、打开 Ray 仪表板并刷新集群数据。在笔记本中添加新单元,并在新单元中添加以下代码:
要进行身份验证的代码
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关如何查找令牌和服务器值的详情,请参考从 CodeFlare SDK 中运行演示笔记本。
在笔记本中添加新单元,并在新单元中添加以下代码:
查看当前项目中的集群的代码
view_clusters()
view_clusters()
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当您运行没有指定参数的
view_clusters ()
命令时,您可以生成 当前 项目中的所有 Ray 集群的列表,并显示与cluster.details ()
函数类似的信息。如果可以访问另一个项目,您可以通过指定项目名称来列出该项目中的 Ray 集群,如下例所示:
查看另一个项目中的集群的代码
view_clusters("my_second_project")
view_clusters("my_second_project")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
点 File > Save Notebook As,输入
demo-notebooks/guided-demos/manage_ray_clusters.ipynb
,然后点击 Save。
-
在
demo-notebooks/guided-demos/manage_ray_clusters.ipynb
笔记本中,选择每个单元格,然后点击 Run > Run selected cell。 当您使用
view_clusters ()
函数运行单元时,输出取决于是否存在 Ray 集群。如果没有 Ray 集群,则会显示以下文本,其中
_[project-name]_
是目标项目的名称:No clusters found in the [project-name] namespace.
No clusters found in the [project-name] namespace.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 否则,笔记本显示有关现有 Ray 集群的以下信息:
选择现有集群
在此标题下,每个现有集群会显示一个切换按钮。点集群名称来选择集群。集群详情部分已更新,显示有关所选集群的详情,如集群名称、OpenShift AI 项目名称、集群资源信息和集群状态。
删除集群
点击此按钮删除所选集群。这个按钮等同于 Cluster Down 按钮。集群将立即删除,系统不会提示您确认删除。消息显示集群是否已成功删除,对应的按钮将不再显示在 Select an existing cluster 标题下。
查看作业
点击此按钮,打开所选集群的 Ray 仪表板中的 Jobs 选项卡,并查看提交的作业详情。对应的 URL 显示在笔记本中。
打开 Ray Dashboard
点击此按钮打开所选集群的 Ray 仪表板中的 Overview 选项卡。对应的 URL 显示在笔记本中。
刷新数据
点这个按钮刷新 Ray 集群列表以及所选集群的集群详情。当您选择集群以及删除所选集群时,集群详情会自动刷新。
验证
- 演示笔记本运行完成且无错误。
-
在
manage_ray_clusters.ipynb
笔记本中,view_clusters ()
函数的输出是正确的。