本頁面說明如何在 Deep Learning Containers 執行個體中執行訓練工作,並在 Google Kubernetes Engine 叢集中執行該容器映像檔。
事前準備
開始之前,請確認您已完成下列步驟。
完成「開始使用本機深度學習容器」一文「事前準備」一節中的設定步驟。
請確認您已為 Google Cloud 專案啟用計費功能。
啟用 Google Kubernetes Engine、Compute Engine 和 Artifact Registry API。
開啟指令列工具
您可以使用 Cloud Shell 或本機指令列工具,按照本指南操作。Cloud Shell 已預先安裝本教學課程所使用的 gcloud
、docker
和 kubectl
指令列工具。如果使用的是 Cloud Shell,則不需要在工作站上安裝這些指令列工具。
Cloud Shell
如要使用 Cloud Shell,請完成下列步驟。
前往 Google Cloud 控制台。
按一下主控台視窗頂端的 [啟用 Cloud Shell] 按鈕。
系統會在主控台底部的新頁框中開啟 Cloud Shell 工作階段,並顯示指令列提示。
本機指令列
如要使用本機指令列,請完成下列步驟。
使用 gcloud CLI 安裝 Kubernetes 指令列工具。
kubectl
可用於與 Kubernetes 進行通訊,這是深度學習容器叢集的叢集自動化調度管理系統:gcloud components install kubectl
建立 GKE 叢集
執行下列指令,在 GKE 中建立名為 pytorch-training-cluster
的雙節點叢集:
gcloud container clusters create pytorch-training-cluster \
--num-nodes=2 \
--zone=us-west1-b \
--accelerator="type=nvidia-tesla-p100,count=1" \
--machine-type="n1-highmem-2" \
--scopes="gke-default,storage-rw"
如要進一步瞭解這些設定,請參閱說明文件,瞭解如何建立用於執行容器的叢集。
叢集可能需要幾分鐘的時間才能建立。
您也可以不建立叢集,而是使用 Google Cloud 專案中的現有叢集。如要這樣做,您可能需要執行下列指令,確保 kubectl
指令列工具具有正確的憑證,可存取您的叢集:
gcloud container clusters get-credentials YOUR_EXISTING_CLUSTER
接著,請安裝 NVIDIA GPU 裝置驅動程式。
建立 Dockerfile
建構容器映像檔的方法有很多種。這些步驟將說明如何建構一個指令碼,以便執行名為 trainer.py
的 Python 指令碼。
如要查看可用的容器映像檔清單,請按照下列步驟操作:
gcloud container images list \
--repository="us-docker.pkg.dev/deeplearning-platform-release/gcr.io"
您可以參考「選擇容器」一文,瞭解如何選取所需容器。
以下範例將說明如何將名為 trainer.py
的 Python 指令碼放入特定 PyTorch 深度學習容器類型。
如要建立 Dockerfile,請將下列指令寫入名為 Dockerfile
的檔案。這個步驟假設您在名為 model-training-code
的目錄中擁有用於訓練機器學習模型的程式碼,且該目錄中的主要 Python 模組名為 trainer.py
。在這種情況下,工作完成後就會移除容器,因此訓練指令碼應設為輸出至 Cloud Storage (請參閱輸出至 Cloud Storage 的範例指令碼) 或輸出至永久性儲存空間。
FROM us-docker.pkg.dev/deeplearning-platform-release/gcr.io/pytorch-gpu
COPY model-training-code /train
CMD ["python", "/train/trainer.py"]
建構及上傳容器映像檔
如要建構並將容器映像檔上傳至 Artifact Registry,請使用下列指令:
export PROJECT_ID=$(gcloud config list project --format "value(core.project)")
export IMAGE_REPO_NAME=pytorch_custom_container
export IMAGE_TAG=$(date +%Y%m%d_%H%M%S)
export IMAGE_URI=us-docker.pkg.dev/$PROJECT_ID/$IMAGE_REPO_NAME:$IMAGE_TAG
docker build -f Dockerfile -t $IMAGE_URI ./
docker push $IMAGE_URI
部署應用程式
建立名為 pod.yaml 的檔案,並在其中加入下列內容,將 IMAGE_URI 替換為圖片的 URI。
apiVersion: v1
kind: Pod
metadata:
name: gke-training-pod
spec:
containers:
- name: my-custom-container
image: IMAGE_URI
resources:
limits:
nvidia.com/gpu: 1
使用 kubectl
指令列工具執行下列指令,並部署應用程式:
kubectl apply -f ./pod.yaml
如要追蹤 Pod 的狀態,請執行下列指令:
kubectl describe pod gke-training-pod