Open xixiaoyao opened 2 years ago
Hi, @xixiaoyao 是HuggingFace的模型转换吗,参考下这个文档 https://github.com/PaddlePaddle/X2Paddle/blob/develop/docs/inference_model_convertor/toolkits/HuggingFace2paddle.md
需要注意一下版本依赖
@xixiaoyao hi,夕小瑶~目前依赖上述版本,Torch2Paddle以及ONNX2Paddle我这边都已走通,这边建议直接从Torch转~
我这边转换代码
import torch
from transformers import AutoTokenizer, AutoModel, AutoModelForSequenceClassification
from x2paddle.convert import pytorch2paddle
save_dir = "pd_model"
jit_type = "trace"
# Load tokenizer and PyTorch weights form the Hub
tokenizer = AutoTokenizer.from_pretrained("SpanBERT/spanbert-base-cased", return_dict=False)
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
pt_model = AutoModel.from_pretrained("SpanBERT/spanbert-base-cased", return_dict=False)
pt_model.eval()
result = pt_model(inputs["input_ids"], inputs["attention_mask"], inputs["token_type_ids"])
# convert
pytorch2paddle(pt_model, save_dir , jit_type, [inputs["input_ids"], inputs["attention_mask"], inputs["token_type_ids"]])
另外,可以描述一下以下两个问题吗: 1、具体业务场景 2、为什么有转到Paddle部署的需求呢?
感谢~
@xixiaoyao hi,夕小瑶~目前依赖上述版本,Torch2Paddle以及ONNX2Paddle我这边都已走通,这边建议直接从Torch转~
我这边转换代码
import torch from transformers import AutoTokenizer, AutoModel, AutoModelForSequenceClassification from x2paddle.convert import pytorch2paddle save_dir = "pd_model" jit_type = "trace" # Load tokenizer and PyTorch weights form the Hub tokenizer = AutoTokenizer.from_pretrained("SpanBERT/spanbert-base-cased", return_dict=False) inputs = tokenizer("Hello, my dog is cute", return_tensors="pt") pt_model = AutoModel.from_pretrained("SpanBERT/spanbert-base-cased", return_dict=False) pt_model.eval() result = pt_model(inputs["input_ids"], inputs["attention_mask"], inputs["token_type_ids"]) # convert pytorch2paddle(pt_model, save_dir , jit_type, [inputs["input_ids"], inputs["attention_mask"], inputs["token_type_ids"]])
另外,可以描述一下以下两个问题吗: 1、具体业务场景 2、为什么有转到Paddle部署的需求呢?
感谢~
非常感谢!我这边也跑通了。不过我发现保存的模型是一个model.pdparams
文件,这个文件可以拿来热启模型参数,继续训练吗?或者有没有办法改成熟知的参数文件夹的形式,文件夹下面的每个文件是一个tensor,目前我的project里是用这种较老的方式读取模型参数的,而且需要手动编辑一下一些模型参数的参数名。
关于
我刚查询了一下API,这样将model.pdparams
文件转换成静态图的一堆参数小文件,不知是否正确:
>>> m = paddle.load('./model.pdparams')
>>> for k,v in m.items():
... paddle.save(v, './temp/'+k, use_binary_format=True)
@xixiaoyao 目前X2Paddle还是以预测模型转换为主,训练还是建议拿Pytorch训练好后,再进行转换,或者使用PaddleNLP
至于你说的参数文件夹,我理解是Paddle 2.0之前的参数保存形式,这边建议更新到Paddle 2.0以上,会有更多优化策略~
好的了解,感谢
感谢您参与 X2Paddle 社区! 问题模版为了 X2Paddle 能更好的迭代,例如新功能发布、 RoadMaps 和错误跟踪. :smile_cat:
问题描述
首先将pytorch的spanBERT模型转换成onnx模型,这一步没报错,代码如下
而后用如下命令试图将onnx模型转成paddle格式:
结果报错:
具体信息