• 使用Flask框架进行模型部署的步骤:
      • 第一步: 部署模型预测代码.
      • 第二步: 以挂起的方式启动服务.
      • 第三步: 进行测试.

    • 第一步: 部署模型预测代码
      1. from flask import Flask
      2. from flask import request
      3. app = Flask(__name__)
      4. import torch
      5. # 导入中文预训练模型编码函数
      6. from bert_chinese_encode import get_bert_encode
      7. # 导入微调网络
      8. from finetuning_net import Net
      9. # 导入训练好的模型
      10. MODEL_PATH = "./model/BERT_net.pth"
      11. # 定义实例化模型参数
      12. embedding_size = 768
      13. char_size = 20
      14. dropout = 0.2
      15. # 初始化微调网络模型
      16. net = Net(embedding_size, char_size, dropout)
      17. # 加载模型参数
      18. net.load_state_dict(torch.load(MODEL_PATH))
      19. # 使用评估模式
      20. net.eval()
      21. # 定义服务请求路径和方式
      22. @app.route('/v1/recognition/', methods=["POST"])
      23. def recognition():
      24. # 接收数据
      25. text_1 = request.form['text1']
      26. text_2 = request.form['text2']
      27. # 对原始文本进行编码
      28. inputs = get_bert_encode(text_1, text_2, mark=102, max_len=10)
      29. # 使用微调模型进行预测
      30. outputs = net(inputs)
      31. # 获得预测结果
      32. _, predicted = torch.max(outputs, 1)
      33. # 返回字符串类型的结果
      34. return str(predicted.item())

    • 代码位置: /data/doctor_online/bert_serve/app.py

    • 第二步: 启动服务
      1. gunicorn -w 1 -b 0.0.0.0:5001 app:app

    • 第三步: 进行测试
      • 测试脚本:
    1. import requests
    2. url = "http://0.0.0.0:5001/v1/recognition/"
    3. data = {"text1":"人生该如何起头", "text2": "改变要如何起手"}
    4. res = requests.post(url, data=data)
    5. print("预测样本:", data["text_1"], "|", data["text_2"])
    6. print("预测结果:", res.text)

    • 代码位置: /data/doctor_online/bert_serve/test.py

    • 运行脚本:
    1. python test.py
    • 输出效果:
    1. 预测样本: 人生该如何起头 | 改变要如何起手
    2. 预测结果: 1

    • 小节总结:
      • 学习了使用Flask框架进行模型部署的实现过程:
        • 第一步: 部署模型预测代码.
        • 第二步: 以挂起的方式启动服务.
        • 第三步: 进行测试.