【Python】fastapi框架之Web部署机器学习模型

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 【Python】fastapi框架之Web部署机器学习模型

fastapi框架之Web部署机器学习模型


随着机器学习的广泛应用,如何高效的把训练好的机器学习的模型部署在Web端。


效果展示


fastapi之Web部署机器学习模型


安装第三方库


pip install fastapi -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install sklearn -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install jinja2 -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install uvicorn -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install python-multipart -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple some-package


训练模型


做了个小例子。用numpy随机生成训练集,使用线性回归进行训练,使用pickle库保存model模型。如下图所示

1684134263094.jpg

makeModel.py

import pickle
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
#创建数据
x=np.linspace(0,1,100).reshape(-1,1)
y=[i*np.random.uniform(0.5,0.7) for i in np.linspace(0,1,100)]
y=np.array(y)
model=LinearRegression()
model.fit(x,y)
y_pred=model.predict(x)
plt.plot(x,y)
plt.plot(x,y_pred)
plt.show()
with open('model.pickle', 'wb') as file:
    pickle.dump(model, file)

1684134290542.jpg


app.py

from fastapi import FastAPI,Form,Request
import uvicorn
from fastapi.templating import Jinja2Templates
import pickle
import numpy as np
app = FastAPI()
templates = Jinja2Templates(directory="templates")
@app.get('/')
def index(request: Request):
    return templates.TemplateResponse("index.html",{"request": request,'y':''})
@app.post('/')
def yPred(request: Request,argument=Form(...)):
    argument = argument
    lis = [[argument]]
    lis = np.array(lis).reshape(-1, 1)
    with open('model.pickle', 'rb') as f:
        model=pickle.load(f)
        y_pred=model.predict(lis)
    return templates.TemplateResponse("index.html",{"request": request,'y':{'x':argument,'y_pred':y_pred[0]}})
if __name__ == '__main__':
    uvicorn.run('app:app', port=8000)


index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/" method="post">
        <input name="argument">
        <button>提交</button>
        {{y}}
    </form>
</body>
</html>

项目完整代码请点击我的云盘

提取码:6a1k

如有任何问题,欢迎在下方留言,谢谢!

相关文章
|
3天前
|
机器学习/深度学习 JSON API
【Python奇迹】FastAPI框架大显神通:一键部署机器学习模型,让数据预测飞跃至Web舞台,震撼开启智能服务新纪元!
【8月更文挑战第16天】在数据驱动的时代,高效部署机器学习模型至关重要。FastAPI凭借其高性能与灵活性,成为搭建模型API的理想选择。本文详述了从环境准备、模型训练到使用FastAPI部署的全过程。首先,确保安装了Python及相关库(fastapi、uvicorn、scikit-learn)。接着,以线性回归为例,构建了一个预测房价的模型。通过定义FastAPI端点,实现了基于房屋大小预测价格的功能,并介绍了如何运行服务器及测试API。最终,用户可通过HTTP请求获取预测结果,极大地提升了模型的实用性和集成性。
13 1
|
8天前
|
开发框架 .NET API
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
在IIS上部署ASP.NET Core Web API和Blazor Wasm详细教程
|
6天前
|
弹性计算 安全 搜索推荐
快速部署 ChatGPT Next Web 社区版
ChatGPT Next Web是一款跨平台ChatGPT应用,支持完整的Markdown、LaTex公式、Mermaid流程图等。界面美观,响应迅速,兼容深色模式和PWA,快速加载,数据隐私安全。功能丰富,方便创建、分享个性化对话,内含海量中英文prompt,自动压缩聊天记录,支持多国语言。本文介绍使用计算巢快速部署ChatGPT Next Web社区版。
快速部署 ChatGPT Next Web 社区版
|
1月前
|
弹性计算 数据库 数据安全/隐私保护
阿里云服务器真香宝典之Calibre-Web个人图书馆云端部署
在阿里云ECS(2核2G,SSD40G,3M带宽)上,安装Ubuntu 22.04,然后配置Docker和FTP。创建 `/config` 和 `/books` 目录,设置权限,开放端口,拉取 `johngong/calibre-web` Docker镜像,以`calibre-web`命名容器,映射端口,配置环境变量,挂载卷,确保重启策略。本地安装Calibre客户端,上传metadata.db到服务器。在Calibre-web服务端配置数据库,启用上传权限,修改管理员账户信息。完成配置后,开始上传电子书并进行阅读。
187 2
阿里云服务器真香宝典之Calibre-Web个人图书馆云端部署
|
8天前
|
JavaScript 安全
SharePoint Online 部署SPFx Web部件
【8月更文挑战第10天】在SharePoint Online中部署SPFx Web部件需先安装Node.js及Yeoman等工具,通过Yo生成器创建项目。开发Web部件后,使用`gulp`命令构建、打包并生成.sppkg文件。接着,在SharePoint管理中心的应用程序目录上传并部署该解决方案包至目标网站。最后,通过编辑页面插入Web部件进行测试,确保遵循最佳实践并维护更新。
|
11天前
|
jenkins 持续交付 开发工具
"引爆效率革命!Docker+Jenkins+GIT+Tomcat:解锁持续集成魔法,一键部署Java Web应用的梦幻之旅!"
【8月更文挑战第9天】随着软件开发复杂度的增加,自动化变得至关重要。本文通过实例展示如何结合Docker、Jenkins、Git与Tomcat建立高效的持续集成(CI)流程。Docker确保应用环境一致性;Jenkins自动化处理构建、测试和部署;Git管理源代码版本;Tomcat部署Web应用。在Jenkins中配置Git插件并设置项目,集成Docker构建Tomcat应用镜像并运行容器。此外,通过自动化测试、代码质量检查、环境隔离和日志监控确保CI流程顺畅,从而显著提高开发效率和软件质量。
34 3
|
17天前
|
运维 安全 网络安全
"革新远程访问体验:Docker化部署webssh2,一键启动Web SSH客户端,让远程管理如虎添翼!"
【8月更文挑战第2天】Docker作为软件开发与运维的关键工具,以其轻量级、可移植及强隔离特性简化了应用部署。结合webssh2这一开源Web SSH客户端,可通过浏览器安全便捷地访问SSH服务器,无需额外软件。首先确保已安装Docker,接着拉取webssh2镜像并运行容器,映射端口以便外部访问。配置好SSH服务器后,通过浏览器访问指定URL即可开始SSH会话。此方案不仅提升了用户体验,还加强了访问控制与系统安全。
51 7
|
20天前
|
Java Serverless Docker
函数计算产品使用问题之使用Docker镜像部署的Web服务如何获取客户端的真实IP
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5天前
|
设计模式 API Python
Python Web:Django、Flask和FastAPI框架对比
Python Web:Django、Flask和FastAPI框架对比
13 0
|
10天前
|
关系型数据库 Linux 网络安全
"Linux系统实战:从零开始部署Apache+PHP Web项目,轻松搭建您的在线应用"
【8月更文挑战第9天】Linux作为服务器操作系统,凭借其稳定性和安全性成为部署Web项目的优选平台。本文以Apache Web服务器和PHP项目为例,介绍部署流程。首先,通过包管理器安装Apache与PHP;接着创建项目目录,并上传项目文件至该目录;根据需要配置Apache虚拟主机;最后重启Apache服务并测试项目。确保防火墙允许HTTP流量,正确配置数据库连接,并定期更新系统以维持安全。随着项目复杂度提升,进一步学习高级配置将变得必要。
22 0

相关产品

  • 人工智能平台 PAI