Trouble/Others

ONNX 모델 GPU inference 안 될 때, onnxruntime-gpu 에러 날 때

침닦는수건 2024. 8. 7. 16:33
반응형

ONNX 모델 변환 완료한 뒤, python이든 c#이든 inference할 때 CPU로 도는 현상이 있다. 

 

nvidia-smi 찍어보면 메모리 사용량 뿐만 아니라 사용률 또한 0%로 계속 찍힌다.

 

이유는 onnxruntime과 CUDA, cuDNN 버전이 안맞아서다. 높은 확률로 현재 CUDA12 사용할 때일 것.

 

https://onnxruntime.ai/docs/install/

 

Install ONNX Runtime

Instructions to install ONNX Runtime on your target platform in your environment

onnxruntime.ai

 

홈페이지 안내사항을 읽어보면 코딱지만하게 기본 CUDA 설정이 11.X라고 적혀있다. 

 

즉, 설치된 onnxruntime-gpu는 CUDA 11.X 버전 하에 빌드된 녀석이라 만약 사용 환경이 CUDA 12.X면 제대로 동작 안할 수도 있다. 

 

CUDA 12.X 환경에서 onnxruntime-gpu를 사용하고 싶은 경우, 설치 방법이 아예 따로 있는 것을 볼 수 있다.

 

python이라면 단순히 pip 뒤에 extra-index-url을 추가하면 되는 정도니까 해당 방법을 따라 새로 onnxruntime-gpu를 설치해주면 된다. 그래도 안된다면 cuDNN 문제니까 cuDNN 다시 깔아주면 된다. (그래도 그래도 안되면 CUDA11.8, cuDNN 8.9.7로 낮춰라)

 

pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/

 

 

만약 c#을 사용하는 경우라면 조금 더 복잡하다. configuration도 바꿔줘야 하고, 패키지도 바꾸고 좀 난리를 쳐야한다. 

 

따라서 c#일 경우에는 CUDA를 11.8로, cuDNN 8.9.7로 낮추는게 빠르다. (기본이 CUDA 11.8 사용하도록 되어있어서)

 

c# 이면 맘편히 그냥 낮추자.

 

 

반응형