PINTO0309/onnx2tf

A tool for converting ONNX files to LiteRT/TFLite/TensorFlow, PyTorch native code (nn.Module), TorchScript (.pt), state_dict (.pt), Exported Program (.pt2), and Dynamo ONNX. It also supports direct conversion from LiteRT to PyTorch.

What it solves

onnx2tf는 AI 모델을 ONNX 형식에서 다양한 다른 프레임워크로 이동시키기 위해 설계된 변환 도구이며, 주로 LiteRT(구 TensorFlow Lite), TensorFlow, PyTorch를 대상으로 합니다. 이러한 생태계 간 전환 시 모델을 수동으로 다시 작성할 필요를 없애고, 광범위한 연산자를 지원하여 높은 호환성을 보장합니다.

How it works

이 도구는 변환을 위해 두 가지 주요 실행 경로를 제공합니다:

  1. flatbuffer_direct (Default): 노드별 TensorFlow 변환을 우회하는 고속 경로입니다. ONNX 그래프 전처리를 수행하고, 내부 ModelIR 로 직접 낮추어 FlatBuffer(TFLite) 형식으로 바로 내보냅니다. 이 경로는 기존 경로보다 100배 이상 빠를 수 있습니다.
  2. tf_converter (Legacy): 표준 TensorFlow Lite Converter 를 사용하는 호환성 경로입니다.

TFLite 외에도, 이 도구는 네이티브 PyTorch nn.Module 패키지, TorchScript, Exported Programs(.pt2) 및 TensorFlow SavedModel, Keras 파일을 생성할 수 있습니다. 또한 LiteRT에서 직접 PyTorch 로 변환하는 것도 지원합니다.

Who it’s for

엣지 디바이스(LiteRT/TFLite)에서 모델을 배포하거나, PyTorch와 TensorFlow/ONNX 생태계 간에 기능 정확도를 잃지 않고 모델을 마이그레이션해야 하는 ML 엔지니어 및 개발자를 위한 도구입니다.

Highlights

  • Multi-Framework Support: ONNX 를 LiteRT, TensorFlow, 네이티브 PyTorch 코드로 변환합니다.
  • High Performance: flatbuffer_direct 백엔드는 기존 방법에 비해 훨씬 빠른 변환 속도를 제공합니다.
  • Extensive Op Coverage: Attention, GRU, LSTM 등 복잡한 레이어를 포함한 방대한 ONNX 연산자를 지원합니다.
  • Accuracy Validation: 입력 모델(예: ONNX)과 변환된 출력(예: TFLite 또는 PyTorch)을 비교하는 정확도 보고서를 생성하는 내장 도구를 제공합니다.
  • PyTorch Native Export: 표준 torch.nn.Module 을 내보내고, 호환 가능한 state_dict.pth 를 포함하여 즉시 추론이 가능하도록 합니다.