为 ML 诊断配置 GKE
如果您使用 Google Kubernetes Engine (GKE) 来处理机器学习工作负载,请按照本指南配置 GKE 集群并安装所需的 GKE 制品。
- 按需分析:需要您安装
connection-operator。 - 程序化分析:需要您安装
injection-webhook、标记工作负载并使用 ML Diagnostics SDK。
如果您使用的 GKE 版本高于 1.35.0-gke.3065000,则只需运行一条 gcloud CLI 命令即可为 ML 诊断设置 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 诊断组件(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
如需停用 ML 诊断,请使用以下方法:
gcloud beta container clusters update CLUSTER_NAME --no-enable-managed-mldiagnostics
您还可以通过 GKE Google Cloud 控制台启用 gcloud CLI 命令:
对于新的 GKE 集群,请前往功能管理器 > 托管式机器学习诊断。
对于现有的 GKE 集群,请前往集群,选择集群名称,前往修改,然后在功能下修改受管理的机器学习诊断。
如需详细了解用于为机器学习诊断设置 GKE 集群的 gcloud CLI 命令,请参阅以下 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
注入 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