본문 바로가기
코드/ONNX

[ONNX] ONNX 란? - 탄생 배경, 목적, 성능 테스트

by 코드퀸 2022. 12. 16.
728x90
반응형

 

 

ONNX (Open Neural Network Exchange)?

  •  ONNX는 딥러닝 모델의 상호 운용을 위해 생긴 프레임워크입니다. 
  • Pytorch에서 처음 만들어졌으며, 현재는 많은 기업들이 ONNX를 지원하고 있습니다.
  • 왜 ONNX 가 나오게 되었는지, ONNX는 무엇인지 하나씩 살펴보도록 하겠습니다.
  • 더 전문적이고, 자세한 내용이 필요하시다면, ONNX 공식 홈페이지 참고 부탁드립니다.
  • https://onnx.ai/about.html 
 

ONNX | About

Technical Design ONNX provides a definition of an extensible computation graph model, as well as definitions of built-in operators and standard data types. Each computation dataflow graph is structured as a list of nodes that form an acyclic graph. Nodes h

onnx.ai

 

ONNX 지원 기업

 

 

ONNX의 탄생 배경

  • 딥러닝 모델이 하나의 프레임워크에 종속되어 상호운용이 어려운 문제를 해결하고자 만들어졌습니다.
  • 일반적으로 pytorch, tensorflow 등을 이용하여 딥러닝 모델 기반의 생성/추론합니다.
  • 하지만, 모델은 생성된 프레임워크(pytorch, tensorflow 등)에 의존성이 높다는 한계가 있습니다.
 예를 들어)
1. pytorch에서 생성된 모델
     - pytorch에서 실행 가능
     -
tensorflow에서 실행 불가

2. tensorflow 에서 생성된 모델
     - tensroflow에서 실행 가능
     -  pytorch
에서 실행 불가
  • 아마, 다른 개발자들과 협업을 하게 되면 다른 환경들로 인해 협업이 힘들었던 것 같습니다.
  • ONNX를 이용하면, 다른 딥러닝 프레임워크에서 개발된 모델도 ONNX로 변환하여 쉽게 공유할 수 있습니다.

 

ONNX의 목적

  • 프레임워크 상호 운용성 - 개발자가 프레임워크 간 유연성을 갖게 됩니다. 
  • 공유 최적화  - ONNX를 사용하면 하드웨어 업체들이 쉽게 딥러닝을 제공/개선할 수 있습니다.

 

ONNX의 성능 테스트

  • 간단히 pytorch로 작성된 YoloV5 모델을 ONNX로 모델을 최적화하여 추출해서 테스트를 해보았습니다. 
  • CPU 환경에서 해당 모델을 실행시켰을 때,  처리 속도가 약 1/4 정도로 줄었습니다.
  • 임베디드 환경의 경우 매우 의미 있는 수치로 생각됩니다.
processing time :  0.007970809936523438 # onnx 모델 실행시간
    processing time :  0.031972646713256836 # pytorch 모델 실행시간

 


마치며..

 

저는 처음 pytorch와 tensorflow를 접하였을 때, 누가 과연 이길까?라는 생각을 했었습니다. 어느 통계에서 봤었는데, 딥러닝 개발 초기에는 caffe, 그다음에는 tensorflow, pytorch 순으로 빈번히 사용되고 있다는 내용을 본 적이 있습니다. 딥러닝이 꽤 안정적으로 자리 잡은  요즘은 우세한 프레임워크가 있다기보다는, 각자 취향에 맞춰 쓰는 느낌이 들었습니다. 그리고, 이제는 ONNX가 출현했습니다.

 

사실, 저는 그전까지는 별로 ONNX에 대해 알지 못했습니다. 그냥 뭐 그런 게 있는가 보다 했는데, 어느 기업에 갔더니, "딥러닝 모델을 ONNX로 코딩하시나요?" 라는 말을 들었습니다. 이 프레임워크는 얼른 알아둬야겠다는 생각이 들었고, 알아볼수록 유용한 프레임워크인 것 같다는 생각이 들더군요.

 

ONNX는 각자의 생태계를 더 유연하고, 견고하게 만들어주는 프레임워크가 될 것 같습니다.

 

** 내용 중 수정이 필요하거나 보완이 필요하면 댓글 부탁드리겠습다. :)

728x90
반응형

댓글