Amazon EC2에서 NVIDIA GPU 및 GPU 드라이버 통신 문제를 해결하려면 어떻게 해야 합니까?
제 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 유형은 GPU입니다. 하지만 NVIDIA GPU 또는 GPU 드라이버와 통신할 수 없습니다.
해결 방법
GPU 또는 GPU 드라이버와 통신하는 데 사용하는 명령 또는 도구에 따라 다음과 같은 오류 메시지가 나타날 수 있습니다.
nvidia-smi의 경우 다음과 같은 오류 메시지가 나타납니다.
"NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running."
**jax.devices()**의 경우 터미널에 다음과 같은 오류 메시지가 나타납니다.
"WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.) [CpuDevice(id=0)]"
일반적으로 위의 오류 메시지는 하드웨어, 드라이버 및 라이브러리 간의 호환성 문제로 인해 나타납니다. GPU와 인스턴스 유형을 함께 사용하려면 운영 체제(OS)에 GPU 드라이버 및 관련 라이브러리를 설치해야 합니다. 또한 GPU 및 GPU 드라이버와 통신하는 도구 및 라이브러리는 GPU와 호환되어야 합니다.
jax.devices() 오류가 발생했는지 확인하려면 다음 명령을 실행합니다.
python import jax jax.devices()
출력 예시:
$ python Python 3.9.22 (main, Apr 29 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import jax >>> jax.devices() WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.) [CpuDevice(id=0)]
사용한 인스턴스 유형을 AMI가 지원하는지 확인
NVDIA GPU 드라이버에 AWS Deep Learning AMI(DLAMI)를 사용하는 것이 모범 사례입니다. 사용하려는 DLAMI의 릴리스 노트를 확인하여 구성과 호환되는지 확인하십시오.
참고: NVIDIA 드라이버에는 독점 드라이버 또는 오픈 소스 드라이버를 사용하는 두 가지 유형의 DLAMI가 있습니다. 각 DLAMI는 특정 인스턴스 유형을 지원합니다.
CUDA 호환 라이브러리를 설치했는지 확인
**jax.devices()**를 실행하려고 했는데 오류가 발생한다면 CUDA 호환 JAX 라이브러리가 설치되지 않았을 수 있습니다.
라이브러리를 설치했는지 확인하려면 다음 명령을 실행합니다.
pip list|grep jax
출력 예시:
$ pip list|grep jax jax 0.4.30 jaxlib 0.4.30
CUDA 호환 라이브러리가 명령 출력에 없는 경우 다음 명령을 실행하여 JAX 라이브러리를 설치합니다.
pip install -U "jax[cuda12]"
참고: **jax[cuda12]**를 사용 중인 CUDA 버전으로 바꾸십시오.
그런 다음 pip list 명령을 다시 실행하여 라이브러리가 제대로 설치되었는지 확인합니다.
출력 예시:
$ pip list|grep jax jax 0.4.30 jax-cuda12-pjrt 0.4.30 jax-cuda12-plugin 0.4.30 jaxlib 0.4.30
"nvcc --version" 및 "nvidia-smi"의 CUDA 버전이 동일한지 확인
먼저 다음 명령을 실행합니다.
nvcc --version
출력 예시:
$ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2024 NVIDIA Corporation Built on Wed_Apr_17_19:19:55_PDT_2024 Cuda compilation tools, release 12.5, V12.5.40 Build cuda_12.5.r12.5/compiler.34177558_0
그리고 나서 다음 명령을 실행합니다.
nvidia-smi
출력 예시:
$ nvidia-smi Mon Apr 21 10:52:36 2025 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 CUDA Version: 12.2 | |-----------------------------------------+----------------------+----------------------+
명령 출력의 CUDA 버전을 비교합니다. 위의 예에서는 CUDA 12.2 이하 버전을 NVIDIA 드라이버 535.183.01에서만 사용할 수 있기 때문에 문제가 발생했습니다. 하지만 이 구성에서는 CUDA 버전 12.5를 사용합니다.
이 문제를 해결하려면 OS에 따라 다음 명령을 실행하여 CUDA 12.5를 제거하고 CUDA 12.2를 설치합니다.
Amazon Linux 2023(AL2023), Red Hat Enterprise Linux(RHEL) 8 또는 RHEL 9:
sudo dnf remove cuda-toolkit-12-5 sudo dnf install cuda-toolkit-12-2
Amazon Linux 2(AL2) 또는 RHEL 7:
sudo yum remove cuda-toolkit-12-5 sudo yum install cuda-toolkit-12-2
Ubuntu:
sudo apt remove cuda-toolkit-12-5 sudo apt install cuda-toolkit-12-2
CUDA 12.2를 설치한 후 다음 명령을 실행하여 **jax.devices()**를 사용하여 GPU와 통신할 수 있는지 확인합니다.
import jax jax.devices() [cuda(id=0)]
GPU 호환성 문제를 방지하려면 최적화된 NVIDIA 드라이버, 구성된 CUDA 도구 키트, 향상된 지원 및 호환성을 제공하는 DLAMI를 사용하는 것이 모범 사례입니다.
(선택 사항) 커널 및 드라이버 업그레이드
중요: 지원되는 Amazon Machine Image(AMI)를 사용하는 경우 NVIDIA 드라이버는 AMI에 이미 설치되어 있으므로 수동으로 설치할 필요가 없습니다.
설치된 드라이버 및 패키지 버전과의 호환성을 유지하기 위해 커널 버전을 업데이트하는 것은 모범 사례가 아닙니다. 하지만 보안 패치로 인해 커널 버전을 업데이트해야 하는 경우에는 다음 명령을 실행하여 커널을 업데이트하십시오.
sudo dnf versionlock delete kernel* sudo dnf update -y
참고: 위의 예제 명령은 AWS Deep Learning Base AMI(Amazon Linux 2023)용입니다.
NVIDIA 드라이버를 수동으로 설치하거나 업데이트하려면 설치 옵션을 참조하십시오.
통신이 예상대로 작동하는지 확인
인스턴스가 GPU와 통신할 수 있는지 테스트하려면 다음 명령 중 하나를 실행합니다.
nvidia-smi
-또는-
import jax jax.devices()
출력 예시:
$ nvidia-smi Wed May 21 11:04:43 2025 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 570.133.20 Driver Version: 570.133.20 CUDA Version: 12.8 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA A10G On | 00000000:00:1E.0 Off | 0 | | 0% 32C P8 10W / 300W | 0MiB / 23028MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+
>>> import jax >>> jax.devices() [cuda(id=0)]
관련 정보
관련 콘텐츠
- 질문됨 일 년 전
