GPU 드라이버 업그레이드 중 중단 최소화 모범 사례 - 아마존 SageMaker

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

GPU 드라이버 업그레이드 중 중단 최소화 모범 사례

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

현재 버전과 지원되는 인스턴스 패밀리

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

Service GPU 드라이버 버전 인스턴스 타입
실시간 NVIDIA 470.57.02 ml.p2.*, ml.p3.*, ml.p4d.*, ml.p4de.*, ml.g4dn.*, ml.g5.*
535.54.03 ml.p5.*, ml.g6. *
배치 NVIDIA 470.57.02 ml.p2.*, ml.p3.*, ml.p4d.*, ml.p4de.*, ml.g4dn.*, ml.g5*
비동기식 추론 NVIDIA 470.57.02 ml.p2.*, ml.p3.*, ml.p4d.*, ml.p4de.*, ml.g4dn.*, ml.g5*
535.54.03 ml.p5.*, ml.g6. *

GPU 기능으로 모델 컨테이너 문제 해결하기

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

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

Failed to initialize NVML: Driver/library version mismatch

사용 사례 기준으로 다음 모범 사례에 따라 장애 또는 오류를 해결합니다.

자세한 내용은 NVIDIA 웹 사이트에 있는 NVIDIA 시스템 관리 인터페이스 페이지에서 확인하세요.

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'

사용 사례 기준으로 다음 모범 사례에 따라 장애 또는 오류를 해결합니다.

일치하지 않는 드라이버 버전으로 작업 시 모범 사례

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

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

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

메이저 버전 차이인 경우 CUDA 호환성 패키지를 설치해야 합니다. NVIDIA 설명서에 있는 CUDA 호환성 패키지를 참조하시기 바랍니다.

중요

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

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

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

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

#!/bin/bash verlte() { [ "$1" = "$2" ] && return 1 || [ "$2" = "`echo -e "$1\n$2" | sort -V | head -n1`" ] } if [ -f /usr/local/cuda/compat/libcuda.so.1 ]; then cat /usr/local/cuda/version.txt CUDA_COMPAT_MAX_DRIVER_VERSION=$(readlink /usr/local/cuda/compat/libcuda.so.1 |cut -d'.' -f 3-) echo "CUDA compat package requires Nvidia driver ⩽${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 [ $(verlte $CUDA_COMPAT_MAX_DRIVER_VERSION $NVIDIA_DRIVER_VERSION) ]; then echo "Setup CUDA compatibility libs path to LD_LIBRARY_PATH" export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH echo $LD_LIBRARY_PATH else echo "Skip CUDA compat libs setup as newer Nvidia driver is installed" fi else echo "Skip CUDA compat libs setup as package not found" fi