오늘의 인기 글
최근 글
최근 댓글
Today
Total
11-24 00:00
관리 메뉴

우노

[DL] ONNX 란? 본문

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 포맷으로 저장됩니다.

사용 예제

  • 추후 포스팅할 예정입니다.

참고

Comments