部署及使用深度學習 (DL) 容器

深度學習 (DL) 容器是 Docker 容器,已預先安裝資料科學架構、程式庫和工具。使用者 (例如資料科學家) 選擇並部署單一 DL 容器。部署的容器具有效能最佳化的一致環境,可協助您快速設計原型及部署工作流程。

部署 DL 容器

使用 DL 容器前,您必須選擇並部署執行機器學習 (ML) 工作的容器映像檔。預先安裝的架構、程式庫和工具會佈建 DL 容器。

使用 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)

選擇容器映像檔

您必須先選擇要部署的容器映像檔,才能執行 ML 工作。使用 Harbor 登錄檔網域和下表中的路徑,從 Harbor 登錄檔查看可用容器映像檔清單:

架構 處理器 容器映像檔名稱
基本 GPU base-cu113
基本 CPU base-cpu
TensorFlow Enterprise 2.x GPU tf2-gpu
PyTorch GPU pytorch-gpu

這份表格會依架構和處理器分類。如要選擇可處理 ML 實驗的 DL 容器映像檔,請按照下列步驟操作:

  1. 找出含有機器學習工具的架構。
  2. 選擇處理器。您可以根據要執行的機器學習工作類型,以及該工作的運算強度選擇處理器。舉例來說,如果機器學習工作需要大量運算資源,請選擇其中一個 GPU 處理器,並將 GPU 資源分配給 DL 容器。

建立 DL 容器並部署至 Kubernetes 叢集

如要建立 GDC 執行個體,請指定 Bare Metal 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