飞桨Paddle Inference模型转ONNX模型的方法

ONNX是个好东西,其全称 Open Neural Network Exchange ,是一种用于表示和交换深度学习模型的开放标准格式。由Microsoft和Facebook在2017年共同推出的一个开放标准,旨在促进不同深度学习框架之间的互操作性,并采用相同格式存储模型数据。

ONNX有诸多优势,简直让人爱不释手呀。以下简单列举几个:

  • 在不同深度学习框架(如PaddlePaddle、PyTorch、TensorFlow等)之间进行模型转换和迁移,无需重新训练;
  • 可以在一个框架中训练模型并在另一个框架中做推理,充分发挥不同框架的优势;
  • 可以在各种硬件和软件平台上运行,包括移动设备、嵌入式设备和云服务器;
  • 许多大厂参与其中,并逐渐成为表示深度学习模型的事实标准。

ONNX Runtime(ORT)是由Microsoft开发和维护的高性能开源推理引擎,旨在不同硬件平台上高效运行深度学习模型。可以看作是 ONNX 模型的官方推理引擎,同时支持 x86、ARM 架构,对所有开发者友好,支持主流的开发语言,如:Java、Python、C++、C#等。

其原理图如下:

注:重点关注橙色部分。

飞桨模型转ONNX的步骤

飞桨官方对 ONNX 提供了非常完善的支持,将其训练的模型转换为ONNX模型也是一件非常简单的事情。

Paddle2ONNX 工具支持 Linux 与 Windows 平台,但实测中发现,其对 Linux 的支持度最好,与Github上的版本保持一致,而 Windows 上的版本相对滞后(好像很久没更新了)。故建议大家在 Linux 系统上进行相关转换操作

直接上代码,按如下操作,一定可以成功。

 1、安装 Paddle2ONNX 工具
# 使用Conda 创建环境
conda create -n p2onnx python==3.10

# 切换到刚才创建的环境
conda activate p2onnx

# 安装依赖与Paddle2ONNX
pip install paddlepaddle==2.6.1 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
pip install onnxruntime
pip install paddle2onnx

验证是否安装成功

paddle2onnx --version

# 输出如下内容,表示成功
2024-08-26 16:32:50 [INFO]	paddle2onnx-1.2.8 with python>=3.8, paddlepaddle>=2.0.0
2、模型转换

1)将飞桨模型解压到 model 目录下,如下图所示:

 

2)执行转换脚本

 在 model 目录的同级目录,执行如下脚本,如图所示:

paddle2onnx --model_dir model \
            --model_filename inference.pdmodel \
            --params_filename inference.pdiparams \
            --save_file model.onnx

显示如下内容,表示转换成功,导出的 ONNX 模型在 model 同级目录

附:模型转换参数说明
参数参数说明
--model_dir配置包含 Paddle 模型的目录路径
--model_filename[可选] 配置位于 --model_dir 下存储网络结构的文件名
--params_filename[可选] 配置位于 --model_dir 下存储模型参数的文件名称
--save_file指定转换后的模型保存目录路径
--opset_version[可选] 配置转换为 ONNX 的 OpSet 版本,目前支持 7~16 等多个版本,默认为 9
--enable_onnx_checker[可选] 配置是否检查导出为 ONNX 模型的正确性, 建议打开此开关, 默认为 False
--enable_auto_update_opset[可选] 是否开启 opset version 自动升级功能,当低版本 opset 无法转换时,自动选择更高版本的 opset进行转换, 默认为 True
--deploy_backend[可选] 量化模型部署的推理引擎,支持 onnxruntime、tensorrt 或 others,当选择 others 时,所有的量化信息存储于 max_range.txt 文件中,默认为 onnxruntime
--save_calibration_file[可选] TensorRT 8.X版本部署量化模型需要读取的 cache 文件的保存路径,默认为 calibration.cache
--version[可选] 查看 paddle2onnx 版本
--external_filename[可选] 当导出的 ONNX 模型大于 2G 时,需要设置 external data 的存储路径,推荐设置为:external_data
--export_fp16_model[可选] 是否将导出的 ONNX 的模型转换为 FP16 格式,并用 ONNXRuntime-GPU

至此结束!

Enjoy It 

  • 21
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值