onnxsim/onnxsim

Simplify your onnx model

해결하는 문제

ONNX Simplifier는 중복 연산자를 제거하고 계산 그래프를 단순화하여 ONNX 모델의 복잡성을 줄입니다. 이는 PyTorch와 같은 프레임워크에서 모델을 내보낼 때 특히 유용합니다. 이러한 프레임워크는 종종 모델의 가독성, 최적화 및 배포를 어렵게 만드는 불필요한 형태 조작 노드를 생성하기 때문입니다.

작동 방식

이 도구는 형태 추론, 그래프 최적화 및 상수 폴딩의 고정점 루프를 실행합니다. 그래프의 상수 부분을 평가하고 계산된 출력으로 대체합니다. 또한 그래프 전체에 텐서 형태를 전파하여 추가적인 폴딩을 가능하게 하며, 선택적으로 무작위 입력을 사용하여 단순화된 모델과 원본 모델을 검증하여 정확성을 보장할 수 있습니다.

대상 사용자

MLIR 기반 컴파일러, Apple Core ML 또는 TensorFlow Lite를 사용하는 대상을 포함하여 다양한 하드웨어 타겟에 대해 ONNX 모델을 최적화해야 하는 AI 엔지니어 및 ML 개발자를 위해 설계되었습니다.

주요 특징

  • 상수 폴딩 (Constant Folding): 중복 연산자를 계산된 상수 출력으로 대체합니다.
  • 그래프 최적화 (Graph Optimization): onnx-optimizer와 통합되어 융합(예: BatchNorm을 Conv로 융합) 및 제거 작업을 수행합니다.
  • 광범위한 내보내기 지원: MLIR (torch-mlir/onnx-mlir), Core ML 및 TensorFlow Lite로의 직접 내보내기 경로를 제공합니다.
  • 프레임워크 통합: Hugging Face Transformers, Diffusers, Detectron2 및 SAM 2를 위한 전용 내보내기 함수를 제공합니다.
  • 멀티 플랫폼: Python 패키지, CLI, C API, Rust 래퍼 및 설치가 필요 없는 웹 버전으로 제공됩니다.
  • 양자화 지원: 양자화 과정에서 손실된 정확도를 복구하기 위한 양자화 인식 미세 조정(QAT)을 포함합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트