部署和使用深度学习 (DL) 容器

深度学习 (DL) 容器是一种 Docker 容器,其中预安装了数据科学框架、库和工具。用户(例如数据科学家)选择单个 DL 容器并进行部署。部署的容器具有性能更出色的一致环境,可帮助您快速为工作流设计原型并加以实施。

部署深度学习容器

在使用深度学习容器之前,您必须选择并部署一个运行机器学习 (ML) 任务的容器映像。预安装的框架、库和工具可用于预配深度学习容器。

使用 kubeconfig 文件部署 DL 容器

Google Distributed Cloud (GDC) 经过网闸隔离的设备提供以下 kubeconfig 文件,用于部署您的 DL 容器:

  • CLUSTER_KUBECONFIG:裸金属 Kubernetes 集群的 kubeconfig 文件。GDC 为所有工作负载提供一个集群。

如需详细了解如何登录界面和 kubectl 工具,请参阅登录。 如需检索 CLUSTER_KUBECONFIG 文件,请参阅获取 kubeconfig 文件

下载示例机器学习 (ML) 脚本和数据集

下载示例机器学习脚本 beginner.ipynb 和数据集 mnist.npz,以运行机器学习快速入门教程。本教程演示了如何部署和使用深度学习容器来运行机器学习实验。

mkdir -p /tmp/datasets
cd /tmp/datasets

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/beginner.ipynb

wget --no-check-certificate
https://GDC_APPLIANCE_URL/.well-known/static/dl-container-tutorial/mnist.npz

GDC_APPLIANCE_URL 替换为用于访问 GDC 的域名。首次打开任何网址时,GDC 会将您重定向到身份提供方登录页面。

查找 Harbor 注册表的 IP 地址

在使用示例脚本和数据集之前,您必须在 Harbor 注册表中找到 DL 容器映像位置。Harbor 注册表是一项用于存储私有容器映像的服务。

示例代码的第一行设置了 KUBECONFIG 环境变量的路径,该变量用于获取 Harbor 注册表地址。通过 Harbor 注册表地址,您可以访问可用容器映像的列表。

在示例代码的第二行中,kubectl 工具使用了 KUBECONFIG 环境变量。

在示例代码的第三行中,REGISTRY_URL#https:// 命令从网址中移除前缀 https://,并将 Harbor 注册表网域存储在 REGISTRY_IP 环境变量中。

在示例代码的最后一行中,kubectl 工具会提取 admin 用户的密码。

export KUBECONFIG=CLUSTER_KUBECONFIG

REGISTRY_URL=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
REGISTRY_IP=${REGISTRY_URL#https://}
ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin -o jsonpath="{.data.secret}" | base64 -d)

选择容器映像

您必须先选择要部署的容器映像,然后才能运行机器学习任务。使用下表中的 Harbor 注册表网域和路径(来自 Harbor 注册表)查看可用容器映像的列表:

框架 处理器 容器映像名称
基本 GPU base-cu113
基本 CPU base-cpu
TensorFlow 企业版 2.x GPU tf2-gpu
PyTorch GPU pytorch-gpu

此表按框架和处理器整理。如需选择可处理机器学习实验的深度学习容器映像,请按以下步骤操作:

  1. 确定包含机器学习工具的框架。
  2. 选择处理器。您可以根据要运行的机器学习任务的类型和计算强度来选择处理器。例如,当您有计算密集型机器学习任务时,可以选择一个 GPU 处理器,并将 GPU 资源分配给深度学习容器。

创建 DL 容器并将其部署到 Kubernetes 集群

如需创建 GDC 实例,请指定裸金属 Kubernetes 集群的 kubeconfig 文件的路径。KUBECONFIG 环境变量用于指定 kubectl 工具将 DL 容器部署到哪个集群。kubectl apply 命令用于部署 DL 容器实例。

CONTAINER_IMAGE_NAME 替换为从选择容器映像中的映像列表中选择的映像,并确保提供标记。

export KUBECONFIG=CLUSTER_KUBECONFIG

kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: dl-container-pod
  namespace: NAMESPACE
spec:
  containers:
  - image: gcr.io/private-cloud-staging/notebooks/deeplearning-platform-release/CONTAINER_IMAGE_NAME:CONTAINER_IMAGE_TAG
    command: ["tail", "-f", "/dev/null"]
    name: training
EOF

使用已部署的 DL 容器

以下主题提供了一个示例,说明如何使用深度学习容器映像来训练模型并使用该模型生成预测结果。

将教程文件复制到 DL 容器 pod

将快速入门教程文件复制到您的 DL 容器 pod 中。beginner.ipynb 包含训练模型并使用模型进行预测的步骤。机器学习训练教程使用 mnist.npz 数据集文件来训练模型。

cd /tmp/datasets

kubectl cp beginner.ipynb dl-container-pod:/tmp
kubectl cp mnist.npz dl-container-pod:/tmp

运行机器学习快速入门教程

使用以下命令运行教程。使用第一行进入容器 pod。进入容器 pod 后,将目录更改为 tmp,然后运行 DL 容器中封装的 papermill 工具。papermill 工具会运行该教程,以创建一个生成预测的笔记本。

  1. 进入 DL pod 的交互式终端:

    kubectl exec -it dl-container-pod -- /bin/bash
    
  2. 在 DL pod 上下文中,运行以下命令:

    cd tmp
    papermill beginner.ipynb result.ipynb
    

    部署会在 /tmp 目录中生成一个 result.ipynb 文件。

  3. 查看生成的机器学习模型中的内容和预测输出:

    cat result.ipynb
    

可选:删除 DL 容器 pod

在 DL 容器 pod 中完成实验后,请按照最佳实践删除该 pod:

kubectl delete pod dl-container-pod