ML 진단을 위해 GKE 구성

ML 워크로드에 Google Kubernetes Engine (GKE)을 사용하는 경우 이 가이드를 사용하여 GKE 클러스터를 구성하고 필요한 GKE 아티팩트를 설치하세요. GKE 요구사항은 ML 진단 gcloud CLI를 사용하여 CLI에서 주문형 프로파일링을 트리거하는지, 아니면 워크로드와 함께 ML 진단 SDK를 사용하여 GKE에 배포하는지에 관계없이 동일합니다.

1.35.0-gke.3065000 이후 버전의 GKE를 사용하는 경우 단일 gcloud CLI 명령어로 ML 진단을 위한 GKE 클러스터를 설정할 수 있습니다. 자세한 내용은 gcloud CLI로 설정을 참고하세요.

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

gcloud CLI로 설정

1.35.0-gke.3065000 이후 버전의 GKE의 경우 다음 gcloud CLI 명령어 중 하나를 사용하여 필수 ML 진단 구성요소를 GKE 클러스터에 배포합니다.

새 GKE 클러스터의 경우:

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

기존 GKE 클러스터의 경우:

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

ML 진단을 사용 중지하려면 다음을 사용하세요.

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

GKE Google Cloud 콘솔을 통해 gcloud CLI 명령어를 사용 설정할 수도 있습니다.

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

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

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

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

수동 설치

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를 사용하여 최신 버전의 injection-webhook로 업데이트하여 다운타임이 없도록 합니다.

Helm을 사용하여 다음을 설치합니다.

helm install mldiagnostics-injection-webhook \
   --namespace=gke-mldiagnostics \
   --create-namespace \
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.1-0.8.3 0.14.0
0.9.0 0.16.0

Helm을 사용하여 필요한 버전을 설치합니다.

helm install mldiagnostics-connection-operator \
   --namespace=gke-mldiagnostics \
   --create-namespace \
   --version VERSION \
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