ML Diagnostics용 GKE 구성

ML 워크로드에 Google Kubernetes Engine (GKE)을 사용하는 경우 ML Diagnostics 플랫폼을 두 가지 방법으로 사용할 수 있습니다.

  1. 자동 워크로드 모니터링 및 시스템 측정항목 수집: 자동 워크로드 모니터링 및 시스템 측정항목 수집을 위해 코드를 계측하거나 추가 구성을 실행할 필요가 없습니다. 워크로드 모니터링 및 시스템 측정항목 수집은 기본적으로 사용 설정되어 있으며 이 가이드의 단계를 실행할 필요가 없습니다. 워크로드 모니터링 jobsetjob GKE 작업 유형을 지원하며 GKE 버전 1.36.0-gke.4681000 이상과 호환됩니다.
  2. ML Diagnostics SDK 및 주문형 프로파일링: ML Diagnostics SDK를 사용하고 주문형 프로파일링을 실행하려면 이 가이드를 사용하여 GKE 클러스터를 구성하고 필요한 GKE 아티팩트를 설치하세요.

워크로드 구성은 주문형 프로파일링을 사용하는지 아니면 프로그래매틱 프로파일링을 사용하는지에 따라 다릅니다.

  • 주문형 프로파일링: connection-operator을(를) 설치해야 합니다.
  • 프로그래매틱 프로파일링: injection-webhook을 설치하고 워크로드에 라벨을 지정하고 ML Diagnostics SDK를 사용해야 합니다.

1.35.0-gke.3065000 이후 버전의 GKE를 사용하는 경우 gcloud CLI 명령어 하나로 Google Cloud 콘솔을 통해 또는 Terraform을 사용하여 ML Diagnostics용 GKE 클러스터를 설정할 수 있습니다. 자세한 내용은 다음 항목을 참고하세요. gcloud CLI, Google Cloud 콘솔 또는 Terraform으로 설정

1.35.0-gke.3065000 이전 버전의 GKE의 경우 cert-manager, injection-webhook, connection-operator 아티팩트를 설치하도록 GKE 클러스터를 수동으로 구성해야 합니다. 자세한 내용은 수동 설치를 참고하세요.

gcloud CLI, Google Cloud 콘솔 또는 Terraform으로 설정

1.35.0-gke.3065000 이후 버전의 GKE의 경우 다음 방법 중 하나를 사용하여 필요한 ML Diagnostics 구성요소 (connection-operator 및 injection-webhook 모두)를 GKE 클러스터에 배포합니다.

gcloud

새 GKE 클러스터의 경우:

gcloud beta container clusters create CLUSTER_NAME --enable-managed-mldiagnostics

기존 GKE 클러스터의 경우:

gcloud beta container clusters update CLUSTER_NAME --enable-managed-mldiagnostics

ML Diagnostics를 사용 중지하려면 다음을 사용하세요.

gcloud beta container clusters update CLUSTER_NAME --no-enable-managed-mldiagnostics

ML Diagnostics용 GKE 클러스터를 설정하는 gcloud CLI 명령어에 대한 자세한 내용은 다음 API 참조 페이지의 enable-managed-mldiagnostics 플래그를 참고하세요.

콘솔

  • 새 GKE 클러스터의 경우 기능 관리자 > 관리형 머신러닝 진단 으로 이동합니다.

    GKE 관리형 머신러닝 진단으로 이동

  • 기존 GKE 클러스터의 경우 클러스터로 이동하여 클러스터 이름을 선택하고 수정으로 이동한 후 기능에서 관리형 머신러닝 진단 을 수정합니다.

Terraform

Terraform을 사용하여 GKE 인프라를 프로비저닝하는 경우 terraform-provider-google-beta 제공업체 (버전 v7.28.0 이상) 또는 terraform-google-modules/kubernetes-engine/google 모듈 (버전 v45.0.0 이상)을 사용할 수 있습니다.

Google Cloud Terraform 제공업체 사용

google_container_cluster 리소스를 사용하여 새 클러스터에서 관리형 ML 진단을 사용 설정하려면 google-beta 프로바이더 (버전 v7.28.0 이상)를 사용하여 enabled = truemanaged_machine_learning_diagnostics_config 블록을 추가합니다.

terraform {
  required_providers {
    google-beta = {
      source  = "hashicorp/google-beta"
      version = ">= 7.28.0"
    }
  }
}

resource "google_container_cluster" "primary" {
  provider = google-beta
  name     = "CLUSTER_NAME"
  location = "LOCATION"

  # ... other cluster configuration ...

  managed_machine_learning_diagnostics_config {
    enabled = true
  }
}

Terraform 리소스를 사용하여 클러스터에서 관리형 ML Diagnostics를 사용 중지하려면 managed_machine_learning_diagnostics_config 블록에서 enabled = false를 설정합니다.

resource "google_container_cluster" "primary" {
  provider = google-beta
  name     = "CLUSTER_NAME"
  location = "LOCATION"

  # ... other cluster configuration ...

  managed_machine_learning_diagnostics_config {
    enabled = false
  }
}

GKE Terraform 모듈 사용

terraform-google-modules/kubernetes-engine/google 모듈 (예: beta-public-cluster 하위 모듈)을 사용하여 클러스터에서 관리형 ML Diagnostics를 사용 설정하려면 enable_managed_machine_learning_diagnostics = true를 설정합니다.

module "gke" {
  source  = "terraform-google-modules/kubernetes-engine/google//modules/beta-public-cluster"
  version = ">= 45.0"

  project_id = "PROJECT_ID"
  name       = "CLUSTER_NAME"
  region     = "LOCATION"

  # ... other cluster configuration ...

  enable_managed_machine_learning_diagnostics = true
}

Terraform 모듈을 사용하여 클러스터에서 관리형 ML Diagnostics를 사용 중지하려면 enable_managed_machine_learning_diagnostics = false를 설정합니다.

module "gke" {
  source  = "terraform-google-modules/kubernetes-engine/google//modules/beta-public-cluster"
  version = ">= 45.0"

  # ... other cluster configuration ...

  enable_managed_machine_learning_diagnostics = false
}

구성을 업데이트한 후 변경사항을 적용합니다.

terraform apply

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 이름입니다.
  • CLUSTER_NAME: 클러스터의 이름입니다.
  • LOCATION: 리전 또는 영역입니다.

GKE에서 Terraform을 사용하는 방법에 대한 자세한 내용은 GKE에 대한 Terraform 지원을 참고하세요.

수동 설치

1.35.0-gke.3065000 이전 버전의 GKE의 경우 다음을 설치하도록 GKE 클러스터를 수동으로 구성해야 합니다.

  • cert-manager: injection-webhook의 필수사항입니다.
  • injection-webhook: SDK에 필요한 메타데이터를 제공합니다. JobSet,RayJob, LeaderWorkerSet과 같은 일반적인 ML Kubernetes 워크로드를 지원합니다.
  • connection-operator: GKE의 주문형 프로파일링입니다. injection-webhook과 함께 connection-operator를 GKE 클러스터에 배포하면 주문형 캡처를 트리거할 때 프로파일링 서버가 실행되는 대상 포드로 프로파일링 요청이 초기화됩니다.

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 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을(를) 트리거하여 포드에 메타데이터를 삽입해야 합니다. 워크로드를 배포하기 전에 워크로드 또는 네임스페이스에 managed-mldiagnostics-gke=true 라벨을 지정합니다.

  • 워크로드에 라벨 지정. Jobset, LWS 또는 RayJob 워크로드에 라벨을 지정하면 특정 워크로드의 웹훅이 사용 설정됩니다. 다음은 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 워크로드의 웹훅이 사용 설정됩니다.

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