项目介绍:ONNX Optimizer
简介
ONNX Optimizer 是一个用于优化 ONNX 模型的 C++ 库。它提供了一系列预设的优化操作,以帮助改善 ONNX 模型在各种后端实现中的性能。ONNX Optimizer 的主要目标是通过允许在 ONNX 图形上实现通用优化,从而简化优化操作的共享。虽然并非所有的优化都能直接在 ONNX 图上实现,有些需要依赖于后端特定的信息,但许多优化操作是可以的。因此,ONNX Optimizer 提供了这些优化操作,以便用户只需一次调用即可重复使用。
这个工具适合那些希望使用现有的优化功能或者实现新优化功能的用户。
安装
ONNX Optimizer 可以通过 PyPI 轻松安装:
pip3 install onnxoptimizer
如果安装过程中遇到问题,需要先升级 pip:
pip3 install -U pip
如果想从源代码构建,则可通过以下步骤:
git clone --recursive https://github.com/onnx/optimizer onnxoptimizer
cd onnxoptimizer
pip3 install -e .
注意,在从源代码构建之前,需要先安装 protobuf。
命令行接口
ONNX Optimizer 支持通过命令行执行,而不是仅通过 Python 脚本。您可以使用以下命令在终端中进行操作:
python -m onnxoptimizer input_model.onnx output_model.onnx
以下是命令参数的列表:
-h, --help
: 显示帮助信息并退出--print_all_passes
: 打印所有可用的优化操作--print_fuse_elimination_passes
: 打印所有结合和消除操作-p [PASSES ...], --passes [PASSES ...]
: 设置优化操作列表,如果未指定,将使用默认的结合和消除操作--fixed_point
: 固定点
发展路线图
ONNX Optimizer 的未来计划包括:
- 增加更多的内置优化操作
- 分离图重写和常数折叠(或者提供纯图重写模式,详见 issue #9)
相关工具
- onnx-simplifier: 这个工具基于 onnxoptimizer 开发,是一款方便且流行的 ONNX 模型简化工具。
- convertmodel.com: 通过将 ONNX Optimizer 编译为 WebAssembly,您可以在网页中直接使用这个工具。
行为准则
所有对于 ONNX 高清产品操作的贡献者均需遵守 ONNX 开源行为准则,详细内容可以在 ONNX 官方网站上查看。