Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- Database
- 예제
- CSS
- FFT
- inline
- Position
- 푸리에 변환
- oracle
- g검정
- 반응형 웹 프로젝트
- 반응형웹
- iframe 태그
- 퍼셉트론
- 파이썬
- Codility
- html 기초
- html 프로젝트
- 사전학습
- GridLayout
- HTML
- FlowLayout
- ObjectOutputStream
- 메서드
- rnn
- FileWriter
- java
- css 기초
- 상속
- 미디어쿼리
- BorderLayout
Archives
- Today
- Total
도라에몽주머니
[ML/AI] ONNX 모델이란? 본문
새로 들어가게 된 안건에서 ONNX 모델을 사용하게 되어서 정리하는 글.

ONNX 란?
ONNX(Open Neural Network Exchange) 란 서로 다른 딥러닝 환경에서 개발된 모델을 서로 호환 가능하도록 하는 표준 모델 포맷이다.
예를 들어, Tensorflow에서 만든 모델을 ONNX 그래프로 export 하면 PyTorch 와 같은 다른 프레임워크에서도 해당 모델을 import 해서 사용할 수 있다.

장점
ONNX는 아래와 같은 장점이 있다.
- Framework interoperability: 프레임워크 상호 운용성
ONNX를 이용하면, 하나의 프레임워크(ex. PyTorch) 에서 모델을 학습시키고 다른 프레임워크(ex. TensorFlow) 로 내보내서 추론에 사용할 수 있다.
현재는 PyTorch, Caffe2, Microsoft Cognitive Toolkit, Apache MXNet, Chainer 등의 프레임워크를 지원하며, Core ML, TensorFlow, Qualcomm SNPE, Nvidia의 TensorRT, Intel의 nGraph도 추가로 지원될 예정이다.
- Hardware optimizations: 하드웨어 최적화
성능을 최대화하기 위해 ONNX 호환 런타임 및 라이브러리를 제공하므로, 하드웨어 최적화가 가능하다.
현재는 Qualcomm SNPE, AMD, ARM, Intel 및 기타 하드웨어 파트너를 지원한다.
ONNX Runtime
ONNX가 지원하는 프레임워크이다. 다양한 프레임워크, 운영 체제와 하드웨어 플랫폼을 지원하며, 머신러닝 속도를 향상시키도록 설계되어 있다.

동작 흐름
- PyTorch, TensorFlow, Keras 등의 모델을 ONNX로 변환해서 ONNX 모델을 생성한다.
- 사용하고자 하는 환경에서 생성한 모델(ex.
example.onnx) 을 로드하고 실행한다. - 하드웨어 가속기 등을 이용해서 성능을 조정한다.
- 입력값을 전달하고 결과값을 반환받는다.
실행
Installation
!pip install onnxruntime
Session
import onnxruntime as ort
# 추론 세션 생성
session_tf = ort.InferenceSession("model_path.onnx")
# 추론 세션 실행
input_images = session_tf.get_inputs()[0].name
output_name = session_tf.get_outputs()[0].name
results_ort = session_tf.run([output_name], {input_name: X.astype(np.float32)})
Netron 이란?
Netron은 아래 이미지와 같이 딥러닝 모델 아키텍쳐를 시각화해주는 툴이다. ONNX, TorchScript, TensorFlow Lite, TensorFlow, Keras, Core ML, Darknet 과 같은 모델들을 지원한다.

Netron은 다운로드해서 로컬에서 실행할 수도 있지만, 아래의 브라우저에 모델을 드래그 앤 드롭하면 아주 간단하게 모델 아키텍쳐를 확인할 수 있다.
Netron
netron.app
References
'Study > ML' 카테고리의 다른 글
| [ML] 하이퍼파라미터 최적화(Random Search, Grid Search) (0) | 2024.12.22 |
|---|---|
| [ML] numpy 모듈으로 푸리에 변환 구현 (4) | 2024.09.27 |
| [ML] 푸리에 변환(Fourier Transform) 이란? (3) | 2024.09.17 |
| [ML] 다층 퍼셉트론(Multi-Layer Perceptron)과 활성화 함수 (1) | 2023.11.13 |
| [ML] 퍼셉트론(Perceptron) 이란? (0) | 2023.11.02 |