為 ML 診斷設定 GKE

如果您使用 Google Kubernetes Engine (GKE) 執行 ML 工作負載,請按照本指南設定 GKE 叢集,並安裝必要的 GKE 構件。

工作負載的設定取決於您使用隨選剖析還是程式輔助剖析

如果您使用的 GKE 版本晚於 1.35.0-gke.3065000,可以使用單一 gcloud CLI 指令,為 ML Diagnostics 設定 GKE 叢集。詳情請參閱「使用 gcloud CLI 設定」。

如果是 1.35.0-gke.3065000 之前的 GKE 版本,您需要手動設定 GKE 叢集,才能安裝 cert-managerinjection-webhookconnection-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 Managed Machine Learning Diagnostics

  • 如果是現有 GKE 叢集,請前往「叢集」,選取叢集名稱,然後依序前往「編輯」和「功能」,編輯「受管理機器學習診斷」

如要進一步瞭解如何使用 gcloud CLI 指令設定 GKE 叢集以進行機器學習診斷,請參閱下列 API 參考資料頁面中的 enable-managed-mldiagnostics 旗標:

手動安裝

如果是 1.35.0-gke.3065000 之前的 GKE 版本,您需要手動設定 GKE 叢集,才能安裝下列項目:

  • cert-managerinjection-webhook 的必要條件。
  • injection-webhook:向 SDK 提供必要的中繼資料。支援常見的 ML Kubernetes 工作負載,例如 JobSetRayJobLeaderWorkerSet
  • connection-operator:適用於 GKE 的隨選剖析。將 connection-operatorinjection-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 為工作負載或其命名空間加上標籤:

  • 為工作負載加上標籤。為 JobsetLWSRayJob 工作負載加上標籤,即可為該特定工作負載啟用 Webhook。以下是 JobSet 工作負載的範例:

    apiVersion: jobset.x-k8s.io/v1alpha2
    kind: JobSet
    metadata:
      name: single-host-tpu-v3-jobset2
      namespace: default
      labels:
        managed-mldiagnostics-gke: "true"
    
  • 為命名空間加上標籤。這會為該命名空間內的所有 JobsetLWSRayJob 工作負載啟用 Webhook。

    kubectl create namespace ai-workloads
    kubectl label namespace ai-workloads managed-mldiagnostics-gke=true