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
cuDNN
cat /usr/include/x86_64-linux-gnu/cudnn_v*.h | grep CUDNN_MAJOR -A 2
ONNX Runtime 재설치
이미 onnxruntime이 설치가 되어있었다면 충돌문제가 발생할 수 있기 때문에 먼저 삭제해주세요
pip uninstall onnxruntime
pip uninstall onnxruntime-gpu
onnxruntime 설치
https://onnxruntime.ai/docs/install/
# 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가 잘 적용되었습니다!
반응형