

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# GPU 드라이버 업그레이드 중 중단 최소화 모범 사례
<a name="inference-gpu-drivers"></a>

SageMaker AI Model Deployment는 시간 경과에 따라 실시간, 배치 및 비동기식 추론 옵션에 대한 ML 인스턴스의 GPU 드라이버를 업그레이드하여 고객이 드라이버 공급자의 개선 사항에 액세스할 수 있도록 합니다. 아래에서 각 추론 옵션에 지원되는 GPU 버전을 확인할 수 있습니다. 드라이버 버전에 따라 모델이 GPU와 상호 작용하는 방식이 달라질 수 있습니다. 다음은 애플리케이션이 다양한 드라이버 버전에서 작동하는 방식을 이해하는 데 도움이 되는 전략입니다.

## 현재 버전과 지원되는 인스턴스 패밀리
<a name="inference-gpu-drivers-versions"></a>

Amazon SageMaker AI Inference는 다음 드라이버 및 인스턴스 패밀리를 지원합니다.



- **실시간**
  - **GPU:** NVIDIA
  - **드라이버 버전:** 470 / **CUDA 버전:** CUDA 11.4 / **인스턴스 유형:** ml.p2.\*, ml.p3.\*, ml.p4d.\*, ml.p4de.\*, ml.g4dn.\*, ml.g5.\*
  - **드라이버 버전:** 535 / **CUDA 버전:** CUDA 12.2 / **인스턴스 유형:** ml.p5.\*, ml.g6.\*
  - **드라이버 버전:** 550 / **CUDA 버전:** CUDA 12.4 / **인스턴스 유형:** ml.p5e.\*, ml.p5en.\*
  - **드라이버 버전:** 580 / **CUDA 버전:** CUDA 13.0 / **인스턴스 유형:** ml.p6.\*, ml.g7e.\*

- **비동기식 추론**
  - **GPU:** NVIDIA
  - **드라이버 버전:** 470 / **CUDA 버전:** CUDA 11.4 / **인스턴스 유형:** ml.p2.\*, ml.p3.\*, ml.p4d.\*, ml.p4de.\*, ml.g4dn.\*, ml.g5\*
  - **드라이버 버전:** 470 / **CUDA 버전:** CUDA 12.2 / **인스턴스 유형:** ml.p5.\*, ml.g6.\*
  - **드라이버 버전:** 550 / **CUDA 버전:** CUDA 12.4 / **인스턴스 유형:** ml.p5e.\*, ml.p5en.\*
  - **드라이버 버전:** 580 / **CUDA 버전:** CUDA 13.0 / **인스턴스 유형:** ml.p6.\*, ml.g7e.\*

- **배치**
  - **GPU:** NVIDIA
  - **드라이버 버전:** 470
  - **CUDA 버전:** CUDA 11.4
  - **인스턴스 유형:** ml.p2.\*, ml.p3.\*, ml.p4d.\*, ml.p4de.\*, ml.g4dn.\*, ml.g5\*



## GPU 기능으로 모델 컨테이너 문제 해결하기
<a name="inference-gpu-drivers-troubleshoot"></a>

GPU 워크로드를 실행할 때 문제가 발생하는 경우 다음 지침을 참조하세요.

### GPU 카드 감지 실패 또는 NVIDIA 초기화 오류
<a name="collapsible-section-0"></a>

Docker 컨테이너에서 `nvidia-smi`(NVIDIA 시스템 관리 인터페이스) 명령을 실행합니다. NVIDIA 시스템 관리 인터페이스가 GPU 탐지 오류 또는 NVIDIA 초기화 오류를 감지하면 다음 오류 메시지를 반환합니다.

```
Failed to initialize NVML: Driver/library version mismatch
```

사용 사례 기준으로 다음 모범 사례에 따라 장애 또는 오류를 해결합니다.
+ [자체(BYO) 모델 컨테이너를 가져오는 경우](#collapsible-byoc) 드롭다운에 설명된 모범 사례 권장 사항을 준수하세요.
+ [CUDA 호환성 계층을 사용하는 경우](#collapsible-cuda-compat) 드롭다운에 설명된 모범 사례 권장 사항을 준수하세요.

자세한 내용은 NVIDIA 웹 사이트에 있는 [NVIDIA 시스템 관리 인터페이스 페이지](https://developer.nvidia.com/nvidia-system-management-interface)에서 확인하세요.

### `CannotStartContainerError`
<a name="collapsible-section-cannot-start-container"></a>

 GPU 인스턴스가 Docker 컨테이너의 CUDA 버전과 호환되지 않는 NVIDIA 드라이버 버전을 사용하는 경우 엔드포인트 배포가 실패하고 다음 오류 메시지가 표시됩니다.

```
 Failure reason CannotStartContainerError. Please ensure the model container for variant <variant_name> starts correctly when invoked with 'docker run <image> serve'
```

사용 사례 기준으로 다음 모범 사례에 따라 장애 또는 오류를 해결합니다.
+ [컨테이너가 사용하는 드라이버가 ML GPU 인스턴스 버전보다 높습니다.](#collapsible-driver-dependency-higher) 드롭다운에 설명된 모범 사례 권장 사항을 준수하세요.
+ [CUDA 호환성 계층을 사용하는 경우](#collapsible-cuda-compat) 드롭다운에 설명된 모범 사례 권장 사항을 준수하세요.

## 일치하지 않는 드라이버 버전으로 작업 시 모범 사례
<a name="inference-gpu-drivers-cuda-toolkit-updates"></a>

다음은 GPU 드라이버를 업데이트하는 방법에 대한 정보입니다.

### 컨테이너가 사용하는 드라이버가 ML GPU 인스턴스 버전보다 낮습니다.
<a name="collapsible-driver-dependency-lower"></a>

아무 조치도 필요하지 않습니다. NVIDIA에는 하위 버전 호환성이 있습니다.

### 컨테이너가 사용하는 드라이버가 ML GPU 인스턴스 버전보다 높습니다.
<a name="collapsible-driver-dependency-higher"></a>

부 버전 차이인 경우 별도의 조치가 필요하지 않습니다. NVIDIA에는 부 버전 상위 버전 호환성이 있습니다.

메이저 버전 차이인 경우 CUDA 호환성 패키지를 설치해야 합니다. NVIDIA 설명서에 있는 [CUDA 호환성 패키지](https://docs.nvidia.com/deploy/cuda-compatibility/index.html)를 참조하시기 바랍니다.

**중요**  
CUDA 호환성 패키지에는 하위 버전 호환성이 없으므로 인스턴스의 드라이버 버전이 CUDA 호환성 패키지 버전보다 높으면 비활성화해야 합니다.

### 자체(BYO) 모델 컨테이너를 가져오는 경우
<a name="collapsible-byoc"></a>

호스트 NVIDIA 드라이버 버전과 충돌을 일으킬 수 있는 NVIDIA 드라이버 패키지가 이미지에 번들로 포함되어 있지 않은지 확인하세요.

### CUDA 호환성 계층을 사용하는 경우
<a name="collapsible-cuda-compat"></a>

플랫폼 Nvidia 드라이버 버전이 모델 컨테이너에 설치된 CUDA 호환성 패키지 버전을 지원하는지 확인하려면 [CUDA 설명서](https://docs.nvidia.com/deploy/cuda-compatibility/index.html#use-the-right-compat-package)를 참조하세요. 플랫폼 Nvidia 드라이버 버전이 CUDA 호환성 패키지 버전을 지원하지 않는 경우 모델 컨테이너 이미지에서 CUDA 호환성 패키지를 비활성화하거나 제거할 수 있습니다. 최신 Nvidia 드라이버 버전에서 CUDA 호환성 라이브러리 버전을 지원하는 경우, (`ENTRYPOINT` 스크립트에서) 아래 코드 조각을 컨테이너 시작 쉘 스크립트에 추가하여 향후 호환성이 감지된 Nvidia 드라이버 버전 기준으로 CUDA 호환성 패키지를 활성화할 것을 추천합니다.

이 스크립트는 모델 컨테이너에 배포된 호스트에서 탐지된 Nvidia 드라이버 버전을 기반으로 CUDA 호환성 패키지 사용을 동적으로 전환하는 방법을 보여줍니다. SageMaker가 최신 Nvidia 드라이버 버전을 출시할 때 CUDA 애플리케이션이 새 드라이버에서 네이티브 지원되는 경우 설치된 CUDA 호환성 패키지를 자동으로 비활성화할 수 있습니다.

```
#!/bin/bash

verlt() {
    [ "$1" = "$2" ] && return 1 || [ "$1" = "$(echo -e "$1\n$2" | sort -V | head -n1)" ]
}

if [ -f /usr/local/cuda/compat/libcuda.so.1 ]; then
    CUDA_COMPAT_MAX_DRIVER_VERSION=$(readlink /usr/local/cuda/compat/libcuda.so.1 | cut -d'.' -f 3-)
    echo "CUDA compat package should be installed for NVIDIA driver smaller than ${CUDA_COMPAT_MAX_DRIVER_VERSION}"
    NVIDIA_DRIVER_VERSION=$(sed -n 's/^NVRM.*Kernel Module *\([0-9.]*\).*$/\1/p' /proc/driver/nvidia/version 2>/dev/null || true)
    echo "Current installed NVIDIA driver version is ${NVIDIA_DRIVER_VERSION}"
    if verlt $NVIDIA_DRIVER_VERSION $CUDA_COMPAT_MAX_DRIVER_VERSION; then
        echo "Adding CUDA compat to LD_LIBRARY_PATH"
        export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH
        echo $LD_LIBRARY_PATH
    else
        echo "Skipping CUDA compat setup as newer NVIDIA driver is installed"
    fi
else
    echo "Skipping CUDA compat setup as package not found"
fi
```