问题描述

本地使用领域语料预训练Bert,将生成的pytorch_model.bin模型转化成paddle使用的model.pdparams模型。

过程

  1. pytorch > onnx

    准备库:pytorch要大于等于1.8.0

    pip install transformers[onnx]
    

    先将预训练模型保存成.pt格式

    from transformers import AutoTokenizer, AutoModelForSequenceClassification
    
    # Load tokenizer and PyTorch weights form the Hub
    tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased")
    pt_model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased")
    # Save to disk
    tokenizer.save_pretrained("local-pt-checkpoint")
    pt_model.save_pretrained("local-pt-checkpoint")
    

    然后将local-pt-checkpoint文件夹内的模型转化成onnx,放入onnx文件夹

    python -m transformers.onnx --model=local-pt-checkpoint onnx/
    
  2. onnx > paddle

    准备库:

    pip install x2paddle
    conda install -c paddle paddlepaddle  sympy
    

    将onnx 转化成 paddle,存入pd_model中。

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

    附一张成功转化截图,标红位置为需要填的模型的输入形状和成功结果!

    文件内容图:



祝您顺利!

参考

  1. https://huggingface.co/docs/transformers/serialization
  2. https://blog.csdn/qq_37541097/article/details/119906697

更多推荐

pytorch bert to paddle 模型转化