ONNX(Open Neural Network Exchange)에 대하여

‍hiamzwon·2024년 3월 22일

Inference

목록 보기
2/2

What is ONNX?


ONNX(Open Neural Network Exchange) 란?

: 딥러닝 모델을 서로 다른 프레임워크 간에 서로 옮길 수 있도록 하는 오픈 소스 프로젝트
모델을 중간 계층 형식으로 변환하고 모델을 실행하는 데 필요한 라이브러리를 제공

다양한 플랫폼 환경(Java, JS, C, C#, C++)에서 환경에 제약 없이 구현된 ‘ML 모델’을 호출하고 수행하여 수행 결과값을 반환받는 것을 의미


ONNX Runtime 이란?
: ONNX 모델을 실행하기 위한 최적화된 런타임 환경을 제공하는 엔진

  • ONNX 모델을 실행하기 위해 ONNX 런타임은 빠른 추론을 위한 최적화된 커널을 사용
  • CPU, GPU 및 딥러닝 가속기(DNNL, NNAPI, OpenVINO)를 지원

ONNX 사용 사례

  1. 다양한 ML 모델에 대한 추론 성능 향상
  2. 다른 하드웨어 및 운영 체제에서 실행
  3. Python으로 훈련하되 C#/C++/Java 앱에 배포
  4. 다양한 프레임 워크에서 생성된 모델로 추론 훈련 및 수행

ORT 형식, ONNX 경량화
: ‘축소된 크기’의 ONNX Runtime 빌드에서 지원하는 형식

  • onnx 형태에서 ort 형태로 변경을 함으로써 축소된 크기 빌드는 모바일 및 웹 애플리케이션과 같이 크기가 제한된 환경에서 사용하기에 더 적합합니다.
  • React-native의 ONNX Runtime에서는 onnx, ort 형태의 모델들을 수행이 가능합니다.


How to use ONNX?


ONNX 실습 자료

ONNX runtime
https://github.com/microsoft/onnxruntime/tree/main/onnxruntime/python/tools/transformers/notebooks

tensorflow onnx tutorials
https://github.com/onnx/tensorflow-onnx/blob/main/tutorials/huggingface-bert.ipynb

추론을 위해 ONNX 사용하는 방법
https://huggingface.co/docs/diffusers/main/ko/optimization/onnx

profile
꿈은 없고요 놀고 싶습니다

0개의 댓글