Programing/기타 오류 해결

[onnxruntime] CUDAExecutionProvider가 적용되지 않을 때

뇌님 2024. 5. 8. 20:21
반응형

 

GPU 딸린 새 VM에 환경을 구축하고 테스트를 진행하는데

Applied privider가 'CPUExecutionProvider'로 적용되고 있습니다.

 

CUDA, cuDNN, onnxruntime 간 버전이 맞지 않아 발생한 문제일 가능성이 큽니다.

 

 

클라우드 서비스에서 제공하는 GPU VM은 적어도 CUDA, cuDNN 간 버전은 맞춰진 상태이므로,

onnxruntime만 조정해보도록 하겠습니다.

 

CUDA, cuDNN 버전 확인

CUDA

nvcc -V

 

제 경우엔 12.1 버전

cuDNN

cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2

제 경우엔 8.9.3 버전

 

 

ONNX Runtime 재설치

이미 onnxruntime이 설치가 되어있었다면 충돌문제가 발생할 수 있기 때문에 먼저 삭제해주세요

pip uninstall onnxruntime
pip uninstall onnxruntime-gpu

 

onnxruntime 설치

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

본인의 CUDA 버전을 잘 확인해주세요 (근데 문제가 발생해서 이 글까지 오신분들은 거진 12.X버전이셨겠죠?)

 

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

 

 

정상 설치결과 확인

공식문서에서 제공하는 예시코드를 이용해 확인해보았습니다.

from optimum.onnxruntime import ORTModelForSequenceClassification

ort_model = ORTModelForSequenceClassification.from_pretrained(
  "distilbert-base-uncased-finetuned-sst-2-english",
  export=True,
  provider="CUDAExecutionProvider",
)

중간생략

일부 노드에 부정적인 영향이 있을 수 있다는 warning이 발생했습니다.

다만 제 코드 전반에서는 문제가 발생하지 않아 일단 넘겼습니다.

참고할만한 링크(https://github.com/ultralytics/ultralytics/issues/5147)를 남겨둡니다.

 

 

원래 문제가 됐던 코드도 다시 테스트 해보니

CUDAExecutionProvider가 잘 적용되었습니다!

 


 

반응형