컨테이너에서 그래픽 처리 장치 (GPU) 리소스를 사용 설정하고 관리할 수 있습니다. 예를 들어 GPU 환경에서 인공지능 (AI) 및 머신러닝 (ML) 노트북을 실행하는 것이 좋습니다. GPU 지원은 Google Distributed Cloud (GDC) 에어 갭 적용 어플라이언스에서 기본적으로 사용 설정됩니다.
시작하기 전에
이 문서의 작업을 완료하려면 필요한 권한을 요청하고 환경을 준비해야 합니다.
IAM 역할 요청
Kubernetes 클러스터에서 리소스를 만들거나, 삭제하거나, 수정하거나, 보려면 조직 IAM 관리자에게 프로젝트 네임스페이스의 네임스페이스 관리자 (namespace-admin) 역할을 부여해 달라고 요청하세요. 이 역할을 사용하면 프로젝트 네임스페이스에 GPU 워크로드를 배포할 수 있습니다.
개발 환경 준비
로그인하고 생성 베어메탈 Kubernetes 클러스터에 대한 kubeconfig 파일입니다.
Kubernetes 클러스터의 kubeconfig 경로를 사용하여 이 안내의
CLUSTER_KUBECONFIG를 바꿉니다.
GPU 리소스를 사용하도록 컨테이너 구성
컨테이너에서 GPU를 사용하려면 다음 단계를 완료하세요.
Kubernetes 클러스터 노드가 GPU 리소스 할당을 지원하는지 확인합니다.
kubectl describe nodes NODE_NAMENODE_NAME을 검사하려는 GPU를 관리하는 노드로 바꿉니다.관련 출력은 다음 스니펫과 비슷합니다.
Capacity: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 Allocatable: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1컨테이너 사양에
.containers.resources.requests및.containers.resources.limits필드를 추가합니다. Kubernetes 클러스터는 GPU 머신으로 사전 구성되어 있으므로 모든 워크로드의 구성이 동일합니다.... containers: - name: CONTAINER_NAME image: CONTAINER_IMAGE resources: requests: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 limits: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 ...다음을 바꿉니다.
CONTAINER_NAME: 컨테이너의 이름.CONTAINER_IMAGE: GPU 머신에 액세스할 컨테이너 이미지. 컨테이너 레지스트리 경로와 이미지 버전 을 포함해야 합니다(예:REGISTRY_PATH/hello-app:1.0).
컨테이너에는 GPU에 액세스하기 위한 추가 권한도 필요합니다. GPU를 요청하는 각 컨테이너에 대해 컨테이너 사양에 다음 권한을 추가합니다.
... securityContext: seLinuxOptions: type: unconfined_t ...컨테이너 매니페스트 파일을 적용합니다.
kubectl apply -f CONTAINER_MANIFEST_FILE \ -n NAMESPACE \ --kubeconfig CLUSTER_KUBECONFIG다음을 바꿉니다.
CONTAINER_MANIFEST_FILE: 컨테이너 워크로드 커스텀 리소스의 YAML 파일.NAMESPACE: 컨테이너 워크로드를 배포할 프로젝트 네임스페이스.CLUSTER_KUBECONFIG: 컨테이너 워크로드를 배포하는 베어메탈 Kubernetes 클러스터의 kubeconfig 파일.
포드가 실행 중이고 GPU를 사용하고 있는지 확인합니다.
kubectl get pods -A | grep CONTAINER_NAME \ -n NAMESPACE \ --kubeconfig CLUSTER_KUBECONFIG관련 출력은 다음 스니펫과 비슷합니다.
Port: 80/TCP Host Port: 0/TCP State: Running Ready: True Restart Count: 0 Limits: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 Requests: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1