flask模型部署教程

这篇具有很好参考价值的文章主要介绍了flask模型部署教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

搭建python flask服务的步骤

1、安装相关的包

具体参考https://blog.csdn.net/weixin_42126327/article/details/127642279

1、安装conda环境和相关包

# 一、安装conda
# 1、首先,前往Anaconda官网(https://www.anaconda.com/products/individual)下载适合您的Linux版本的Anaconda安装文件。

# 2、下载Anaconda安装文件
wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh
# 3、安装conda
bash Anaconda3-2023.07-2-Linux-x86_64.sh

# 4、conda --version
如果输出了Anaconda的版本号,则安装成功。

## 二、创建canda的虚拟开发环境 py36

# 1、创建canda的虚拟开发环境 py36
conda create --name py36 python=3.6

# 2、进入虚拟开发环境 
conda activate py36

# 3、退出虚拟环境
conda deactivate

## 三、安装flask相关的包
conda install flask
conda install scikit-learn

2、搭建flask服务代码

1、训练模型并保存模型

model.py


from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import pickle

# 加载iris数据集,并进行最简单的训练过程,可以自行扩展
iris = load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
classifier = RandomForestClassifier()
classifier.fit(X_train, y_train)
print(classifier)
 将模型保存为pkl格式,准备应用层调用
pickle.dump(classifier, open("./model.pkl", "wb"))

2、启动flask服务

app_demo.py


import numpy as np
from flask import Flask, request, jsonify, render_template
from flask_cors import CORS
import pickle


app = Flask(__name__,template_folder='../templates')

model = pickle.load(open('model.pkl', 'rb'))
@app.route('/')
def home():
    return render_template('index.html')


@app.route('/results', methods=['POST'])
def results():
    data = request.get_json(force=True)
    print(data)
    prediction = model.predict([np.array(list(data.values()))])
    # 将预测结果放在字典中
    output = {'prediction': int(prediction[0])}
    # 将字典转换为 JSON 格式并返回
    return jsonify(output)
if __name__ == "__main__":
    app.run(debug=True)    
    

3、调用flask服务的客户端代码

request_demo.py python客服端代码


import requests
url = 'http://localhost:5000/results'
r = requests.post(url,json={'Sepal_Length':5,'Sepal_Width':2, 'Petal_Length':4, 'Petal_Width':2})
print(r.json())

FlaskClient.scala scala客户端代码

package com.demo

import java.net.URL

import org.apache.http.client.methods.HttpPost
import org.apache.http.entity.StringEntity
import org.apache.http.impl.client.HttpClientBuilder
import org.json4s._
import org.json.JSONObject
import org.apache.http.util.EntityUtils
import org.json4s.jackson.JsonMethods.parse

object FlaskClient {
  implicit val formats = DefaultFormats

  def main(args: Array[String]): Unit = {
    val url = new URL("http://localhost:5000/results")
    // 构造JSON对象
    val data = new JSONObject()
    data.put("feature1", 1)
    data.put("feature2", 2)
    data.put("feature3", 3)
    data.put("feature4", 4)

    // 将JSON对象转换为字符串
    val json = data.toString()
    val post = new HttpPost(url.toURI)
    post.setEntity(new StringEntity(json))
    post.setHeader("Content-type", "application/json")
    val client = HttpClientBuilder.create.build
    val response = client.execute(post)

    val entity = response.getEntity
    val result = EntityUtils.toString(entity)
    val prediction = (parse(result) \ "prediction").extract[Int]

    println(prediction)
    
  }
}


http客户端代码 templates/index.html


<!-- index.html -->
<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>ML API</title>
</head>
<body>
<div class="login">
    <h1>Flower Class Prediction</h1>
    <form action="{{ url_for('predict')}}"method="post">  <!-- 这一块是用户输入自定义数据 -->
        <input type="text" name="Sepal_Length" placeholder="Sepal_Length" required="required"/>
        <input type="text" name="Sepal_Width" placeholder="Sepal_Width" required="required" />
        <input type="text" name="Petal_Length" placeholder="Petal_Length" required="required"/>
        <input type="text" name="Petal_Width" placeholder="Petal_Width" required="required" />
        <button type="submit" class="btn btn-primary btn-block btn-large">Predict</button>
    </form>
    <br>
    {{ prediction_text }}  <!-- 这一块是模型输出结果 -->
</div>
</body>
</html>


3、flask服务的运行

1、调试环境


# 1、启动flask服务
python app_demo.py
# 2、客户端请求flask服务
# 2.1 python客户端
python request_demo.py 

# 2.2 scala 客户端
 java -cp target/xx-2.0.0-SNAPSHOT-jar-with-dependencies.jar com.xx.FlaskClient

# 2.3 http客户端
http://127.0.0.1:5000/predict 

2、生产环境部署

uWSGI:uWSGI是一个高性能的WSGI服务器,支持多种编程语言和应用程序框架,包括Flask。可以使用uWSGI来部署Flask服务
uwsgi安装

conda install uwsgi --no-deps # 使用--no-deps选项:这将跳过依赖项

部署 参考:https://juejin.cn/post/7014036187937505317

配置文件uwsgi.ini 文件文章来源地址https://www.toymoban.com/news/detail-664342.html

`
 [uwsgi]
 http = 127.0.0.1:5000
 wsgi-file = app_demo.py
 callable = app
 
 `
准备好配置文件后
# 启动uwsgi服务
uwsgi --ini uwsgi.ini
# 停止uwsgi服务
uwsgi --stop uwsgi.pid
# 重启uwsgi服务
uwsgi --reload uwsgi.pid

到了这里,关于flask模型部署教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 基于Flask的模型部署

    Flask:一个使用Python编写的轻量级Web应用程序框架; 首先需要明确模型部署的两种方式:在线和离线; 在线:就是将模型部署到类似于服务器上,调用需要通过网络传输数据,再将结果返回; 离线:就是将模型直接部署在终端设备上,不需要联网,数据传输上比较快; 通过

    2024年02月13日
    浏览(32)
  • pytorch模型网页部署——Flask

    Flask是python的轻量级web框架,可用来做简单的模型部署。Flask的基本用法如下: step1:定义Flask类的对象,即创建一个基于Flask的服务器 step2:定义公开的路由及路由对应的调用函数 step3:运行服务器 运行结果: 在基于flask的网页上部署模型,其实只需在上述例子中定义的函数

    2023年04月23日
    浏览(40)
  • 模型部署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)
  • 【python】flask模板渲染引擎Jinja2,通过后端数据渲染前端页面

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年04月11日
    浏览(53)
  • 深度学习模型部署——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日
    浏览(78)
  • 微信小程序的人工智能模型部署(flask)

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

    2024年02月15日
    浏览(97)
  • 人脸修复祛马赛克算法CodeFormer——C++与Python模型部署

    1.算法简介 CodeFormer是一种基于AI技术深度学习的人脸复原模型,由南洋理工大学和商汤科技联合研究中心联合开发,它能够接收模糊或马赛克图像作为输入,并生成更清晰的原始图像。算法源码地址:https://github.com/sczhou/CodeFormer 这种技术在图像修复、图像增强和隐私保护等领

    2024年02月03日
    浏览(45)
  • 最简单最详细的宝塔部署flask教程

    在这里我白嫖到了7个月的阿里云服务器,以此为例。准备好服务器之后,会获得一个公网IP地址 flask项目中必须包含一个文件requirements.txt,用于写明项目所需要的Python包,否则后续部署项目时会报错。 例如我的项目需要以下这些包  部分app.py代码如图 进入宝塔官网宝塔面板

    2024年02月08日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包