ONNX(오픈 신경망 교환 포맷) (ONNX (Open Neural Network Exchange))

컴퓨터과학·AI
한 줄 정의: 서로 다른 딥러닝 프레임워크에서 만든 모델을 공통된 형식으로 변환해, 프레임워크에 상관없이 모델을 공유하고 배포할 수 있게 해주는 개방형 표준.

쉽게 풀면

파이토치로 만든 모델과 텐서플로로 만든 모델은 원래 서로 호환되지 않는다. ONNX는 이런 서로 다른 프레임워크의 모델을 하나의 공통된 표준 형식으로 변환해 주는 규격으로, 마치 여러 나라 언어를 하나의 공용어로 번역해 주는 역할을 한다. 한 프레임워크에서 학습한 모델을 ONNX로 내보낸 뒤, 다른 프레임워크나 배포 전용 런타임에서 그대로 불러와 실행할 수 있어 모델 배포의 유연성을 크게 높여준다.

왜 중요한가

딥러닝 연구가 학습 단계에 그치지 않고 실제 서비스나 엣지 기기, 임베디드 환경에 배포되는 실무 단계로 확장되면서, 서로 다른 프레임워크로 학습된 모델을 어떻게 효율적으로 옮기고 최적화할지가 중요한 실용적 과제가 되었습니다. ONNX는 이런 프레임워크 간 이식성 문제에 대한 사실상의 업계 표준으로 자리잡아, 응용 논문의 실험 및 배포 섹션에서 모델을 어떤 환경으로 옮겨 성능을 측정했는지 설명할 때 빈번히 등장합니다.

논문에서는 이렇게 쓰입니다

"학습된 모델은 ONNX 형식으로 변환되어 다양한 하드웨어 플랫폼에서 추론에 사용되었다."

특정 프레임워크에 종속되지 않도록 모델을 ONNX 표준 형식으로 바꾸어, 여러 환경에서 손쉽게 배포하고 실행할 수 있게 했다는 뜻이다.

"파이토치로 학습된 경량 모델을 ONNX로 변환한 뒤 ONNX Runtime을 통해 모바일 기기에서의 추론 지연시간을 측정하였다."

모바일·엣지 컴퓨팅 연구에서는 ONNX 변환이 실제 기기에서의 속도와 자원 사용량을 비교하는 실험의 전제 단계로 언급됩니다.

"의료영상 분할 모델을 ONNX 표준으로 내보내, 서로 다른 임상 시스템 환경에서도 동일한 추론 결과를 재현할 수 있도록 하였다."

의료 AI 논문에서는 여러 병원·시스템 환경에 걸쳐 모델을 재현 가능하게 배포하기 위한 수단으로 ONNX를 활용하는 사례가 소개됩니다.

조금 더 깊게 보면

ONNX 모델은 연산들을 노드로, 데이터 흐름을 엣지로 표현하는 계산 그래프 형태로 저장되며, 각 연산자의 정의와 버전(opset)이 명시되어 프레임워크 간 해석 차이를 최소화하려고 합니다. 실제 추론은 ONNX Runtime 같은 별도의 실행 엔진이 담당하는데, 이 런타임은 CPU·GPU·NPU 등 다양한 하드웨어에 맞춘 최적화(연산자 융합, 양자화 등)를 지원하여 변환된 모델의 실행 속도를 높이는 역할도 합니다. 다만 프레임워크마다 지원하는 연산자 집합과 구현 세부사항이 조금씩 달라, 복잡한 모델일수록 변환 후 원래 프레임워크와 결과가 완전히 동일한지 검증하는 절차가 함께 필요합니다.

주의할 점

모든 프레임워크의 모든 연산이 ONNX로 완벽히 변환되는 것은 아니며, 일부 특수한 연산자는 변환 과정에서 지원되지 않거나 동작이 미세하게 달라질 수 있다.

관련 용어