GKE의 GPU 문제 해결


이 페이지에서는 Google Kubernetes Engine(GKE)에서 GPU와 관련된 문제를 해결하는 방법을 설명합니다.

추가 지원이 필요하면 Cloud Customer Care에 문의하세요.

GPU 드라이버 설치

이 섹션에서는 GKE의 자동 NVIDIA 기기 드라이버 설치에 대한 문제 해결 정보를 제공합니다.

Ubuntu 노드에서 드라이버 설치 실패

L4 GPU 또는 H100 GPU가 연결된 Ubuntu 노드를 사용하는 경우 GKE에서 설치하는 기본 GPU 드라이버가 해당 GPU에 필요한 버전보다 낮을 수 있습니다. 그 결과 GPU 기기 플러그인 포드가 대기 중 상태로 멈추고 해당 노드의 GPU 워크로드에 문제가 발생할 수 있습니다.

이 문제를 해결하려면 GPU 드라이버 버전 535를 기본 드라이버로 설치하는 다음 GKE 버전으로 업그레이드하는 것이 좋습니다.

  • 1.26.15-gke.1483000 이상
  • 1.27.15-gke.1039000 이상
  • 1.28.11-gke.1044000 이상
  • 1.29.6-gke.1073000 이상
  • 1.30.2-gke.1124000 이상

또는 다음 명령어를 실행하여 드라이버 버전 535 이상을 수동으로 설치할 수 있습니다.

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded-R535.yaml

GPU 기기 플러그인이 CrashLoopBackOff 오류와 함께 실패

2023년 1월 25일 이전에 노드 풀에서 수동 드라이버 설치 메서드를 사용한 후 노드 풀을 자동 드라이버를 지원하는 GKE 버전으로 업그레이드한 경우 다음과 같은 문제가 발생합니다. 두 설치 워크로드가 동시에 존재하며 충돌하는 드라이버 버전을 노드에 설치하려고 시도합니다.

GPU 기기 플러그인 초기화 컨테이너가 Init:CrashLoopBackOff 상태로 실패합니다. 컨테이너의 로그는 다음과 비슷합니다.

failed to verify installation: failed to verify GPU driver installation: exit status 18

이 문제를 해결하려면 다음을 메서드를 시도해 보세요.

  • 클러스터에서 수동 드라이버 설치 DaemonSet를 삭제합니다. 이렇게 하면 충돌하는 설치 워크로드가 삭제되고 GKE가 노드에 드라이버를 자동으로 설치할 수 있습니다.

    kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
    
  • 수동 드라이버 설치 DaemonSet 매니페스트를 클러스터에 다시 적용합니다. 2023년 1월 25일, 자동 드라이버 설치를 사용하는 노드를 무시하도록 매니페스트를 업데이트했습니다.

    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
    
  • 노드 풀의 자동 드라이버 설치를 사용 중지합니다. 기존 드라이버 설치 DaemonSet는 업데이트 작업이 완료된 후 예상한 대로 작동합니다.

    gcloud container node-pools update POOL_NAME \
        --accelerator=type=GPU_TYPE,count=GPU_COUNT,gpu-driver-version=disabled \
        --cluster=CLUSTER_NAME \
        --location=LOCATION
    

    다음을 바꿉니다.

    • POOL_NAME: 노드 풀의 이름입니다.
    • GPU_TYPE: 노드 풀에서 이미 사용 중인 GPU 유형입니다.
    • GPU_COUNT: 이미 노드 풀에 연결된 GPU 수입니다.
    • CLUSTER_NAME: 노드 풀이 포함된 GKE 클러스터의 이름입니다.
    • LOCATION: 클러스터의 Compute Engine 위치입니다.

오류: '컨테이너 이미지 cos-nvidia-installer:fixed가 가져오기 정책이 '사용 안함'인 경우 존재하지 않습니다.' 또는 '컨테이너 이미지 ubuntu-nvidia-installer:fixed가 가져오기 정책이 '사용 안함'인 경우 존재하지 않습니다.'

이 문제는 nvidia-driver-installer 포드가 PodInitializing 상태이고 GPU 플러그인 기기 또는 GPU 드라이버 설치 프로그램 포드가 다음 오류를 보고하는 경우에 발생합니다. 구체적인 오류 메시지는 노드에서 실행되는 운영체제에 따라 다릅니다.

COS

Container image "cos-nvidia-installer:fixed" is not present with pull policy of Never.

Ubuntu

Container image "gke-nvidia-installer:fixed" is not present with pull policy of Never.

이 문제는 가비지 수집기가 노드의 공간을 확보하기 위해 미리 로드된 NVIDIA 드라이버 이미지를 삭제할 때 발생할 수 있습니다. 드라이버 포드가 다시 생성되거나 컨테이너가 다시 시작되면 GKE에서 미리 로드된 이미지를 찾을 수 없습니다.

COS를 실행할 때 발생하는 가비지 컬렉션 문제를 완화하려면 수정사항이 포함된 다음 버전 중 하나로 GKE 노드를 업그레이드하세요.

  • 1.25.15-gke.1040000 이상
  • 1.26.10-gke.1030000 이상
  • 1.27.6-gke.1513000 이상
  • 1.28.3-gke.1061000 이상

노드에서 Ubuntu를 실행하는 경우 이 가비지 컬렉션 문제에 대한 해결 방법은 아직 없습니다. Ubuntu에서 이 문제를 완화하려면 호스트와 상호작용하여 NVIDIA GPU 드라이버가 올바르게 설정되도록 하는 권한이 있는 컨테이너를 실행하면 됩니다. 이렇게 하려면 노드에서 sudo /usr/local/bin/nvidia-container-first-boot를 실행하거나 다음 매니페스트를 적용합니다.

apiVersion: v1
kind: Pod
metadata:
  name: gke-nvidia-installer-fixup
spec:
  nodeSelector:
    cloud.google.com/gke-os-distribution: ubuntu
  hostPID: true
  containers:
  - name: installer
    image: ubuntu
    securityContext:
      privileged: true
    command:
      - nsenter
      - -at
      - '1'
      - --
      - sh
      - -c
      - "/usr/local/bin/nvidia-container-first-boot"
  restartPolicy: Never

노드 재부팅 또는 호스트 유지보수 후 NVIDIA 드라이버 이미지가 손실되는 경우에도 이 문제가 발생할 수 있습니다. 이는 임시 로컬 SSD 스토리지를 사용하는 컨피덴셜 노드 또는 GPU가 있는 노드에서 발생할 수 있습니다. 이 경우 GKE는 노드에 nvidia-installer-driver 컨테이너 이미지를 미리 로드하고 첫 부팅 시 부팅 디스크에서 로컬 SSD로 이동합니다.

호스트 유지보수 이벤트가 있었는지 확인하려면 다음 로그 필터를 사용하세요.

resource.type="gce_instance"
protoPayload.serviceName="compute.googleapis.com"
log_id("cloudaudit.googleapis.com/system_event")

호스트 유지보수 문제를 완화하려면 GKE 버전을 다음 버전 중 하나로 업그레이드하세요.

  • 1.27.13-gke.1166000 이상
  • 1.29.3-gke.1227000 이상
  • 1.28.8-gke.1171000 이상

오류: GPU 드라이버 설치 디렉터리를 구성하지 못했습니다. lib64 오버레이를 만들지 못했습니다. /usr/local/nvidia/lib64 디렉터리를 만들지 못했습니다. mkdir /usr/local/nvidia/lib64: 디렉터리가 아닙니다.

NCCL fastsocket이 사용 설정된 경우 GPU 기기 플러그인 내의 GPU 드라이버 설치 프로그램 컨테이너에서 다음 오류가 발생합니다.

failed to configure GPU driver installation dirs: failed to create lib64 overlay: failed to create dir /usr/local/nvidia/lib64: mkdir /usr/local/nvidia/lib64: not a directory.

이 문제는 GKE 1.28 및 1.29를 실행하는 클러스터와 노드에서만 발생합니다.

이 문제는 GPU 드라이버 설치 프로그램과 NCCL fastsocket 경합 상태로 인해 발생합니다.

이 문제를 완화하려면 GKE 버전을 다음 버전 중 하나로 업그레이드하세요.

  • 1.28.8-gke.1206000 이상
  • 1.29.3-gke.1344000 이상

오류: nvidia0의 기기를 가져오지 못했습니다. nvidia0 기기를 찾을 수 없습니다.

다음 오류는 마이너 0이 있는 GPU에 대해 XID 62 및 RmInitAdapter가 실패했음을 나타냅니다.

Failed to get device for nvidia0: device nvidia0 not found.

NVIDIA 드라이버 버전 525.105.17에는 통신 오류(XID)를 일으키고 GPU가 제대로 초기화되지 않아 GPU 초기화에 실패할 수 있는 버그가 있습니다.

이 문제를 해결하려면 NVIDIA 드라이버를 드라이버 버전 525.110.11 이상으로 업그레이드하세요.

다음 단계

추가 지원이 필요하면 Cloud Customer Care에 문의하세요.