ONNX Runtime

ONNX Runtime 개요

ONNX Runtime(ORT)은 Microsoft에서 개발하고 현재 오픈소스로 관리되는 크로스 플랫폼 머신러닝 추론(Inference) 및 학습(Training) 가속기다. 다양한 머신러닝 프레임워크(PyTorch, TensorFlow, scikit-learn 등)에서 생성된 ONNX(Open Neural Network Exchange) 모델을 여러 하드웨어 및 운영체제 환경에서 최적화하여 실행하는 데 사용된다.

주요 특징 및 아키텍처

  1. 실행 제공자(Execution Providers, EP) 아키텍처 ONNX Runtime은 플러그인 형태의 실행 제공자 인터페이스를 통해 다양한 하드웨어 가속기와 통합된다. 하드웨어의 특성(CPU, GPU, NPU, DSP)에 따라 모델의 그래프 연산을 분할하고, 각 연산에 가장 적합한 백엔드를 할당하여 성능을 타겟 하드웨어에 친화적으로 극대화한다.

    • 지원하는 대표적인 EP: NVIDIA CUDA, NVIDIA TensorRT, Intel OpenVINO, Apple CoreML, Android NNAPI, Qualcomm QNN 등.
  2. 크로스 플랫폼 및 상호 운용성 Windows, Linux, macOS와 같은 데스크톱/서버 OS뿐만 아니라 iOS, Android 등의 모바일 및 엣지 환경을 모두 지원한다. 개발자는 학습 환경에 종속되지 않고 단일 ONNX 모델을 배포하여 여러 플랫폼에서 동일하게 구동할 수 있다.

  3. 성능 최적화 그래프 최적화(상수 폴딩, 노드 융합 등) 및 커널 최적화를 기본적으로 수행하여 추론 지연 시간(Latency)을 줄이고 처리량(Throughput)을 늘린다.

머신러닝 추론 엔진 비교

ONNX Runtime과 주로 비교되는 타 추론 엔진과의 차이점은 다음과 같다.

특징ONNX RuntimeTensorRTTensorFlow Lite
주요 개발사MicrosoftNVIDIAGoogle
핵심 목적다중 프레임워크 모델의 범용적 하드웨어 최적화 및 추론NVIDIA GPU 환경에서의 딥러닝 추론 속도 극대화모바일, 임베디드 및 엣지 디바이스에서의 경량화 추론
하드웨어 의존성하드웨어 독립적 (다양한 하드웨어 백엔드 지원)NVIDIA GPU 전용 (CUDA 코어, Tensor 코어 필수)하드웨어 독립적이나 ARM, 모바일 NPU에 특화됨
입력 모델 포맷ONNXONNX, TF-TensorRTTFLite
기능적 유연성매우 높음 (Execution Provider를 통해 TensorRT 등 타 엔진을 내부적으로 호출 가능)낮음 (NVIDIA 하드웨어에 종속적이나 성능은 가장 뛰어남)중간 (경량화 연산에 초점을 맞추어 일부 복잡한 연산 미지원 가능성 있음)

출처(Sources)

Entities