paddle2onnx


Namepaddle2onnx JSON
Version 2.0.0 PyPI version JSON
download
home_pageNone
SummaryExport PaddlePaddle to ONNX
upload_time2025-02-06 11:55:33
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseApache License v2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Paddle2ONNX

简体中文 | [English](README_en.md)

## 1 Paddle2ONNX 简介

Paddle2ONNX 支持将 **PaddlePaddle** 模型格式转化到 **ONNX** 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括 TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。

## 2 Paddle2ONNX 环境依赖

Paddle2ONNX 依赖PaddlePaddle3.0,我们建议您在以下环境下使用 Paddle2ONNX :

- PaddlePaddle == 3.0.0b2
- onnxruntime >= 1.10.0

## 3 安装 Paddle2ONNX

如果您只是想要安装 Paddle2ONNX 且没有二次开发的需求,你可以通过执行以下代码来快速安装 Paddle2ONNX

```
pip install paddle2onnx
```

如果你希望对 Paddle2ONNX 进行二次开发,请按照[Github 源码安装方式](docs/zh/compile_local.md)编译Paddle2ONNX。

## 4 快速使用教程

### 4.1 获取PaddlePaddle部署模型

Paddle2ONNX 在导出模型时,需要传入部署模型格式,包括两个文件

- `model_name.json`: 表示模型结构
- `model_name.pdiparams`: 表示模型参数

### 4.2 调整Paddle模型

如果对Paddle模型的输入输出需要做调整,可以前往[Paddle 相关工具](./tools/paddle/README.md)查看教程。

### 4.3 使用命令行转换 PaddlePaddle 模型

你可以通过使用命令行并通过以下命令将Paddle模型转换为ONNX模型

```bash
paddle2onnx --model_dir model_dir \
            --model_filename model.json \
            --params_filename model.pdiparams \
            --save_file model.onnx
```

可调整的转换参数如下表:

| 参数                         | 参数说明                                                                                                            |
|----------------------------|-----------------------------------------------------------------------------------------------------------------|
| --model_dir                | 配置包含 Paddle 模型的目录路径                                                                                             |
| --model_filename           | **[可选]** 配置位于 `--model_dir` 下存储网络结构的文件名                                                                         |
| --params_filename          | **[可选]** 配置位于 `--model_dir` 下存储模型参数的文件名称                                                                        |
| --save_file                | 指定转换后的模型保存目录路径                                                                                                  |
| --opset_version            | **[可选]** 配置转换为 ONNX 的 OpSet 版本,目前支持 7~19 等多个版本,默认为 9                                                            |
| --enable_onnx_checker      | **[可选]**  配置是否检查导出为 ONNX 模型的正确性, 建议打开此开关, 默认为 True                                                             |
| --enable_auto_update_opset | **[可选]**  是否开启 opset version 自动升级功能,当低版本 opset 无法转换时,自动选择更高版本的 opset进行转换, 默认为 True                              |
| --deploy_backend           | **[可选]** 量化模型部署的推理引擎,支持 onnxruntime/rknn/tensorrt, 默认为 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 加速推理,默认为 False                                           |
| --custom_ops               | **[可选]** 将 Paddle OP 导出为 ONNX 的 Custom OP,例如:--custom_ops '{"paddle_op":"onnx_op"},默认为 {}                       |


### 4.4 裁剪ONNX

如果你需要调整 ONNX 模型,请参考 [ONNX 相关工具](./tools/onnx/README.md)

### 4.5 优化ONNX

如你对导出的 ONNX 模型有优化的需求,推荐使用 `onnxslim` 对模型进行优化:

```bash
pip install onnxslim
onnxslim model.onnx slim.onnx
```

## 5 代码贡献

繁荣的生态需要大家的携手共建,开发者可以参考 [Paddle2ONNX 贡献指南](./docs/zh/Paddle2ONNX_Development_Guide.md) 来为 Paddle2ONNX 贡献代码。

## 6 License

Provided under the [Apache-2.0 license](https://github.com/PaddlePaddle/paddle-onnx/blob/develop/LICENSE).

## 7 感谢捐赠

* 感谢 PaddlePaddle 团队提供服务器支持 Paddle2ONNX 的 CI 建设。
* 感谢社区用户 [chenwhql](https://github.com/chenwhql), [luotao1](https://github.com/luotao1), [goocody](https://github.com/goocody), [jeff41404](https://github.com/jeff41404), [jzhang553](https://github.com/jzhang533), [ZhengBicheng](https://github.com/ZhengBicheng) 于2024年03月28日向 Paddle2ONNX PMC 捐赠共 10000 元人名币用于 Paddle2ONNX 的发展。

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "paddle2onnx",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": "paddle-infer <paddle-infer@baidu.com>",
    "download_url": null,
    "platform": null,
    "description": "# Paddle2ONNX\n\n\u7b80\u4f53\u4e2d\u6587 | [English](README_en.md)\n\n## 1 Paddle2ONNX \u7b80\u4ecb\n\nPaddle2ONNX \u652f\u6301\u5c06 **PaddlePaddle** \u6a21\u578b\u683c\u5f0f\u8f6c\u5316\u5230 **ONNX** \u6a21\u578b\u683c\u5f0f\u3002\u901a\u8fc7 ONNX \u53ef\u4ee5\u5b8c\u6210\u5c06 Paddle \u6a21\u578b\u5230\u591a\u79cd\u63a8\u7406\u5f15\u64ce\u7684\u90e8\u7f72\uff0c\u5305\u62ec TensorRT/OpenVINO/MNN/TNN/NCNN\uff0c\u4ee5\u53ca\u5176\u5b83\u5bf9 ONNX \u5f00\u6e90\u683c\u5f0f\u8fdb\u884c\u652f\u6301\u7684\u63a8\u7406\u5f15\u64ce\u6216\u786c\u4ef6\u3002\n\n## 2 Paddle2ONNX \u73af\u5883\u4f9d\u8d56\n\nPaddle2ONNX \u4f9d\u8d56PaddlePaddle3.0\uff0c\u6211\u4eec\u5efa\u8bae\u60a8\u5728\u4ee5\u4e0b\u73af\u5883\u4e0b\u4f7f\u7528 Paddle2ONNX \uff1a\n\n- PaddlePaddle == 3.0.0b2\n- onnxruntime >= 1.10.0\n\n## 3 \u5b89\u88c5 Paddle2ONNX\n\n\u5982\u679c\u60a8\u53ea\u662f\u60f3\u8981\u5b89\u88c5 Paddle2ONNX \u4e14\u6ca1\u6709\u4e8c\u6b21\u5f00\u53d1\u7684\u9700\u6c42\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7\u6267\u884c\u4ee5\u4e0b\u4ee3\u7801\u6765\u5feb\u901f\u5b89\u88c5 Paddle2ONNX\n\n```\npip install paddle2onnx\n```\n\n\u5982\u679c\u4f60\u5e0c\u671b\u5bf9 Paddle2ONNX \u8fdb\u884c\u4e8c\u6b21\u5f00\u53d1\uff0c\u8bf7\u6309\u7167[Github \u6e90\u7801\u5b89\u88c5\u65b9\u5f0f](docs/zh/compile_local.md)\u7f16\u8bd1Paddle2ONNX\u3002\n\n## 4 \u5feb\u901f\u4f7f\u7528\u6559\u7a0b\n\n### 4.1 \u83b7\u53d6PaddlePaddle\u90e8\u7f72\u6a21\u578b\n\nPaddle2ONNX \u5728\u5bfc\u51fa\u6a21\u578b\u65f6\uff0c\u9700\u8981\u4f20\u5165\u90e8\u7f72\u6a21\u578b\u683c\u5f0f\uff0c\u5305\u62ec\u4e24\u4e2a\u6587\u4ef6\n\n- `model_name.json`: \u8868\u793a\u6a21\u578b\u7ed3\u6784\n- `model_name.pdiparams`: \u8868\u793a\u6a21\u578b\u53c2\u6570\n\n### 4.2 \u8c03\u6574Paddle\u6a21\u578b\n\n\u5982\u679c\u5bf9Paddle\u6a21\u578b\u7684\u8f93\u5165\u8f93\u51fa\u9700\u8981\u505a\u8c03\u6574\uff0c\u53ef\u4ee5\u524d\u5f80[Paddle \u76f8\u5173\u5de5\u5177](./tools/paddle/README.md)\u67e5\u770b\u6559\u7a0b\u3002\n\n### 4.3 \u4f7f\u7528\u547d\u4ee4\u884c\u8f6c\u6362 PaddlePaddle \u6a21\u578b\n\n\u4f60\u53ef\u4ee5\u901a\u8fc7\u4f7f\u7528\u547d\u4ee4\u884c\u5e76\u901a\u8fc7\u4ee5\u4e0b\u547d\u4ee4\u5c06Paddle\u6a21\u578b\u8f6c\u6362\u4e3aONNX\u6a21\u578b\n\n```bash\npaddle2onnx --model_dir model_dir \\\n            --model_filename model.json \\\n            --params_filename model.pdiparams \\\n            --save_file model.onnx\n```\n\n\u53ef\u8c03\u6574\u7684\u8f6c\u6362\u53c2\u6570\u5982\u4e0b\u8868:\n\n| \u53c2\u6570                         | \u53c2\u6570\u8bf4\u660e                                                                                                            |\n|----------------------------|-----------------------------------------------------------------------------------------------------------------|\n| --model_dir                | \u914d\u7f6e\u5305\u542b Paddle \u6a21\u578b\u7684\u76ee\u5f55\u8def\u5f84                                                                                             |\n| --model_filename           | **[\u53ef\u9009]** \u914d\u7f6e\u4f4d\u4e8e `--model_dir` \u4e0b\u5b58\u50a8\u7f51\u7edc\u7ed3\u6784\u7684\u6587\u4ef6\u540d                                                                         |\n| --params_filename          | **[\u53ef\u9009]** \u914d\u7f6e\u4f4d\u4e8e `--model_dir` \u4e0b\u5b58\u50a8\u6a21\u578b\u53c2\u6570\u7684\u6587\u4ef6\u540d\u79f0                                                                        |\n| --save_file                | \u6307\u5b9a\u8f6c\u6362\u540e\u7684\u6a21\u578b\u4fdd\u5b58\u76ee\u5f55\u8def\u5f84                                                                                                  |\n| --opset_version            | **[\u53ef\u9009]** \u914d\u7f6e\u8f6c\u6362\u4e3a ONNX \u7684 OpSet \u7248\u672c\uff0c\u76ee\u524d\u652f\u6301 7~19 \u7b49\u591a\u4e2a\u7248\u672c\uff0c\u9ed8\u8ba4\u4e3a 9                                                            |\n| --enable_onnx_checker      | **[\u53ef\u9009]**  \u914d\u7f6e\u662f\u5426\u68c0\u67e5\u5bfc\u51fa\u4e3a ONNX \u6a21\u578b\u7684\u6b63\u786e\u6027, \u5efa\u8bae\u6253\u5f00\u6b64\u5f00\u5173\uff0c \u9ed8\u8ba4\u4e3a True                                                             |\n| --enable_auto_update_opset | **[\u53ef\u9009]**  \u662f\u5426\u5f00\u542f opset version \u81ea\u52a8\u5347\u7ea7\u529f\u80fd\uff0c\u5f53\u4f4e\u7248\u672c opset \u65e0\u6cd5\u8f6c\u6362\u65f6\uff0c\u81ea\u52a8\u9009\u62e9\u66f4\u9ad8\u7248\u672c\u7684 opset\u8fdb\u884c\u8f6c\u6362\uff0c \u9ed8\u8ba4\u4e3a True                              |\n| --deploy_backend           | **[\u53ef\u9009]** \u91cf\u5316\u6a21\u578b\u90e8\u7f72\u7684\u63a8\u7406\u5f15\u64ce\uff0c\u652f\u6301 onnxruntime/rknn/tensorrt, \u9ed8\u8ba4\u4e3a onnxruntime |\n| --save_calibration_file    | **[\u53ef\u9009]** TensorRT 8.X\u7248\u672c\u90e8\u7f72\u91cf\u5316\u6a21\u578b\u9700\u8981\u8bfb\u53d6\u7684 cache \u6587\u4ef6\u7684\u4fdd\u5b58\u8def\u5f84\uff0c\u9ed8\u8ba4\u4e3a calibration.cache                                          |\n| --version                  | **[\u53ef\u9009]** \u67e5\u770b paddle2onnx \u7248\u672c                                                                                      |\n| --external_filename        | **[\u53ef\u9009]** \u5f53\u5bfc\u51fa\u7684 ONNX \u6a21\u578b\u5927\u4e8e 2G \u65f6\uff0c\u9700\u8981\u8bbe\u7f6e external data \u7684\u5b58\u50a8\u8def\u5f84\uff0c\u63a8\u8350\u8bbe\u7f6e\u4e3a\uff1aexternal_data                                       |\n| --export_fp16_model        | **[\u53ef\u9009]** \u662f\u5426\u5c06\u5bfc\u51fa\u7684 ONNX \u7684\u6a21\u578b\u8f6c\u6362\u4e3a FP16 \u683c\u5f0f\uff0c\u5e76\u7528 ONNXRuntime-GPU \u52a0\u901f\u63a8\u7406\uff0c\u9ed8\u8ba4\u4e3a False                                           |\n| --custom_ops               | **[\u53ef\u9009]** \u5c06 Paddle OP \u5bfc\u51fa\u4e3a ONNX \u7684 Custom OP\uff0c\u4f8b\u5982\uff1a--custom_ops '{\"paddle_op\":\"onnx_op\"}\uff0c\u9ed8\u8ba4\u4e3a {}                       |\n\n\n### 4.4 \u88c1\u526aONNX\n\n\u5982\u679c\u4f60\u9700\u8981\u8c03\u6574 ONNX \u6a21\u578b\uff0c\u8bf7\u53c2\u8003 [ONNX \u76f8\u5173\u5de5\u5177](./tools/onnx/README.md)\n\n### 4.5 \u4f18\u5316ONNX\n\n\u5982\u4f60\u5bf9\u5bfc\u51fa\u7684 ONNX \u6a21\u578b\u6709\u4f18\u5316\u7684\u9700\u6c42\uff0c\u63a8\u8350\u4f7f\u7528 `onnxslim` \u5bf9\u6a21\u578b\u8fdb\u884c\u4f18\u5316:\n\n```bash\npip install onnxslim\nonnxslim model.onnx slim.onnx\n```\n\n## 5 \u4ee3\u7801\u8d21\u732e\n\n\u7e41\u8363\u7684\u751f\u6001\u9700\u8981\u5927\u5bb6\u7684\u643a\u624b\u5171\u5efa\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u53c2\u8003 [Paddle2ONNX \u8d21\u732e\u6307\u5357](./docs/zh/Paddle2ONNX_Development_Guide.md) \u6765\u4e3a Paddle2ONNX \u8d21\u732e\u4ee3\u7801\u3002\n\n## 6 License\n\nProvided under the [Apache-2.0 license](https://github.com/PaddlePaddle/paddle-onnx/blob/develop/LICENSE).\n\n## 7 \u611f\u8c22\u6350\u8d60\n\n* \u611f\u8c22 PaddlePaddle \u56e2\u961f\u63d0\u4f9b\u670d\u52a1\u5668\u652f\u6301 Paddle2ONNX \u7684 CI \u5efa\u8bbe\u3002\n* \u611f\u8c22\u793e\u533a\u7528\u6237 [chenwhql](https://github.com/chenwhql), [luotao1](https://github.com/luotao1), [goocody](https://github.com/goocody), [jeff41404](https://github.com/jeff41404), [jzhang553](https://github.com/jzhang533), [ZhengBicheng](https://github.com/ZhengBicheng) \u4e8e2024\u5e7403\u670828\u65e5\u5411 Paddle2ONNX PMC \u6350\u8d60\u5171 10000 \u5143\u4eba\u540d\u5e01\u7528\u4e8e Paddle2ONNX \u7684\u53d1\u5c55\u3002\n",
    "bugtrack_url": null,
    "license": "Apache License v2.0",
    "summary": "Export PaddlePaddle to ONNX",
    "version": "2.0.0",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "28e671a48689b578b8b38e37728f5540d9000ed8c6b520387c558e97ddd439da",
                "md5": "ed8e9f19021ed1d481066fea89c89b9f",
                "sha256": "f659102c11ddfc45a2b91bb8d19e9b042ae6a828025b7c40c7f6f199e48927c8"
            },
            "downloads": -1,
            "filename": "paddle2onnx-2.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ed8e9f19021ed1d481066fea89c89b9f",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 3659148,
            "upload_time": "2025-02-06T11:55:33",
            "upload_time_iso_8601": "2025-02-06T11:55:33.869953Z",
            "url": "https://files.pythonhosted.org/packages/28/e6/71a48689b578b8b38e37728f5540d9000ed8c6b520387c558e97ddd439da/paddle2onnx-2.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e7b03af89ead16d09d27a2b5a9bbe89a9bfcce3bf10e212df886708684664e43",
                "md5": "6b7c97b2318fdcf49a2c606f8e840f1e",
                "sha256": "bf5c5a14930ad64ba79297087f472cdd9c48bddf3d05ae3ed06d404b551266b3"
            },
            "downloads": -1,
            "filename": "paddle2onnx-2.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6b7c97b2318fdcf49a2c606f8e840f1e",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 3660768,
            "upload_time": "2025-02-06T11:36:09",
            "upload_time_iso_8601": "2025-02-06T11:36:09.511082Z",
            "url": "https://files.pythonhosted.org/packages/e7/b0/3af89ead16d09d27a2b5a9bbe89a9bfcce3bf10e212df886708684664e43/paddle2onnx-2.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-06 11:55:33",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "paddle2onnx"
}
        
Elapsed time: 0.38154s