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로 통합하여 실시간 제어 루프를 구성하는 방법을 학습합니다.