Skip to content

Deep learning model converter for PaddlePaddle. (『飞桨』深度学习模型转换工具)

License

Notifications You must be signed in to change notification settings

PaddlePaddle/X2Paddle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

cb1a779 · Feb 24, 2025
Oct 17, 2024
Dec 13, 2024
Dec 9, 2024
Jan 15, 2025
Feb 24, 2025
Jan 15, 2025
Jul 30, 2024
Jul 29, 2024
Jul 30, 2024
Mar 28, 2019
Feb 24, 2025
Jan 9, 2019
Dec 13, 2024
Dec 13, 2024
Jul 30, 2024
Oct 18, 2024
Jul 31, 2024

Repository files navigation

X2Paddle

PyPI - X2Paddle Version PyPI Status License Version python version

简介

X2Paddle是飞桨生态下的模型转换工具,致力于帮助其它深度学习框架用户快速迁移至飞桨框架。目前支持推理模型的框架转换PyTorch训练代码迁移,我们还提供了详细的不同框架间API对比文档,降低开发者将模型迁移到飞桨的时间成本。

特性

  • 支持主流深度学习框架

    • 目前已经支持Caffe/TensorFlow/ONNX/PyTorch四大框架的预测模型的转换,PyTorch训练项目的转换,涵盖了目前市面主流深度学习框架,详见 支持模型列表测试 demo
  • 支持的模型丰富

    • 在主流的CV和NLP模型上支持大部分模型转换,目前X2Paddle支持130+ PyTorch OP,90+ ONNX OP,90+ TensorFlow OP 以及 30+ Caffe OP,详见 支持列表
  • 简洁易用

    • 一条命令行或者一个API即可完成模型转换

能力

  • 预测模型转换

    • 支持Caffe/TensorFlow/ONNX/PyTorch的模型一键转为飞桨的预测模型,并使用PaddleInference/PaddleLite进行CPU/GPU/Arm等设备的部署
  • PyTorch训练项目转换

    • 支持PyTorch项目Python代码(包括训练、预测)一键转为基于飞桨框架的项目代码,帮助开发者快速迁移项目,并可享受AIStudio平台对于飞桨框架提供的海量免费计算资源【新功能,试一下!】
  • API对应文档

    • 详细的API文档对比分析,帮助开发者快速从PyTorch框架的使用迁移至飞桨框架的使用,大大降低学习成本 【新内容,了解一下!】

安装

环境依赖

  • python >= 3.8
  • paddlepaddle >= 2.2.2 (官方验证到 3.0.0beta1)
  • tensorflow == 1.14 (如需转换TensorFlow模型。其中 test_benchmark 模型已在 2.16.1 测试通过)
  • onnx >= 1.6.0 (如需转换ONNX模型,其中 test_benchmark 模型已在 1.17.0 测试通过)
  • torch >= 1.5.0 (如需转换PyTorch模型,其中 test_benchmark 模型已在 2.4.1 测试通过)
  • paddlelite >= 2.9.0 (如需一键转换成Paddle-Lite支持格式,推荐最新版本)

说明:以上测试通过的版本,不代表 X2Paddle 支持相应版本中的所有算子,仅表示可在此环境中使用。具体支持的算子请详见 支持列表

pip安装(推荐)

如需使用稳定版本,可通过pip方式安装X2Paddle:

pip install x2paddle

源码安装

如需体验最新功能,可使用源码安装方式:

git clone https://github.com/PaddlePaddle/X2Paddle.git
cd X2Paddle
git checkout develop
python setup.py install

快速开始

功能一:推理模型转换

PyTorch模型转换

from x2paddle.convert import pytorch2paddle
pytorch2paddle(module=torch_module,
               save_dir="./pd_model",
               jit_type="trace",
               input_examples=[torch_input])
# module (torch.nn.Module): PyTorch的Module。
# save_dir (str): 转换后模型的保存路径。
# jit_type (str): 转换方式。默认为"trace"。
# input_examples (list[torch.tensor]): torch.nn.Module的输入示例,list的长度必须与输入的长度一致。默认为None。

script模式以及更多细节可参考PyTorch模型转换文档

TensorFlow模型转换

x2paddle --framework=tensorflow --model=tf_model.pb --save_dir=pd_model

ONNX模型转换

x2paddle --framework=onnx --model=onnx_model.onnx --save_dir=pd_model

Caffe模型转换

x2paddle --framework=caffe --prototxt=deploy.prototxt --weight=deploy.caffemodel --save_dir=pd_model

转换参数说明

参数 作用
--framework 源模型类型 (tensorflow、caffe、onnx)
--prototxt 当framework为caffe时,该参数指定caffe模型的proto文件路径
--weight 当framework为caffe时,该参数指定caffe模型的参数文件路径
--save_dir 指定转换后的模型保存目录路径
--model 当framework为tensorflow/onnx时,该参数指定tensorflow的pb模型文件或onnx模型路径
--input_shape_dict [可选] For ONNX, 定义ONNX模型输入大小
--caffe_proto [可选] 由caffe.proto编译成caffe_pb2.py文件的存放路径,当存在自定义Layer时使用,默认为None
--define_input_shape [可选] For TensorFlow, 当指定该参数时,强制用户输入每个Placeholder的shape,见文档Q2
--enable_code_optim [可选] For PyTorch, 是否对生成代码进行优化,默认为False
--to_lite [可选] 是否使用opt工具转成Paddle-Lite支持格式,默认为False
--lite_valid_places [可选] 指定转换类型,可以同时指定多个backend(以逗号分隔),opt将会自动选择最佳方式,默认为arm
--lite_model_type [可选] 指定模型转化类型,目前支持两种类型:protobuf和naive_buffer,默认为naive_buffer
--disable_feedback [可选] 是否关闭X2Paddle使用反馈;X2Paddle默认会统计用户在进行模型转换时的成功率,以及转换框架来源等信息,以便于帮忙X2Paddle根据用户需求进行迭代,不会上传用户的模型文件。如若不想参与反馈,可指定此参数为False即可

X2Paddle API

目前X2Paddle提供API方式转换模型,可参考X2PaddleAPI

一键转换Paddle-Lite支持格式

可参考使用X2paddle导出Paddle-Lite支持格式

功能二:PyTorch模型训练迁移

项目转换包括3个步骤

  1. 项目代码预处理
  2. 代码/预训练模型一键转换
  3. 转换后代码后处理

详见PyTorch训练项目转换文档

使用VisualDL进行模型转换

飞桨可视化工具VisualDL已经将模型转换工具部署在官网提供服务,可以点击服务链接进行在线的ONNX2Paddle模型转换。

ONNX2Paddle

使用教程

  1. TensorFlow预测模型转换教程
  2. MMDetection模型转换指南
  3. PyTorch预测模型转换教程
  4. PyTorch训练项目转换教程

🤗贡献代码🤗

我们非常欢迎您为X2Paddle贡献代码或者提供使用建议: