1. 이슈 상황
AWS EC2 인스턴스(Ubuntu 24.04, g5.12xlarge)를 인스턴스를 중지(Stop) 후 재시작(Start)했더니 드라이버가 사라지는 현상 발생.
- nvidia-fabricmanager-570 패키지가 apt에서 재설치되지 않음 (no installation candidate)
- 드라이버 관련 의존성 충돌로 인해 nvidia-smi가 작동하지 않거나 드라이버 자체가 제거됨
- CUDA는 설치되어 있는데 GPU 장치를 인식하지 못함
2. 원인 분석
# 현재 설치된 드라이버/라이브러리 확인
dpkg -l | grep -E 'nvidia|cuda'
$ dpkg -l | grep -E 'nvidia|cuda'
ii cuda-cccl-12-8 12.8.90-1 amd64 CUDA CCCL
ii cuda-cccl-12-9 12.9.27-1 amd64 CUDA CCCL
ii cuda-command-line-tools-12-8 12.8.1-1 amd64 CUDA command-line tools
ii cuda-command-line-tools-12-9 12.9.1-1 amd64 CUDA command-line tools
ii cuda-compiler-12-8 12.8.1-1 amd64 CUDA compiler
ii cuda-compiler-12-9 12.9.1-1 amd64 CUDA compiler
ii cuda-crt-12-8 12.8.93-1 amd64 CUDA crt
ii cuda-crt-12-9 12.9.86-1 amd64 CUDA crt
ii cuda-cudart-12-8 12.8.90-1 amd64 CUDA Runtime native Libraries
ii cuda-cudart-12-9 12.9.79-1 amd64 CUDA Runtime native Libraries
ii cuda-cudart-dev-12-8 12.8.90-1 amd64 CUDA Runtime native dev links, headers
ii cuda-cudart-dev-12-9 12.9.79-1 amd64 CUDA Runtime native dev links, headers
ii cuda-cuobjdump-12-8 12.8.90-1 amd64 CUDA cuobjdump
ii cuda-cuobjdump-12-9 12.9.82-1 amd64 CUDA cuobjdump
ii cuda-cupti-12-8 12.8.90-1 amd64 CUDA profiling tools runtime libs.
ii cuda-cupti-12-9 12.9.79-1 amd64 CUDA profiling tools runtime libs.
ii cuda-cupti-dev-12-8 12.8.90-1 amd64 CUDA profiling tools interface.
ii cuda-cupti-dev-12-9 12.9.79-1 amd64 CUDA profiling tools interface.
ii cuda-cuxxfilt-12-8 12.8.90-1 amd64 CUDA cuxxfilt
ii cuda-cuxxfilt-12-9 12.9.82-1 amd64 CUDA cuxxfilt
ii cuda-documentation-12-8 12.8.90-1 amd64 CUDA documentation
ii cuda-documentation-12-9 12.9.88-1 amd64 CUDA documentation
ii cuda-driver-dev-12-8 12.8.90-1 amd64 CUDA Driver native dev stub library
ii cuda-driver-dev-12-9 12.9.79-1 amd64 CUDA Driver native dev stub library
ii cuda-gdb-12-8 12.8.90-1 amd64 CUDA-GDB
ii cuda-gdb-12-9 12.9.79-1 amd64 CUDA-GDB
ii cuda-keyring 1.1-1 all GPG keyring for the CUDA repository
ii cuda-libraries-12-8 12.8.1-1 amd64 CUDA Libraries 12.8 meta-package
ii cuda-libraries-12-9 12.9.1-1 amd64 CUDA Libraries 12.9 meta-package
ii cuda-libraries-dev-12-8 12.8.1-1 amd64 CUDA Libraries 12.8 development meta-package
ii cuda-libraries-dev-12-9 12.9.1-1 amd64 CUDA Libraries 12.9 development meta-package
ii cuda-nsight-12-8 12.8.90-1 amd64 CUDA nsight
ii cuda-nsight-12-9 12.9.79-1 amd64 CUDA nsight
ii cuda-nsight-compute-12-8 12.8.1-1 amd64 NVIDIA Nsight Compute
ii cuda-nsight-compute-12-9 12.9.1-1 amd64 NVIDIA Nsight Compute
ii cuda-nsight-systems-12-8 12.8.1-1 amd64 NVIDIA Nsight Systems
ii cuda-nsight-systems-12-9 12.9.1-1 amd64 NVIDIA Nsight Systems
ii cuda-nvcc-12-8 12.8.93-1 amd64 CUDA nvcc
ii cuda-nvcc-12-9 12.9.86-1 amd64 CUDA nvcc
ii cuda-nvdisasm-12-8 12.8.90-1 amd64 CUDA disassembler
ii cuda-nvdisasm-12-9 12.9.88-1 amd64 CUDA disassembler
ii cuda-nvml-dev-12-8 12.8.90-1 amd64 NVML native dev links, headers
ii cuda-nvml-dev-12-9 12.9.79-1 amd64 NVML native dev links, headers
ii cuda-nvprof-12-8 12.8.90-1 amd64 CUDA Profiler tools
ii cuda-nvprof-12-9 12.9.79-1 amd64 CUDA Profiler tools
ii cuda-nvprune-12-8 12.8.90-1 amd64 CUDA nvprune
ii cuda-nvprune-12-9 12.9.82-1 amd64 CUDA nvprune
ii cuda-nvrtc-12-8 12.8.93-1 amd64 NVRTC native runtime libraries
ii cuda-nvrtc-12-9 12.9.86-1 amd64 NVRTC native runtime libraries
ii cuda-nvrtc-dev-12-8 12.8.93-1 amd64 NVRTC native dev links, headers
ii cuda-nvrtc-dev-12-9 12.9.86-1 amd64 NVRTC native dev links, headers
ii cuda-nvtx-12-8 12.8.90-1 amd64 NVIDIA Tools Extension
ii cuda-nvtx-12-9 12.9.79-1 amd64 NVIDIA Tools Extension
ii cuda-nvvm-12-8 12.8.93-1 amd64 CUDA nvvm
ii cuda-nvvm-12-9 12.9.86-1 amd64 CUDA nvvm
ii cuda-nvvp-12-8 12.8.93-1 amd64 CUDA Profiler tools
ii cuda-nvvp-12-9 12.9.79-1 amd64 CUDA Profiler tools
ii cuda-opencl-12-8 12.8.90-1 amd64 CUDA OpenCL native Libraries
ii cuda-opencl-12-9 12.9.19-1 amd64 CUDA OpenCL native Libraries
ii cuda-opencl-dev-12-8 12.8.90-1 amd64 CUDA OpenCL native dev links, headers
ii cuda-profiler-api-12-8 12.8.90-1 amd64 CUDA Profiler API
ii cuda-profiler-api-12-9 12.9.79-1 amd64 CUDA Profiler API
ii cuda-repo-ubuntu2404-12-8-local 12.8.1-570.124.06-1 amd64 cuda repository configuration files
ii cuda-repo-ubuntu2404-12-9-local 12.9.1-575.57.08-1 amd64 cuda repository configuration files
ii cuda-sandbox-dev-12-9 12.9.19-1 amd64 nvsandboxutils native dev links, headers
ii cuda-sanitizer-12-8 12.8.93-1 amd64 CUDA Sanitizer
ii cuda-sanitizer-12-9 12.9.79-1 amd64 CUDA Sanitizer
ii cuda-toolkit-12-8 12.8.1-1 amd64 CUDA Toolkit 12.8 meta-package
ii cuda-toolkit-12-8-config-common 12.8.90-1 all Common config package for CUDA Toolkit 12.8.
ii cuda-toolkit-12-9 12.9.1-1 amd64 CUDA Toolkit 12.9 meta-package
ii cuda-toolkit-12-9-config-common 12.9.79-1 all Common config package for CUDA Toolkit 12.9.
ii cuda-toolkit-12-config-common 12.9.79-1 all Common config package for CUDA Toolkit 12.
ii cuda-toolkit-config-common 12.9.79-1 all Common config package for CUDA Toolkit.
ii cuda-tools-12-8 12.8.1-1 amd64 CUDA Tools meta-package
ii cuda-tools-12-9 12.9.1-1 amd64 CUDA Tools meta-package
ii cuda-visual-tools-12-8 12.8.1-1 amd64 CUDA visual tools
ii cuda-visual-tools-12-9 12.9.1-1 amd64 CUDA visual tools
ii datacenter-gpu-manager-4-cuda12 1:4.2.3 amd64 NVIDIA® Datacenter GPU Management binaries supporting CUDA12 environments
ii datacenter-gpu-manager-4-proprietary-cuda12 1:4.2.3 amd64 NVIDIA® Datacenter GPU Management proprietary CUDA12 binaries
ii libnvidia-container-tools 1.17.7-1 amd64 NVIDIA container runtime library (command-line tools)
ii libnvidia-container1:amd64 1.17.7-1 amd64 NVIDIA container runtime library
hi libnvidia-nscq-570 570.133.20-1 amd64 NVSwitch Configuration and Query library
ii nvidia-container-toolkit 1.17.7-1 amd64 NVIDIA Container toolkit
ii nvidia-container-toolkit-base 1.17.7-1 amd64 NVIDIA Container Toolkit Base
ii nvidia-driver-local-repo-ubuntu2404-550.163.01 1.0-1 amd64 nvidia-driver-local repository configuration files
ii nvidia-driver-local-repo-ubuntu2404-570.172.08 1.0-1 amd64 nvidia-driver-local repository configuration files
hi nvidia-fabricmanager-570 570.133.20-1 amd64 Fabric Manager for NVSwitch based systems.
$ nvidia-smi topo -m
GPU0 GPU1 GPU2 GPU3 CPU Affinity NUMA Affinity GPU NUMA ID
GPU0 X PHB PHB PHB 0-47 0 N/A
GPU1 PHB X PHB PHB 0-47 0 N/A
GPU2 PHB PHB X PHB 0-47 0 N/A
GPU3 PHB PHB PHB X 0-47 0 N/A
Legend:
X = Self
SYS = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
PHB = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
PXB = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
PIX = Connection traversing at most a single PCIe bridge
NV# = Connection traversing a bonded set of # NVLinks
1. Fabric Manager는 NVSwitch 기반 시스템에만 필요
- AWS G5 인스턴스는 A10G GPU 4개가 PCIe 기반으로 연결됨
- nvidia-smi topo -m 결과에서도 PHB(PCIe Host Bridge)만 표시됨
- NVLink / NVSwitch 없음 → Fabric Manager 불필요
- NUMA Affinity도 모두 0 → 단일 NUMA 노드에 붙은 PCIe 디바이스임
2. FabricManager가 apt에서 누락되면 재설치 불가 & 충돌 유발
- /var/nvidia-driver-local-repo-* 경로에 해당 .deb 파일 없음
- CUDA repo에 등록된 fabricmanager만을 의존하므로 apt는 "설치 후보 없음" 오류 발생
3. 이전 버전(550) 리포지터리와 충돌
- /var/nvidia-driver-local-repo-ubuntu2404-550.xxx.xx 와 /570.xxx.xx 가 동시에 존재
- apt가 GPG 키 또는 우선순위 문제로 특정 패키지를 제거하거나 업데이트 중단
4. 인스턴스를 중지(stop) 후 시작(start)하면 인스턴스가 다른 하드웨어 노드로 이동하여 GPU 드라이브 커널 바인딩이 깨짐
3. 해결 과정
1. 모든 NVIDIA 관련 패키지 정리
sudo apt-get --purge remove 'nvidia-*' 'cuda-*'
sudo apt-get autoremove
sudo apt-get autoclean
2. NVIDIA 드라이버 재설치
다음은 GPU 기반 인스턴스에서 사용할 수 있는 주요 NVIDIA 드라이버 유형입니다.
Tesla 드라이버
이러한 드라이버는 주로 컴퓨팅 워크로드를 위한 것입니다. 컴퓨팅 워크로드는 기계 학습을 위한 병렬화된 부동 소수점 계산과 고성능 컴퓨팅 애플리케이션을 위한 고속 푸리에 변환과 같은 컴퓨팅 작업에 GPU를 사용합니다.
GRID 드라이버
이러한 드라이버는 3D 모델 또는 고해상도 비디오와 같은 콘텐츠를 렌더링하는 전문 시각화 애플리케이션에 최적의 성능을 제공하는 것으로 인증됩니다. 두 가지 모드를 지원하도록 GRID 드라이버를 구성할 수 있습니다. Quadro 가상 워크스테이션은 GPU당 4개의 4K 디스플레이에 대한 액세스를 제공합니다. GRID vApp은 RDSH 앱 호스팅 기능을 제공합니다.
게임 드라이버
이러한 드라이버는 게임을 위한 최적화 기능을 포함하고 있으며 성능 향상을 제공하기 위해 자주 업데이트됩니다. 이러한 드라이버는 GPU당 단일 4K 디스플레이를 지원합니다.
구성된 모드
Windows에서 Tesla 드라이버는 TCC(Tesla 컴퓨팅 클러스터) 모드에서 실행되도록 구성됩니다. GRID 및 게임 드라이버는 WDDM(Windows 디스플레이 드라이버 모델) 모드에서 실행되도록 구성됩니다. TCC 모드에서 이 카드는 컴퓨팅 워크로드에 전용됩니다. WDDM 모드에서 이 카드는 컴퓨팅 워크로드와 그래픽 워크로드를 모두 지원합니다.

wget https://us.download.nvidia.com/tesla/570.172.08/nvidia-driver-local-repo-ubuntu2404-570.172.08_1.0-1_amd64.deb
sudo dpkg -i nvidia-driver-local-repo-ubuntu2404-570.172.08_1.0-1_amd64.deb
sudo apt update
* 안정적인 사용을 위해 cuda 12.8를 지원하는 570.172.08로 설치함

설치 결과 확인
$ dpkg -l | grep -E 'nvidia|cuda'
ii datacenter-gpu-manager-4-cuda12 1:4.2.3 amd64 NVIDIA® Datacenter GPU Management binaries supporting CUDA12 environments
ii datacenter-gpu-manager-4-proprietary-cuda12 1:4.2.3 amd64 NVIDIA® Datacenter GPU Management proprietary CUDA12 binaries
ii nvidia-driver-local-repo-ubuntu2404-570.172.08 1.0-1 amd64 nvidia-driver-local repository configuration files
3. CUDA 재설치
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin
sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda-repo-ubuntu2404-12-8-local_12.8.1-570.124.06-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2404-12-8-local_12.8.1-570.124.06-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2404-12-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-8
$ dpkg -l | grep -E 'nvidia|cuda'
ii cuda-cccl-12-8 12.8.90-1 amd64 CUDA CCCL
ii cuda-command-line-tools-12-8 12.8.1-1 amd64 CUDA command-line tools
ii cuda-compiler-12-8 12.8.1-1 amd64 CUDA compiler
ii cuda-crt-12-8 12.8.93-1 amd64 CUDA crt
ii cuda-cudart-12-8 12.8.90-1 amd64 CUDA Runtime native Libraries
ii cuda-cudart-dev-12-8 12.8.90-1 amd64 CUDA Runtime native dev links, headers
ii cuda-cuobjdump-12-8 12.8.90-1 amd64 CUDA cuobjdump
ii cuda-cupti-12-8 12.8.90-1 amd64 CUDA profiling tools runtime libs.
ii cuda-cupti-dev-12-8 12.8.90-1 amd64 CUDA profiling tools interface.
ii cuda-cuxxfilt-12-8 12.8.90-1 amd64 CUDA cuxxfilt
ii cuda-documentation-12-8 12.8.90-1 amd64 CUDA documentation
ii cuda-driver-dev-12-8 12.8.90-1 amd64 CUDA Driver native dev stub library
ii cuda-gdb-12-8 12.8.90-1 amd64 CUDA-GDB
ii cuda-libraries-12-8 12.8.1-1 amd64 CUDA Libraries 12.8 meta-package
ii cuda-libraries-dev-12-8 12.8.1-1 amd64 CUDA Libraries 12.8 development meta-package
ii cuda-nsight-12-8 12.8.90-1 amd64 CUDA nsight
ii cuda-nsight-compute-12-8 12.8.1-1 amd64 NVIDIA Nsight Compute
ii cuda-nsight-systems-12-8 12.8.1-1 amd64 NVIDIA Nsight Systems
ii cuda-nvcc-12-8 12.8.93-1 amd64 CUDA nvcc
ii cuda-nvdisasm-12-8 12.8.90-1 amd64 CUDA disassembler
ii cuda-nvml-dev-12-8 12.8.90-1 amd64 NVML native dev links, headers
ii cuda-nvprof-12-8 12.8.90-1 amd64 CUDA Profiler tools
ii cuda-nvprune-12-8 12.8.90-1 amd64 CUDA nvprune
ii cuda-nvrtc-12-8 12.8.93-1 amd64 NVRTC native runtime libraries
ii cuda-nvrtc-dev-12-8 12.8.93-1 amd64 NVRTC native dev links, headers
ii cuda-nvtx-12-8 12.8.90-1 amd64 NVIDIA Tools Extension
ii cuda-nvvm-12-8 12.8.93-1 amd64 CUDA nvvm
ii cuda-nvvp-12-8 12.8.93-1 amd64 CUDA Profiler tools
ii cuda-opencl-12-8 12.8.90-1 amd64 CUDA OpenCL native Libraries
ii cuda-opencl-dev-12-8 12.8.90-1 amd64 CUDA OpenCL native dev links, headers
ii cuda-profiler-api-12-8 12.8.90-1 amd64 CUDA Profiler API
ii cuda-repo-ubuntu2404-12-8-local 12.8.1-570.124.06-1 amd64 cuda repository configuration files
ii cuda-sanitizer-12-8 12.8.93-1 amd64 CUDA Sanitizer
ii cuda-toolkit-12-8 12.8.1-1 amd64 CUDA Toolkit 12.8 meta-package
ii cuda-toolkit-12-8-config-common 12.8.90-1 all Common config package for CUDA Toolkit 12.8.
ii cuda-toolkit-12-config-common 12.8.90-1 all Common config package for CUDA Toolkit 12.
ii cuda-toolkit-config-common 12.8.90-1 all Common config package for CUDA Toolkit.
ii cuda-tools-12-8 12.8.1-1 amd64 CUDA Tools meta-package
ii cuda-visual-tools-12-8 12.8.1-1 amd64 CUDA visual tools
ii datacenter-gpu-manager-4-cuda12 1:4.2.3 amd64 NVIDIA® Datacenter GPU Management binaries supporting CUDA12 environments
ii datacenter-gpu-manager-4-proprietary-cuda12 1:4.2.3 amd64 NVIDIA® Datacenter GPU Management proprietary CUDA12 binaries
ii nvidia-driver-local-repo-ubuntu2404-570.172.08 1.0-1 amd64 nvidia-driver-local repository configuration files
4. stop/start 이후 GPU 초기화 스크립트 작성
1. 스크립트 작성
sudo vi /usr/local/bin/gpu-recover.sh
#!/bin/bash
echo "[GPU RECOVER] Unloading NVIDIA kernel modules..."
modprobe -r nvidia_uvm nvidia_drm nvidia_modeset nvidia || true
echo "[GPU RECOVER] Reloading NVIDIA kernel module..."
modprobe nvidia
echo "[GPU RECOVER] Checking NVIDIA GPU status..."
nvidia-smi
권한 부여
sudo chmod +x /usr/local/bin/gpu-recover.sh
2. systemd 서비스 등록
sudo vi /etc/systemd/system/gpu-recover.service
[Unit]
Description=Recover NVIDIA GPU after AWS instance restart
After=multi-user.target
ConditionPathExists=/usr/local/bin/gpu-recover.sh
[Service]
Type=oneshot
ExecStart=/usr/local/bin/gpu-recover.sh
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
3. systemd 적용 및 부팅 시 자동 실행 설정
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable gpu-recover.service
4. 테스트
# 수동 실행 (테스트용)
sudo systemctl start gpu-recover.service
# 로그 확인
journalctl -u gpu-recover.service
728x90
'공부하는삶 > MLOps' 카테고리의 다른 글
| [TIL] AWS EC2에서 학습하기 (0) | 2025.12.09 |
|---|---|
| [TIL] WanDB 시작하기 (0) | 2024.03.26 |
| 로컬 쿠버네티스 환경 설정하기 (1) | 2024.02.21 |
| [TIL] FastAPI()와 APIRouter() (0) | 2023.09.22 |
| [CS229] Lecture 4 - Perceptron, Exponential Family, GLM, Softmax Regression (0) | 2023.08.29 |
| WSL ElasticSearch 8.0 설치 (0) | 2023.08.29 |