우노
[DL] ONNX 란? 본문
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 포맷으로 저장됩니다.
- 첫 번째
사용 예제
- 추후 포스팅할 예정입니다.
참고
'AI > Deep Learning' 카테고리의 다른 글
[DL] RNN 모델을 사용한 IMDb 데이터 추론 (0) | 2022.03.24 |
---|---|
[DL] DistilBERT 모델을 사용한 GLUE SST-2 데이터 추론 (0) | 2022.02.15 |
[DL] Hugging Face란? (0) | 2022.01.20 |
[DL] TVM 이란? (0) | 2022.01.12 |
[DL] TFLite 와 TensorRT 간단 비교 (2) | 2022.01.12 |
Comments