ONNX Runtime
ONNX Runtime 개요
ONNX Runtime(ORT)은 Microsoft에서 개발하고 현재 오픈소스로 관리되는 크로스 플랫폼 머신러닝 추론(Inference) 및 학습(Training) 가속기다. 다양한 머신러닝 프레임워크(PyTorch, TensorFlow, scikit-learn 등)에서 생성된 ONNX(Open Neural Network Exchange) 모델을 여러 하드웨어 및 운영체제 환경에서 최적화하여 실행하는 데 사용된다.
주요 특징 및 아키텍처
-
실행 제공자(Execution Providers, EP) 아키텍처 ONNX Runtime은 플러그인 형태의 실행 제공자 인터페이스를 통해 다양한 하드웨어 가속기와 통합된다. 하드웨어의 특성(CPU, GPU, NPU, DSP)에 따라 모델의 그래프 연산을 분할하고, 각 연산에 가장 적합한 백엔드를 할당하여 성능을 타겟 하드웨어에 친화적으로 극대화한다.
- 지원하는 대표적인 EP: NVIDIA CUDA, NVIDIA TensorRT, Intel OpenVINO, Apple CoreML, Android NNAPI, Qualcomm QNN 등.
-
크로스 플랫폼 및 상호 운용성 Windows, Linux, macOS와 같은 데스크톱/서버 OS뿐만 아니라 iOS, Android 등의 모바일 및 엣지 환경을 모두 지원한다. 개발자는 학습 환경에 종속되지 않고 단일 ONNX 모델을 배포하여 여러 플랫폼에서 동일하게 구동할 수 있다.
-
성능 최적화 그래프 최적화(상수 폴딩, 노드 융합 등) 및 커널 최적화를 기본적으로 수행하여 추론 지연 시간(Latency)을 줄이고 처리량(Throughput)을 늘린다.
머신러닝 추론 엔진 비교
ONNX Runtime과 주로 비교되는 타 추론 엔진과의 차이점은 다음과 같다.
| 특징 | ONNX Runtime | TensorRT | TensorFlow Lite |
|---|---|---|---|
| 주요 개발사 | Microsoft | NVIDIA | |
| 핵심 목적 | 다중 프레임워크 모델의 범용적 하드웨어 최적화 및 추론 | NVIDIA GPU 환경에서의 딥러닝 추론 속도 극대화 | 모바일, 임베디드 및 엣지 디바이스에서의 경량화 추론 |
| 하드웨어 의존성 | 하드웨어 독립적 (다양한 하드웨어 백엔드 지원) | NVIDIA GPU 전용 (CUDA 코어, Tensor 코어 필수) | 하드웨어 독립적이나 ARM, 모바일 NPU에 특화됨 |
| 입력 모델 포맷 | ONNX | ONNX, TF-TensorRT | TFLite |
| 기능적 유연성 | 매우 높음 (Execution Provider를 통해 TensorRT 등 타 엔진을 내부적으로 호출 가능) | 낮음 (NVIDIA 하드웨어에 종속적이나 성능은 가장 뛰어남) | 중간 (경량화 연산에 초점을 맞추어 일부 복잡한 연산 미지원 가능성 있음) |
출처(Sources)
- Microsoft, “ONNX Runtime: Cross-platform, high performance ML inferencing and training accelerator.” Microsoft Open Source. (Available at: https://opensource.microsoft.com)
- ONNX Runtime Official Documentation. “What is ONNX Runtime?” (Available at: https://onnxruntime.ai/docs/)
- The Linux Foundation. “Open Neural Network Exchange (ONNX).” AI & Data Projects. (Available at: https://onnx.ai)
- NVIDIA Developer. “NVIDIA TensorRT.” (Available at: https://developer.nvidia.com/tensorrt)
- TensorFlow. “TensorFlow Lite for mobile and edge devices.” Google. (Available at: https://www.tensorflow.org/lite)