GPU 컨테이너 워크로드 관리

컨테이너에서 그래픽 처리 장치 (GPU) 리소스를 사용 설정하고 관리할 수 있습니다. 예를 들어 GPU 환경에서 인공지능 (AI) 및 머신러닝 (ML) 노트북을 실행하는 것이 좋습니다. GPU 컨테이너 워크로드를 실행하려면 GPU 기기를 지원하는 Kubernetes 클러스터가 있어야 합니다. GPU 지원은 GPU 머신이 프로비저닝된 Kubernetes 클러스터에 기본적으로 사용 설정됩니다.

시작하기 전에

컨테이너에 GPU를 배포하려면 다음이 필요합니다.

  • GPU 머신 클래스가 있는 Kubernetes 클러스터 지원되는 GPU 카드 섹션에서 클러스터 머신에 구성할 수 있는 옵션을 확인하세요.

  • GPU를 확인하는 사용자 클러스터 노드 뷰어 역할 (user-cluster-node-viewer)과 프로젝트 네임스페이스에 GPU 워크로드를 배포하는 네임스페이스 관리자 역할 (namespace-admin)

  • Kubernetes 클러스터를 호스팅하는 영역 관리 API 서버의 kubeconfig 경로입니다. kubeconfig 파일이 없는 경우 로그인하여 생성합니다.

  • GPU를 호스팅할 영역의 조직 인프라 클러스터에 대한 kubeconfig 경로입니다. kubeconfig 파일이 없는 경우 로그인하여 생성합니다.

  • Kubernetes 클러스터 이름입니다. 이 정보가 없는 경우 플랫폼 관리자에게 문의하세요.

  • Kubernetes 클러스터 kubeconfig 경로입니다. kubeconfig 파일이 없는 경우 로그인하여 생성합니다.

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

컨테이너에서 이러한 GPU를 사용하려면 다음 단계를 완료하세요.

  1. Kubernetes 클러스터에 GPU를 지원하는 노드 풀이 있는지 확인합니다.

    kubectl describe nodepoolclaims -n KUBERNETES_CLUSTER_NAME \
        --kubeconfig ORG_INFRASTRUCTURE_CLUSTER
    

    관련 출력은 다음 스니펫과 유사합니다.

    Spec:
      Machine Class Name:  a2-ultragpu-1g-gdc
      Node Count:          2
    

    지원되는 GPU 머신 유형 및 다중 인스턴스 GPU (MIG) 프로필의 전체 목록은 클러스터 노드 머신 유형을 참고하세요.

  2. 컨테이너 사양에 .containers.resources.requests.containers.resources.limits 필드를 추가합니다. 각 리소스 이름은 머신 클래스에 따라 다릅니다. GPU 리소스 할당을 확인하여 GPU 리소스 이름을 찾습니다.

    예를 들어 다음 컨테이너 사양은 a2-ultragpu-1g-gdc 노드에서 GPU의 파티션 3개를 요청합니다.

     ...
     containers:
     - name: my-container
       image: "my-image"
       resources:
         requests:
           nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3
         limits:
           nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3
     ...
    
  3. 컨테이너가 GPU에 액세스하려면 추가 권한도 필요합니다. GPU를 요청하는 각 컨테이너에 컨테이너 사양에 다음 권한을 추가합니다.

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

    kubectl apply -f CONTAINER_MANIFEST_FILE \
        -n NAMESPACE \
        --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

GPU 리소스 할당 확인

  • GPU 리소스 할당을 확인하려면 다음 명령어를 사용하세요.

    kubectl describe nodes NODE_NAME
    

    NODE_NAME을 검사하려는 GPU를 관리하는 노드로 바꿉니다.

    관련 출력은 다음 스니펫과 유사합니다.

    Capacity:
      nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    Allocatable:
      nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
    

GPU의 리소스 이름을 기록해 둡니다. GPU 리소스를 사용하도록 컨테이너를 구성할 때 이를 지정해야 합니다.