AI/Deep Learning
[DL] ONNX 란?
운호(Noah)
2022. 1. 24. 14:13
ONNX 란?
- ONNX(Open Neural Network Exchange)는,
- Tensorflow, PyTorch 와 같은, 서로 다른 DNN 프레임워크 환경에서 만들어진 모델들을,
- 서로 호환해서 사용할 수 있도록 도와주는 공유 플랫폼입니다.
- 예를 들어, Tensorflow 에서 모델을 만들고, 이를 ONNX 그래프로 export 하면,
- PyTorch 와 같은 다른 프레임워크에서도, 해당 모델을 import 해서 사용할 수 있습니다.
ONNX 사용 과정
- 위 그림은, PyTorch 모델을 ONNX 그래프로 export 하는 전체 과정을 도식화한 것입니다.
- 진행 과정은 아래 순서와 같습니다.
- 첫 번째
- PyTorch 모델과 Sample input 을 인자로 하여, torch.onnx.export 함수를 호출합니다.
- PyTorch 의 JIT 컴파일러를 통해서, Trace 혹은 Script 를 생성합니다.
- Trace 와 Script 는 그 생성 방식과 representation 에 차이가 있습니다. (추후 포스팅)
- PyTorch 모델의 forward propagation 시에 호출되는, 함수 및 연산들에 대한 최적화된 그래프인 Torch IR 을 만듭니다.
- Trace 나 Script 는, PyTorch 의 nn.Module 을 상속하는 모델의,
- forward 함수에서 실행되는 코드들에 대한 IR(Intermediate Representation)을 담고 있습니다.
- 두 번째
- 생성된 trace / script (Torch IR)는, ONNX Exporter 를 통해서 ONNX IR 로 변환되고,
- 여기에서 한 번 더 Graph Optimization 이 이루어집니다.
- 세 번째
- 최종적으로 생성된 ONNX 그래프는 .onnx 포맷으로 저장됩니다.
- 첫 번째
사용 예제
- 추후 포스팅할 예정입니다.