SBERT模型转化与部署

模型转化图

 

transformers to onnx

新创建一个空文件夹onnx,然后进入转换,否则会报错

(base) D:\fine_tune\onnx>python ../convert_graph_to_onnx.py --framework pt --model ../bert-base-cased bert-base-cased.onnx

参考:

Exporting transformers models

onnx to tensorflow pb

安装onnx-tensorflow:

git clone https://github.com/onnx/onnx-tensorflow.git

cd onnx-tensorflow

pip install -e .

import onnx
from onnx_tf.backend import prepare


def onnx2pb(onnx_input_path, pb_output_path):
    onnx_model = onnx.load(onnx_input_path)  # load onnx model
    tf_exp = prepare(onnx_model)  # prepare tf representation
    tf_exp.export_graph(pb_output_path)  # export the model

onnx_input_path = 'bert-base-cased.onnx'
pb_output_path = 'bert-base-cased.pb'

onnx2pb(onnx_input_path, pb_output_path)

新pb使用

训练好的模型转换到pb以后,可用,效果还原。

使用 transformers的tokenizer + pb model + tf实现的mean_pooling来实现SBERT功能。

transformers tokenizer


tokenizer_config.json

tokenizer.json

—— 有了以上两个文件就可以使用transformers的tokenizer

 参考:

​​​​​​​Tokenizer

tensorflow serving

serving从资料看,都是以model为单位的,貌似没有自定义RestAPI后端。所以,只能把功能整合到一个model里。

https://github.com/huggingface/transformers/issues/8495

—— 目前tokenizer包在model里还不支持

Use pre-trained Huggingface models in TensorFlow Serving

—— tokenizer在客户端做的,只有model是请求部分。

Is that possible to embed the tokenizer into the model to have it running on GCP using TensorFlow Serving?

https://github.com/tensorflow/serving/issues/663

https://www.tensorflow.org/tfx/guide/serving

https://github.com/tensorflow/serving/issues/770

目前看,有以下方案:

  1. custom ModelServer in C++
  2. preprocessing in Flask and wrap tensorflow server with a Flask server
  3. preprocess and pooling in client

方案2、3本质上就是在tensorflow serving外再包一层。

方案2、3可以在tensorflow serving 上面client部分包装一层,而不是直接拿来用。

使用 TensorFlow Serving 和 Flask 部署 Keras 模型

 想把py torch 转化的model再组装成自定义tensorflow的model,输入是不匹配的,会报错如下,所以不可行。

TypeError: Cannot convert value torch.int64 to a TensorFlow DType.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值