【flask】算法部署:只加载一次模型,减少每次接口响应时间

这篇具有很好参考价值的文章主要介绍了【flask】算法部署:只加载一次模型,减少每次接口响应时间。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写于2022.09.17,2022.10.12增加性能测试对比,2022.11.6增加单例模式方法

机器学习或深度学习算法模型在进行服务端部署时,通常通过flask包装为服务接口,对外进行调用,但存在一定一个问题是:每次调用模型进行预测时,都会加载一次模型,这个过程是比较占资源的,换言之,很耗时。

如何在flask刚启动时就加载一次模型,后续在调用接口时就不再调用模型了,直接进行预测。

方法一:模型加载为全局变量

from flask import Flask, request
import pickle

app = Flask(__name__)

# 在这里进行模型的加载,如导入pkl 
model = pickle.load(open('model.pkl','rb'))

@app.route('/predict', methods=['GET'])
def predict():
    '''这里获取接口的请求参数,下面是举例'''
    features = request.args.get("feature")
    #  调用模型进行预测
    result = model.predict(features)
    return result

if __name__ == "__main__":
    app.run(port=80,debug = True)

以一个实际的中文分词接口部署为例:
需要安装LAC,LAC是百度出品的一个中文分词工具,很好用。
pip install LAC

from flask import Flask, request
from LAC import LAC

app = Flask(__name__)

# 装载LAC模型
lac = LAC(mode='lac')

@app.route('/predict', methods=['GET'])
def predict():
    text = request.args.get("text")
    #  调用模型进行预测
    result = lac.run(text)
    return str(result)

if __name__ == "__main__":
    app.run(port=8080,debug=True)

访问接口:
http://127.0.0.1:8080/predict?text=我爱北京天安门
【flask】算法部署:只加载一次模型,减少每次接口响应时间
每次访问时,都无需再加载模型,模型相当于一个全局变量,每次接口请求时,直接调用即可。非常快!

方法二:使用单例模式

首先创建一个文件用于加载模型:
load.py

from LAC import LAC

class MODEL:
    def __init__(self):
       self.model = LAC(mode='lac')

lac = MODEL()

在main.py中进行引用

from flask import Flask, request
from load import lac

app = Flask(__name__)


@app.route('/predict', methods=['GET'])
def predict():

    text = request.args.get("text")
    #  调用模型进行预测
    result = lac.model.run(text)
    return str(result)

if __name__ == "__main__":
    app.run(port=8080)

其它单例模式实现,请参考:
https://blog.csdn.net/qq_41248532/article/details/123246471?spm=1001.2014.3001.5506

两种方法的区别有待研究。

附性能测试:
方式一:参照本文方法
【flask】算法部署:只加载一次模型,减少每次接口响应时间

单次调用响应时间:16ms

方式二:每次调用接口时,都加载模型

from flask import Flask, request
from LAC import LAC

app = Flask(__name__)

@app.route('/predict', methods=['GET'])
def predict():
    text = request.args.get("text")

    # 装载LAC模型
    lac = LAC(mode='lac')
    
    #  调用模型进行预测
    result = lac.run(text)
    return str(result)

if __name__ == "__main__":
    app.run(port=8080,debug=True)

【flask】算法部署:只加载一次模型,减少每次接口响应时间
单次调用响应时间:468ms
可以发现响应时间优化非常明显!文章来源地址https://www.toymoban.com/news/detail-413151.html

到了这里,关于【flask】算法部署:只加载一次模型,减少每次接口响应时间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 模型部署flask学习篇(二)---- flask用户登录&用户管理

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 在学习机器学习或者深度学习后,我们常常会将自己训练好的模型来进行部署或者可视化出来,供自己或者别人来使用,那么python的flask框架就可以作为选择之一。 1、 flask路由:可以接收get请求和post请求

    2024年01月25日
    浏览(39)
  • 模型部署flask学习篇(一)---- flask初始及创建登录页面

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 在学习机器学习或者深度学习后,我们常常会将自己训练好的模型来进行部署或者可视化出来,供自己或者别人来使用,那么python的flask框架就可以作为选择之一。 安装 如何使用flask打印 hello world 总结

    2024年01月24日
    浏览(43)
  • 使用Flask简单部署深度学习模型

    当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。 此时,Web服务器会把来自客户端的所有请求都交给Flask程序实例。 程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。 根据每个URL请求,找到具体的视图函数并进行调用。在Flask程序中,路由的

    2023年04月25日
    浏览(36)
  • 深度学习模型部署——Flask框架轻量级部署+阿里云服务器

    ​因为参加一个比赛,需要把训练好的深度学习模型部署到web端,第一次做,在网上也搜索了很多教程,基本上没有适合自己的,只有一个b站up主讲的还不错 https://www.bilibili.com/video/BV1Qv41117SR/?spm_id_from=333.999.0.0vd_source=6ca6a313467efae52a28428a64104c10 https://www.bilibili.com/video/BV1Qv41117

    2024年02月07日
    浏览(83)
  • 微信小程序的人工智能模型部署(flask)

    目录 写在前面: 具体做法: 后端: 前端: 其他: 我使用的微信小程序开发工具是:“微信开发者工具”,当然你用其他的开发工具应该也差别不大; 人工智能模型用的是pytorch; 具体不介绍人工智能模型的保存,主要介绍一下flask的写法; 首先你要把人工智能模型先保存

    2024年02月15日
    浏览(100)
  • flask后端进行yolov5检测模型的部署(填坑)

    麻痹的搞了我一整天,蛋疼 本来想把检测模型或者rtsp实时流部署到后端。网上有人推荐一个github项目 https://github.com/muhk01/Yolov5-on-Flask 后来有人把这个项目给修改了,运行起来了,我也准备运行一下 https://github.com/xugaoxiang/yolov5-flask   先把代码拉下来直接配置: 先说说修改的

    2023年04月09日
    浏览(65)
  • 使用flask将paddleocr车牌检测模型部署到服务器上

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 最近,需要写一个程序把PaddleOcr的车牌检测模型部署到服务器上,写成接口的形式,方便他人调用。经过1个星期的努力,终于实现基本功能。因为是第一次接触,所以踩了很多弯路,当然,网上很多教

    2024年01月17日
    浏览(59)
  • 【模型部署】利用opencv Python API 加载与运行Pytorch模型

    OpenCV可以调用PyTorch模型。通过将PyTorch模型转换为ONNX格式,然后使用OpenCV中的dnn模块加载和运行模型。 以下是一个使用OpenCV加载和运行PyTorch模型的示例代码: 说明: 首先,使用torch.load函数加载PyTorch模型。 将模型转换为ONNX格式,使用torch.onnx.export函数将模型转换为ONNX格式

    2024年02月13日
    浏览(36)
  • 大模型在cpu上使用llama_cpp部署无法加载模型的问题

    错误:gguf_init_from_file: invalid magic characters \\\'tjgg\\\'等,也就是无法加载模型 因为最新版的llama-cpp-python不支持ggml文件格式了 解决方案: 1、降低版本(最简单): pip install llama-cpp-python==0.1.78 2、直接下载对应GGUF的模型 3、利用llama.cpp内部转换函数进行转换 参考出处:TheBloke/Llam

    2024年01月20日
    浏览(50)
  • 搭建部署属于自己的基于gpt3.5的大语言模型(基于flask+html+css+js+mysql实现)

    本项目是一个基于GPT-3.5模型的聊天机器人网站,旨在为用户提供一个简便、直接的方式来体验和利用GPT-3.5模型的强大功能。项目以Flask为基础,构建了一个完整的Web应用程序,其中包含了多个前端页面和后端API接口,能够处理用户输入并与GPT-3.5模型进行交互来生成响应。 一

    2024年02月07日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包