小白Bert系列-生成pb模型,tfserving加载,flask进行预测

本文介绍了如何将预训练的BERT模型转化为PB格式,利用TFServing进行服务化部署,并通过Flask进行预测。详细步骤包括模型输出文件的准备、PB模型生成、TFServing服务的启动以及使用Flask客户端进行预测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bert分类模型使用tfserving部署。

bert模型服务化现在已经有对应开源库部署。

例如:1.https://github.com/macanv/BERT-BiLSTM-CRF-NER 该项目支持三种不同的任务

2.使用已有的包
pip install bert-serving-server # 服务端
pip install bert-serving-client # 客户端,与服务端互相独立

本文主要记录通过bert预训练的模型如何使用tfserving进行加载,这样在已有的tfserving model_config服务下增加一个config就可以了。

1.bert 分类模型见这篇文章。

模型实践(二)bert

2.模型输出文件

训练过程种需要注意在该文件run_classifier.py额外需要添加

def convert_single_example(ex_index, example, label_list, max_seq_length,
                           tokenizer):
  """Converts a single `InputExample` into a single `InputFeatures`."""

  if isinstance(example, PaddingInputExample):
    return InputFeatures(
        input_ids=[0] * max_seq_length,
        input_mask=[0] * max_seq_length,
        segment_ids=[0] * max_seq_length,
        label_id=0,
        is_real_example=False)

  label_map = {
   }
  for (i, label) in enumerate(label_list):
    label_map[label] = i

  #!!!!额外添加 保存标签信息和枚举的映射关系 并写入label2id.pkl 该文件会一起输出到output文件夹下
  output_label2id_file = os.path.join(FLAGS.output_dir, "label2id.pkl")
  if not os.path.exists(output_label2id_file):
    with open(output_label2id_file,'wb') as w:
      pickle.dump(label_map
### 加载和使用 `bert-base-chinese` 模型 为了加载并使用 `bert-base-chinese` 模型,在 Python 中可以采用 Hugging Face 的 Transformers 库来实现。具体操作如下: #### 导入必要的库 首先,确保安装了 transformers 和 torch 库之后,导入所需的类。 ```python from transformers import BertModel, BertTokenizer import torch ``` #### 初始化模型与分词器 通过指定路径或默认名称初始化 BERT 模型及其对应的分词工具。如果本地已有下载好的权重文件,则可以通过绝对路径指向这些资源;否则可以直接调用远程仓库中的版本[^1]。 ```python # 使用本地存储的预训练模型和分词器 model_path = 'D:\\MyPython\\data\\bert-base-chinese' tokenizer = BertTokenizer.from_pretrained(model_path) model = BertModel.from_pretrained(model_path) # 或者直接从HuggingFace官方获取 (无需提前下载到本地) # tokenizer = BertTokenizer.from_pretrained('bert-base-chinese') # model = BertModel.from_pretrained('bert-base-chinese') ``` #### 对输入文本进行编码 利用上述创建好的分词实例对目标字符串执行 tokenization 处理,并转换成适合喂给神经网络的形式——即包含 attention mask 等辅助信息在内的 tensor 结构[^2]。 ```python text = "你好,世界!" encoded_input = tokenizer(text, return_tensors='pt', padding=True, truncation=True) print(encoded_input) ``` #### 执行前向传播计算 最后一步就是把准备完毕的数据送入已经构建完成的 BERT 架构里边去跑一遍 forward pass ,从而获得最终的结果输出。 ```python with torch.no_grad(): outputs = model(**encoded_input) last_hidden_states = outputs.last_hidden_state print(last_hidden_states.shape) # 输出形状应为(batch_size, sequence_length, hidden_size),这里hidden_size=768 ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值