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),以恢复量化过程中损失的准确度。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目