ONNX 소개
ONNX 소개 (Introduction to ONNX)
프레임워크마다 모델을 저장하고 실행하는 방식이 달라서, 한 번 만든 모델을 다른 환경에서 돌리기가 번거로울 때가 많아요. ONNX(Open Neural Network Exchange) 는 이런 문제를 풀기 위해 만든 개방형 표준 포맷이에요. 학습 프레임워크가 무엇이었든 ONNX로 표현된 모델은 어떤 ONNX 런타임에서든 실행할 수 있는 공통 언어를 제공해요.
이 문서가 다루는 것
ONNX 문서는 ONNX 개념(concepts) 을 설명하고, 파이썬에서의 사용 예를 보여주며, 마지막으로 ONNX를 프로덕션에 도입할 때 마주치는 어려움 몇 가지를 설명해요. 주요 내용은 이렇게 구성돼요.
- ONNX Concepts: 입력·출력·노드·이니셜라이저·속성, protobuf 직렬화, 메타데이터, 연산자와 도메인, opset 버전, 서브그래프·함수, 모양(타입) 추론, 도구.
- ONNX with Python: 선형 회귀 예제, 직렬화, 속성, opset·메타데이터, 함수, 파싱, 체커·모양 추론, 평가와 런타임.
- Converters: 변환 라이브러리가 무엇인지, 대안, opset, 경험에서 얻은 요령.
ONNX로 무엇을 할 수 있나
ONNX를 쓰면 하나의 통일된 프로세스로 모델을 프로덕션에 배포할 수 있고, 이 과정이 모델을 만든 학습 프레임워크와 무관해져요. 런타임은 배포 환경에 맞춰 특별히 최적화된 인터프리터를 쓸 수 있어요. onnx 패키지는 ONNX 모델과 연산을 평가할 수 있는 파이썬 런타임을 제공하는데, 이는 ONNX의 시맨틱스를 명확히 하고 도구와 변환기를 이해·디버깅하기 위한 것이지, 프로덕션 성능을 위한 것은 아니에요.