為 ML 診斷設定 GKE
如果您使用 Google Kubernetes Engine (GKE) 執行 ML 工作負載,請按照本指南設定 GKE 叢集,並安裝必要的 GKE 構件。
- 隨選剖析:您必須安裝
connection-operator。 - 程式輔助剖析:您必須安裝
injection-webhook、標記工作負載,並使用 ML Diagnostics SDK。
如果您使用的 GKE 版本晚於 1.35.0-gke.3065000,可以使用單一 gcloud CLI 指令,為 ML Diagnostics 設定 GKE 叢集。詳情請參閱「使用 gcloud CLI 設定」。
如果是 1.35.0-gke.3065000 之前的 GKE 版本,您需要手動設定 GKE 叢集,才能安裝 cert-manager、injection-webhook 和 connection-operator 構件。詳情請參閱手動安裝。
使用 gcloud CLI 設定
如果是 1.35.0-gke.3065000 之後的 GKE 版本,請使用下列其中一個 gcloud CLI 指令,將必要的 ML Diagnostics 元件 (connection-operator 和 injection-webhook) 部署至 GKE 叢集。
如果是新的 GKE 叢集:
gcloud beta container clusters create CLUSTER_NAME --enable-managed-mldiagnostics
如果是現有的 GKE 叢集:
gcloud beta container clusters update CLUSTER_NAME --enable-managed-mldiagnostics
如要停用機器學習診斷,請使用下列指令:
gcloud beta container clusters update CLUSTER_NAME --no-enable-managed-mldiagnostics
您也可以透過 GKE Google Cloud 控制台啟用 gcloud CLI 指令:
如果是新的 GKE 叢集,請依序前往「功能管理工具」>「代管機器學習診斷」。
如果是現有 GKE 叢集,請前往「叢集」,選取叢集名稱,然後依序前往「編輯」和「功能」,編輯「受管理機器學習診斷」。
如要進一步瞭解如何使用 gcloud CLI 指令設定 GKE 叢集以進行機器學習診斷,請參閱下列 API 參考資料頁面中的 enable-managed-mldiagnostics 旗標:
手動安裝
如果是 1.35.0-gke.3065000 之前的 GKE 版本,您需要手動設定 GKE 叢集,才能安裝下列項目:
cert-manager:injection-webhook的必要條件。injection-webhook:向 SDK 提供必要的中繼資料。支援常見的 ML Kubernetes 工作負載,例如JobSet、RayJob和LeaderWorkerSet。connection-operator:適用於 GKE 的隨選剖析。將connection-operator和injection-webhook一併部署到 GKE 叢集後,當您觸發隨選擷取作業時,系統會初始化剖析要求,以剖析伺服器執行的目標 Pod。
如要進一步瞭解如何設定 Google Kubernetes Engine,請參閱設定 Google Kubernetes Engine 叢集。
Cert-manager
cert-manager 會做為叢集的憑證控制器,確保應用程式安全無虞,且憑證不會意外過期。
使用 Helm 安裝下列項目:
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.13.0 \
--set installCRDs=true \
--set global.leaderElection.namespace=cert-manager \
--timeout 10m
Injection-webhook
injection-webhook 會將中繼資料傳遞至 SDK。使用 helm upgrade --install 首次安裝或升級現有安裝項目。
使用 Helm 安裝下列項目:
helm upgrade --install mldiagnostics-injection-webhook \
--namespace=gke-mldiagnostics \
--create-namespace \
--version 0.25.0 \
oci://us-docker.pkg.dev/ai-on-gke/mldiagnostics-webhook-and-operator-helm/mldiagnostics-injection-webhook
Connection-operator
connection-operator 可在 GKE 中啟用隨選剖析功能。請參閱下表,找出正確的 mldiagnostics-connection-operator 版本:
| JAX 版本 | Helm 資訊套件版本 |
|---|---|
| 0.8.x | 0.24.0 |
| 0.9.x 以上版本 | 0.24.0+ |
使用 Helm 安裝所需版本。
適用於 JAX 0.8.x:
helm upgrade --install mldiagnostics-connection-operator \
--namespace=gke-mldiagnostics \
--create-namespace \
--version 0.24.0 \
oci://us-docker.pkg.dev/ai-on-gke/mldiagnostics-webhook-and-operator-helm/mldiagnostics-connection-operator \
--set 'mldiagnosticsConnectionOperator.controller.args={--metrics-bind-address=:8443,--health-probe-bind-address=:8081,--sidecar-timeout=65m,--disable-hostname-override}'
適用於 JAX 0.9.x 以上版本:
helm upgrade --install mldiagnostics-connection-operator \
--namespace=gke-mldiagnostics \
--create-namespace \
--version 0.24.0 \
oci://us-docker.pkg.dev/ai-on-gke/mldiagnostics-webhook-and-operator-helm/mldiagnostics-connection-operator
標記工作負載
如要進行程式輔助剖析,您需要觸發 injection-webhook,將中繼資料注入 Pod。部署工作負載前,請先使用 managed-mldiagnostics-gke=true 為工作負載或其命名空間加上標籤:
為工作負載加上標籤。為
Jobset、LWS或RayJob工作負載加上標籤,即可為該特定工作負載啟用 Webhook。以下是JobSet工作負載的範例:apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: single-host-tpu-v3-jobset2 namespace: default labels: managed-mldiagnostics-gke: "true"為命名空間加上標籤。這會為該命名空間內的所有
Jobset、LWS和RayJob工作負載啟用 Webhook。kubectl create namespace ai-workloads kubectl label namespace ai-workloads managed-mldiagnostics-gke=true