1ONNX란?

ONNX(Open Neural Network Exchange)는 딥러닝 모델의 표준 교환 포맷입니다. ONNX Runtime은 Microsoft가 개발한 고성능 추론 엔진으로, 다양한 하드웨어에서 ONNX 모델을 최적 실행합니다.

ONNX Ecosystem
Training Frameworks
PyTorch
TensorFlow
sklearn
ONNX Model
.onnx file
Standard Format
Execution Providers
TensorRT (NVIDIA)
CUDA (NVIDIA)
OpenVINO (Intel)
CPU (Default)

ONNX의 핵심 가치: "Train Once, Deploy Anywhere" - 한 번 학습, 어디서든 배포

2Execution Providers

CUDA EP

NVIDIA GPU 범용

TensorRT EP

NVIDIA 최적화

OpenVINO EP

Intel CPU/VPU

DirectML EP

Windows GPU

3PyTorch → ONNX 변환

import torch import onnx class ONNXExporter: def export_pytorch(self, model, sample_input, onnx_path): """PyTorch → ONNX 변환""" model.eval() torch.onnx.export( model, sample_input, onnx_path, export_params=True, opset_version=17, do_constant_folding=True, input_names=['input'], output_names=['output'], dynamic_axes={ 'input': {0: 'batch_size'}, 'output': {0: 'batch_size'} } ) # 모델 검증 onnx_model = onnx.load(onnx_path) onnx.checker.check_model(onnx_model) return onnx_path

4ONNX Runtime 추론

import onnxruntime as ort import numpy as np class ONNXInference: def __init__(self, model_path, providers=None): if providers is None: providers = [ ('TensorrtExecutionProvider', { 'device_id': 0, 'trt_fp16_enable': True, }), ('CUDAExecutionProvider', {'device_id': 0}), 'CPUExecutionProvider' ] sess_options = ort.SessionOptions() sess_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_ALL self.session = ort.InferenceSession(model_path, sess_options=sess_options, providers=providers) self.input_name = self.session.get_inputs()[0].name self.output_name = self.session.get_outputs()[0].name def infer(self, input_data): """추론 실행""" outputs = self.session.run([self.output_name], {self.input_name: input_data.astype(np.float32)}) return outputs[0]

5성능 비교

런타임디바이스추론 시간특징
PyTorchRTX 40908.2ms개발 용이
ONNX (CUDA)RTX 40904.5ms크로스 플랫폼
ONNX (TRT)RTX 40902.1msNVIDIA 최적화
ONNX (OpenVINO)Intel i912.3msCPU 최적화

6제조 현장 활용

  • 벤더 독립성: 특정 GPU 벤더에 종속되지 않음
  • CPU 배포: GPU 없이 산업용 PC에서 실행 가능
  • Edge TPU 지원: Google Coral 등 저전력 NPU 활용
10+
지원 프레임워크
15+
Execution Providers
5+
언어 바인딩

다음 장에서는 엣지 AI와 PLC를 OPC UA로 통합하여 실시간 제어 루프를 구성하는 방법을 학습합니다.