ML Diagnostics용 GKE 구성
ML 워크로드에 Google Kubernetes Engine (GKE)을 사용하는 경우 ML Diagnostics 플랫폼을 두 가지 방법으로 사용할 수 있습니다.
- 자동 워크로드 모니터링 및 시스템 측정항목 수집: 자동 워크로드 모니터링 및 시스템 측정항목 수집을 위해
코드를 계측하거나 추가 구성을 실행할 필요가 없습니다. 워크로드 모니터링 및 시스템 측정항목 수집은 기본적으로 사용 설정되어 있으며 이 가이드의 단계를 실행할 필요가 없습니다. 워크로드 모니터링
jobset및jobGKE 작업 유형을 지원하며 GKE 버전 1.36.0-gke.4681000 이상과 호환됩니다. - 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 클러스터의 경우 클러스터로 이동하여 클러스터 이름을 선택하고 수정으로 이동한 후 기능에서 관리형 머신러닝 진단 을 수정합니다.
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 = true로 managed_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