GPU 컨테이너 워크로드 배포

이 페이지에서는 Google Distributed Cloud (GDC) Sandbox AI 최적화 SKU에 GPU 컨테이너 워크로드를 배포하는 방법을 설명합니다.

GPU 컨테이너 워크로드 배포

GDC 샌드박스 AI 최적화 SKU에는 조직 인프라 클러스터 내에 NVIDIA H100 80GB HBM3 GPU가 4개 포함되어 있습니다. 이러한 GPU는 리소스 이름 nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3를 사용하여 액세스할 수 있습니다. 이 섹션에서는 이러한 GPU를 사용하도록 컨테이너 구성을 업데이트하는 방법을 설명합니다.

GDC Sandbox AI 최적화 SKU의 GPU는 사전 구성된 프로젝트인 'sandbox-gpu-project'와 연결되어 있습니다. GPU를 사용하려면 이 프로젝트를 사용하여 컨테이너를 배포해야 합니다.

시작하기 전에

  • 조직 인프라 클러스터에 대해 명령어를 실행하려면 클러스터 작업에 설명된 대로 org-1-infra 클러스터의 kubeconfig가 있어야 합니다.

    • gdcloud 명령줄로 구성 및 인증
    • 조직 인프라 클러스터의 kubeconfig 파일을 생성하고 경로를 환경 변수 KUBECONFIG에 할당합니다.
  • 워크로드를 실행하려면 sandbox-gpu-admin 역할이 할당되어 있어야 합니다. 기본적으로 역할은 platform-admin 사용자에게 할당됩니다. platform-admin로 로그인하고 다음 명령어를 실행하여 다른 사용자에게 역할을 할당할 수 있습니다.

    kubectl --kubeconfig ${KUBECONFIG} create rolebinding ${NAME} --role=sandbox-gpu-admin \
    --user=${USER} --namespace=sandbox-gpu-project
    

GPU 리소스를 사용하도록 컨테이너 구성

  1. 컨테이너 사양에 .containers.resources.requests.containers.resources.limits 필드를 추가하여 워크로드에 GPU를 요청합니다. 샌드박스-gpu-project 내의 모든 컨테이너는 전체 프로젝트에서 최대 총 4개의 GPU를 요청할 수 있습니다. 다음 예에서는 컨테이너 사양의 일부로 GPU 하나를 요청합니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: sandbox-gpu-project
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            resources:
            requests:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
            limits:
                nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
    
  1. 컨테이너가 GPU에 액세스하려면 추가 권한도 필요합니다. GPU를 요청하는 각 컨테이너에 컨테이너 사양에 다음 권한을 추가합니다.

    securityContext:
    seLinuxOptions:
      type: unconfined_t
    
  2. 컨테이너 매니페스트 파일을 적용합니다.

    kubectl apply -f ${CONTAINER_MANIFEST_FILE_PATH} \
        -n sandbox-gpu-project \
        --kubeconfig ${KUBECONFIG}