Python/Debugging

onnxruntime GPU 인식이 안되는 경우 해결 방법

jimmy_AI 2023. 9. 16. 17:42
반응형

문제 개요

onnx 파일로 저장된 모델을 사용하기 위하여 onnxruntime 모듈을 활용할 때,

아래 코드와 같이 CUDA GPU를 사용하도록 지정하였음에도

GPU 인식이 안되어 강제로 CPU만 사용되는 경우가 나타날 수 있습니다.

import onnxruntime

onnx_session = onnxruntime.InferenceSession("model.onnx", providers=['CUDAExecutionProvider'])

 

이런 경우에는 GPU 사용이 불가능한 경우를 안내하기 위하여

다음과 같은 warning 메시지가 출력되기도 합니다.

UserWarning: Specified provider 'CUDAExecutionProvider' is not in available provider names.Available providers: 'CPUExecutionProvider'

 

사용 중인 디바이스 종류를 직접 출력해보면 CPU로 등장하고,

inference 과정도 CPU로만 진행되게 됩니다.

print(onnxruntime.get_device()) # CPU

 

 

해결법 1: 일반 onnxruntime가 아닌 onnxruntime-gpu 설치

onnxruntime 모듈은 CPU 전용 / GPU 전용 모듈이 나누어져 있습니다.

 

!pip install onnxruntime 명령어로 설치되었던 모듈은 CPU 전용 모듈로,

이런 경우라면 !pip install onnxruntime-gpu 명령어로 모듈을 재설치하면

해결이 가능할 수도 있습니다.

 

반응형

 

해결법 2: CUDA / cuDNN / onnxruntime 간의 버전 맞추기

GPU 전용 모듈을 설치했음에도 문제가 지속된다면

CUDA, cuDNN 및 onnxruntime 간의 버전 alignment가 맞지 않아서

발생하는 문제일 수도 있습니다.

 

아래의 공식 사이트에서는 호환되는 CUDA-cuDNN-onnxruntime 버전의 조합

알려주고 있습니다.

 

NVIDIA - CUDA

Instructions to execute ONNX Runtime applications with CUDA

onnxruntime.ai

 

설치된 CUDA 및 cuDNN 버전과 호환되지 않는 onnxruntime 버전이 설치되어 있다면
호환되는 onnxruntime 버전의 모듈로 재설치를 진행해주면 되고,

CUDA에 알맞은 cuDNN 버전이 설치되지 않은 경우라면
NVIDIA 공식 홈페이지에서 해당하는 버전의 cuDNN을 설치해주시면 해결될 수 있습니다.