2.3. 管理自定义培训镜像
要运行分布式培训工作,您可以使用 OpenShift AI 提供的一个基本培训镜像,也可以创建自己的自定义培训镜像。您可以选择将自定义培训镜像推送到集成的 OpenShift 镜像 registry 中,以使您的镜像可供其他用户使用。
2.3.1. 关于基本培训镜像 复制链接链接已复制到粘贴板!
用于分布式工作负载的基本培训镜像通过运行分布式培训工作所需的工具和库优化。您可以使用提供的基础镜像,也可以创建特定于您的需要的自定义镜像。
有关红帽支持培训镜像和软件包的详情,请参考 Red Hat OpenShift AI: 支持的配置。
下表列出了默认情况下随 Red Hat OpenShift AI 安装的培训镜像。这些镜像是 AMD64 镜像,可能不适用于其他架构。
| 镜像类型 | 描述 |
|---|---|
| Ray CUDA | 如果您使用计算密集型模型,而您想要使用 NVIDIA GPU 支持加速培训作业,您可以使用 Ray Compute Unified Device Architecture (CUDA)基础镜像来获得对 NVIDIA CUDA 工具包的访问。使用这个工具包,您可以使用为 NVIDIA GPU 优化的库和工具来加快您的工作。 |
| Ray ROCm | 如果您使用计算密集型模型,而您想要使用 AMD GPU 支持加速培训作业,您可以使用 Ray ROCm 基础镜像来获得对 AMD ROCm 软件堆栈的访问。使用这个软件堆栈,您可以使用为 AMD GPU 优化的库和工具来加快您的工作。 |
| KFTO CUDA | 如果您使用计算密集型模型,而您想要使用 NVIDIA GPU 支持加快培训作业,您可以使用 Kubeflow training Operator CUDA 基础镜像来访问 NVIDIA CUDA 工具包。使用这个工具包,您可以使用为 NVIDIA GPU 优化的库和工具来加快您的工作。 |
| KFTO ROCm | 如果您使用计算密集型模型,而您想要使用 AMD GPU 支持加快培训作业,您可以使用 Kubeflow training Operator ROCm 基础镜像来获得对 AMD ROCm 软件堆栈的访问。使用这个软件堆栈,您可以使用为 AMD GPU 优化的库和工具来加快您的工作。 |
如果这些镜像中提供的预安装软件包不足以满足您的用例,则您可以选择:
- 在启动默认镜像后安装其他库。如果您要在运行培训工作时在临时命令中添加库,则此选项很好。但是,管理已安装库的依赖项可能具有挑战性。
- 创建包含额外库或软件包的自定义镜像。如需更多信息,请参阅 创建自定义培训镜像。
2.3.2. 创建自定义培训镜像 复制链接链接已复制到粘贴板!
您可以通过向基础培训镜像添加软件包来创建自定义培训镜像。
先决条件
您可以访问已选择用作自定义镜像基础的培训镜像。
根据 镜像类型(如 Ray 或 Kubeflow training Operator)、加速器框架 (如用于 NVIDIA GPU 的 CUDA)或 AMD GPU 的 ROCm 选择镜像,以及 Python 版本 (如 3.9 或 3.11)。
下表显示了一些基本培训镜像示例:
Expand 表 2.2. 基本培训镜像示例 镜像类型 加速器框架 Python 版本 基本培训镜像示例 预安装的软件包 ray
CUDA
3.9
ray:2.35.0-py39-cu121Ray 2.35.0, Python 3.9, CUDA 12.1
ray
CUDA
3.11
ray:2.47.1-py311-cu121Ray 2.47.1, Python 3.11, CUDA 12.1
ray
ROCm
3.9
ray:2.35.0-py39-rocm62Ray 2.35.0, Python 3.9, ROCm 6.2
ray
ROCm
3.11
ray:2.47.1-py311-rocm62Ray 2.47.1, Python 3.11, ROCm 6.2
KFTO
CUDA
3.11
training:py311-cuda124-torch251Python 3.11, CUDA 12.4, PyTorch 2.5.1
KFTO
ROCm
3.11
training:py311-rocm62-torch251Python 3.11, ROCm 6.2, PyTorch 2.5.1
如需 OpenShift AI 基础镜像及其预安装软件包的完整列表,请参阅 支持的配置。
您已在本地环境中安装了 Podman,您可以访问容器 registry。
有关 Podman 和容器注册表的更多信息,请参阅 构建、运行和管理容器。
流程
- 在终端窗口中,为您的工作创建一个目录,并更改到该目录。
将
IMG环境变量设置为自定义镜像的名称。在本节中的示例命令中,my_training_image是自定义镜像的名称。export IMG=my_training_image
export IMG=my_training_imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建名为
Dockerfile的文件:使用
FROM指令指定合适的基本培训镜像的位置。在以下命令中,将
_<base- training-image>_替换为您选择的基本培训镜像的名称:FROM quay.io/modh/<base-training-image>
FROM quay.io/modh/<base-training-image>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例:
FROM quay.io/modh/ray:2.47.1-py311-cu121
FROM quay.io/modh/ray:2.47.1-py311-cu121Copy to Clipboard Copied! Toggle word wrap Toggle overflow FROM quay.io/modh/training:py311-rocm62-torch251
FROM quay.io/modh/training:py311-rocm62-torch251Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
RUN指令安装其他软件包。您还可以通过使用数字符号(#)为每个注释行添加注释到 Dockerfile。以下示例演示了如何安装 Python PyTorch 软件包的特定版本:
# Install PyTorch RUN python3 -m pip install torch==2.5.1
# Install PyTorch RUN python3 -m pip install torch==2.5.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
构建 镜像文件。将
-t选项与podman build命令一起使用,以创建指定自定义镜像名称和版本的镜像标签,以便更轻松地引用和管理镜像:podman build -t <custom-image-name>:_<version>_ -f Dockerfile
podman build -t <custom-image-name>:_<version>_ -f DockerfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example:
podman build -t ${IMG}:0.0.1 -f Dockerfilepodman build -t ${IMG}:0.0.1 -f DockerfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 构建输出表示构建过程完成。
显示镜像列表:
podman images
podman imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果成功创建了新镜像,则会将其包含在镜像列表中。
将镜像推送到容器 registry 中:
podman push ${IMG}:0.0.1podman push ${IMG}:0.0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 可选:使新镜像可供其他用户使用,如 将镜像推送到集成的 OpenShift 镜像 registry 中所述。
2.3.3. 将镜像推送到集成的 OpenShift 镜像 registry 复制链接链接已复制到粘贴板!
要使镜像可供 OpenShift 集群中的其他用户使用,您可以将镜像推送到 集成的 OpenShift 镜像 registry 中,即内置的容器镜像 registry。
如需有关集成的 OpenShift 镜像 registry 的更多信息,请参阅 集成 OpenShift 镜像 registry。
先决条件
- 集群管理员已公开集成镜像 registry,如 公开 registry 中所述。
您已在本地环境中安装了 Podman。
有关 Podman 和容器注册表的更多信息,请参阅 构建、运行和管理容器。
流程
在一个终端窗口中,登录到 OpenShift CLI,如下例所示:
oc login <openshift_cluster_url> -u <admin_username> -p <password>
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
IMG环境变量设置为镜像的名称。在本节中的示例命令中,my_training_image是镜像的名称。export IMG=my_training_image
export IMG=my_training_imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到集成的镜像 registry:
podman login -u $(oc whoami) -p $(oc whoami -t) $(oc registry info)
podman login -u $(oc whoami) -p $(oc whoami -t) $(oc registry info)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为集成镜像 registry 标记镜像:
podman tag ${IMG} $(oc registry info)/$(oc project -q)/${IMG}podman tag ${IMG} $(oc registry info)/$(oc project -q)/${IMG}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将镜像推送到集成的镜像 registry:
podman push $(oc registry info)/$(oc project -q)/${IMG}podman push $(oc registry info)/$(oc project -q)/${IMG}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索您想要的标签的镜像存储库位置:
oc get is ${IMG} -o jsonpath='{.status.tags[?(@.tag=="<TAG>")].items[0].dockerImageReference}'oc get is ${IMG} -o jsonpath='{.status.tags[?(@.tag=="<TAG>")].items[0].dockerImageReference}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,任何用户都可以在 Ray 集群或培训工作的
image参数中指定这个检索到的镜像位置值来使用您的镜像。