CUDA Execution Provider — NVIDIA GPU 가속

CUDA Execution Provider — NVIDIA GPU 가속

CUDA Execution Provider 는 NVIDIA CUDA 가능 GPU에서 하드웨어 가속 연산을 가능하게 하는 EP예요. ONNX 모델 중 GPU에서 실행할 수 있는 노드를 CUDA로 실행해 속도를 크게 올립니다.

출처: https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html

설치와 요구사항

미리 빌드된 CUDA EP가 포함된 패키지는 대부분의 언어 바인딩으로 배포돼요. 별도로 설치할 필요 없이 onnxruntime-gpu 패키지를 쓰면 돼요.

CUDA/쿠다(cuDNN) 버전 조합이 중요해요. NVIDIA CUDA Minor Version Compatibility 덕분에, 예를 들어 CUDA 11.8로 빌드된 ORT는 모든 11.x와 호환되고, CUDA 12.8로 빌드된 것은 모든 12.x와 호환돼요. 단, cuDNN 8.x와 9.x는 서로 호환되지 않습니다.

참고: 버전 1.27부터 PyPI의 onnxruntime-gpu 패키지는 기본적으로 CUDA 13.0으로 빌드돼요.

설정 옵션

CUDA EP는 다양한 구성 옵션을 지원해요. 몇 가지를 보면 다음과 같아요.

  • device_id — 사용할 GPU 디바이스 번호
  • gpu_mem_limit — GPU 메모리 상한
  • use_tf32 — TensorFloat-32 사용 여부
  • enable_cuda_graph — CUDA 그래프 사용(미리보기)
  • cudnn_conv_algo_search, cudnn_conv_use_max_workspace — cuDNN 컨볼루션 탐색 옵션
  • prefer_nhwc — NHWC 채널 우선 레이아웃

파이썬에서 사용

가장 간단한 형태는 InferenceSessionproviders에 CUDA를 우선으로 넣는 방식이에요.

import onnxruntime as rt

sess = rt.InferenceSession("model.onnx",
    providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])

이 순서는 "CUDA가 가능하면 CUDA로, 아니면 CPU로" 실행한다는 뜻이에요.

더 알아보기