OnnxSlim:优化大型ONNX模型的工具包

OnnxSlim:优化大型ONNX模型的工具包

OnnxSlimA Toolkit to Help Optimize Large Onnx Model项目地址:https://gitcode.com/gh_mirrors/on/OnnxSlim

项目介绍

OnnxSlim 是一个专为优化大型 ONNX 模型而设计的工具包,旨在通过减少模型中的运算符数量,保持相同精度的同时提升推理速度。该工具包已经展现出了其在模型性能优化方面的卓越能力,比如在AICAS 2024挑战赛中获得第一,说明了它在LLM推理优化上的领先地位。OnnxSlim支持与多个知名框架集成,如MNN-LLM、Ultralytics、以及Transformers.js,体现了其广泛的应用潜力。

项目快速启动

安装OnnxSlim

您可以选择以下任一方式安装OnnxSlim:

# 从PyPI安装
pip install onnxslim

# 或者,直接从源码安装
pip install git+https://github.com/WeLoveAI/OnnxSlim.git@main

# 若需本地开发环境,则可克隆仓库并安装
git clone https://github.com/WeLoveAI/OnnxSlim
cd OnnxSlim/
pip install .

使用示例

一旦安装完成,你可以轻松地对你的ONNX模型进行瘦身:

import onnxslim

your_onnx_model = 'path/to/your/model.onnx'  # 你的原始ONNX模型路径
slimmed_onnx_model = 'path/to/slimmed/model.onnx'  # 瘦身后模型保存路径

# 对模型进行优化
optimized_model = onnxslim.optimize(your_onnx_model)

# 保存优化后的模型
optimized_model.save(slimmed_onnx_model)

执行以上步骤后,您将得到一个体积更小但功能不变的ONNX模型。

应用案例和最佳实践

OnnxSlim可以应用于各种场景,特别是对推理效率有高要求的边缘计算设备或低功耗设备上。一个典型的例子是在部署计算机视觉任务时,利用OnnxSlim对预先训练好的模型(如ResNet、MobileNet等)进行优化,实现更快的推理速度而不牺牲识别率。

最佳实践中,建议先对模型进行基准测试,记录原模型的性能指标(如推理时间、内存消耗)。优化后,重新评估这些指标,以确保优化效果符合预期,并确认精度无明显下降。

典型生态项目

OnnxSlim融入了许多前沿的机器学习生态系统,如被整合到MNN、Ultralytics的YOLO系列、Hugging Face的Transformers库的JavaScript版本中。这意味着通过OnnxSlim优化的模型可以无缝对接这些流行框架和库,促进深度学习模型在实际应用中的高效部署和运行。


请注意,本教程基于假设情景构建,实际项目链接并非提供的“https://github.com/WeLoveAI/OnnxSlim.git”,因为具体链接指向的信息可能有所不同。确保在实际操作前查阅最新的官方文档获取最新安装和使用指南。

OnnxSlimA Toolkit to Help Optimize Large Onnx Model项目地址:https://gitcode.com/gh_mirrors/on/OnnxSlim

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

PS D:\yolo\ultralytics-v8.3.40> & C:/anaconda/envs/yolov11_11/python.exe d:/yolo/ultralytics-v8.3.40/ultralytics-v8.3.40/datasets/dan/on.py Ultralytics 8.3.40 🚀 Python-3.11.9 torch-2.7.0+cu126 CPU (12th Gen Intel Core(TM) i7-12650H) YOLOv11n summary (fused): 238 layers, 2,582,347 parameters, 0 gradients, 6.3 GFLOPs PyTorch: starting from 'D:\yolo\ultralytics-v8.3.40\runs\detect\train6\weights\best.pt' with input shape (1, 3, 640, 640) BCHW and output shape(s) (1, 5, 8400) (5.2 MB) requirements: Ultralytics requirements ['onnx>=1.12.0', 'onnxslim', 'onnxruntime'] not found, attempting AutoUpdate... Looking in indexes: https://mirrors.ustc.edu.cn/pypi/web/simple Requirement already satisfied: onnx>=1.12.0 in c:\anaconda\lib\site-packages (1.14.1) Requirement already satisfied: onnxslim in c:\anaconda\lib\site-packages (0.1.53) Requirement already satisfied: onnxruntime in c:\anaconda\lib\site-packages (1.14.1) Requirement already satisfied: numpy in c:\anaconda\lib\site-packages (from onnx>=1.12.0) (1.21.6) Requirement already satisfied: protobuf>=3.20.2 in c:\anaconda\lib\site-packages (from onnx>=1.12.0) (4.24.4) Requirement already satisfied: typing-extensions>=3.6.2.1 in c:\anaconda\lib\site-packages (from onnx>=1.12.0) (4.7.1) Requirement already satisfied: sympy in c:\anaconda\lib\site-packages (from onnxslim) (1.1.1) Requirement already satisfied: packaging in c:\anaconda\lib\site-packages (from onnxslim) (17.1) Requirement already satisfied: coloredlogs in c:\anaconda\lib\site-packages (from onnxruntime) (15.0.1) Requirement already satisfied: flatbuffers in c:\anaconda\lib\site-packages (from onnxruntime) (25.2.10) Requirement already satisfied: humanfriendly>=9.1 in c:\anaconda\lib\site-packages (from coloredlogs->onnxruntime) (10.0) Requirement already satisfied: pyparsing>=2.0.2 in c:\anaconda\lib\site-packages (from packaging->onnxslim) (2.2.0) Requirement already satisfied: six in c:\anaconda\lib\site-packages (from packaging->onnxslim) (1.11.0) Requirement already satisfied: pyreadline in c:\anaconda\lib\site-packages (from humanfriendly>=9.1->coloredlogs->onnxruntime) (2.1) requirements: AutoUpdate success ✅ 1.4s, installed 3 packages: ['onnx>=1.12.0', 'onnxslim', 'onnxruntime'] requirements: ⚠️ Restart runtime or rerun command for updates to take effect ONNX: export failure ❌ 1.5s: No module named 'onnx' Traceback (most recent call last): File "d:\yolo\ultralytics-v8.3.40\ultralytics-v8.3.40\datasets\dan\on.py", line 7, in model.export(format='onnx') File "C:\anaconda\envs\yolov11_11\Lib\site-packages\ultralytics\engine\model.py", line 737, in export return Exporter(overrides=args, _callbacks=self.callbacks)(model=self.model) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\anaconda\envs\yolov11_11\Lib\site-packages\ultralytics\engine\exporter.py", line 359, in call f[2], _ = self.export_onnx() ^^^^^^^^^^^^^^^^^^ File "C:\anaconda\envs\yolov11_11\Lib\site-packages\ultralytics\engine\exporter.py", line 146, in outer_func raise e File "C:\anaconda\envs\yolov11_11\Lib\site-packages\ultralytics\engine\exporter.py", line 141, in outer_func f, model = inner_func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\anaconda\envs\yolov11_11\Lib\site-packages\ultralytics\engine\exporter.py", line 452, in export_onnx import onnx # noqa ^^^^^^^^^^^ ModuleNotFoundError: No module named 'onnx' PS D:\yolo\ultralytics-v8.3.40>
最新发布
05-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薄正胡Plains

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值