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