这个知识库包含了如何使用各种框架和应用程序(如Docker, Flask, FastAPI, BentoML, Streamlit, MLflow)服务/部署机器学习模型的说明、模板源代码和示例,甚至还有如何将机器学习模型部署为android应用程序的代码。

集成: git github "
.ci
79年a3f76dcf
创建move_binary.py
2个月前
b9c1e4ebee
最初的承诺
2个月前
15 a0873373
创建labeler.yml
1个月前
c531249f41
开始开发应用程序
2个月前
279年e000fc5
删除Kivy_App_To_APK.ipynb
2个月前
62年ccd87d8a
更新安卓应用
2个月前
62年ccd87d8a
更新安卓应用
2个月前
f1552d46a3
更新train.py
2个月前
3 e8db8ee05
删除无用的文件
2个月前
90年af140b26
更新mlflow
2个月前
4 cb681a92c
更新streamlit_app.py
2个月前
e2d23bd4b6
更新测试
2个月前
c531249f41
开始开发应用程序
2个月前
b9c1e4ebee
最初的承诺
2个月前
318年b1bd66f
更新后的文件
2个月前
2 ea3dee8f4
更新gitpod
2个月前
10 e4ecfa55
创建CODE_OF_CONDUCT.md
1个月前
0 c4040214c
创建CONTRIBUTING.md
1个月前
c0424ce709
更新后的文件
2个月前
23922 e3076
更新README.md
1个月前
88年c522908e
希望我能跑到终点,而不是开始
2个月前
fc883ff290
更新setup.sh
2个月前
数据管道
传说
"的管理文件
Git管理文件
度规
阶段文件
外部文件

README.md

你必须登录才能留言。登录

服务机器学习模型:机器人:

关于:繁荣时期:

这个知识库包含了如何使用各种框架和应用程序(如Docker, Flask, FastAPI, BentoML, Streamlit, MLflow)服务/部署机器学习模型的说明、模板源代码和示例,甚至还有如何将机器学习模型部署为android应用程序的代码。

库中还包含了将应用部署到各种云平台(AWS、Heroku、Vercel等)的代码和操作指南,以及使用pytest和其他有用信息与Github操作进行CI/CD(持续集成和持续开发)、TDD(测试驱动开发)的工作。

目录:书:

库结构

├──androidapp│├──buildozer。Spec│├──data││├──icon.png│├──main.py│├──require .txt├──bentoml│├──catsound效果器。yaml│├──bentosklearn.py│├──cars.csv││├──cars.zip│├──service.py├──Data│├──__init__.py│├──cars.csv│├──cars.zip│├──service.py├──Data│├──cars.csv│├──cars.csv│├──car .zip│├──fastapi│├──app.py│├──Dockerfile│├──fastapi-set .sh│├──favicon.png│├──heroku。│├──模型。PKL││├──│├。pkl │ ├── models.py │ ├── requirements.txt │ ├── train.py │ └── vercel.json ├── flaskapp │ ├── app.py │ ├── models │ │ ├── model.pkl │ │ └── sklearn_gbr.pkl │ ├── Procfile │ ├── requirements.txt │ ├── runtime.txt │ ├── static │ │ ├── favicon.png │ │ └── w3.css │ ├── templates │ │ ├── index.html │ │ ├── result.html │ │ ├── static │ │ │ ├── favicon.png │ │ │ └── w3.css │ │ └── w3.css │ └── utils.py ├── __init__.py ├── LICENSE.md ├── mlflow │ ├── data │ │ ├── cars.csv │ │ ├── cars.zip │ │ └── Data Dictionary - carprices.xlsx │ ├── mlflow_app.py │ ├── mlruns │ │ └── 0 │ │ ├── 387be03e078049f69b2f68c916b1c4fa │ │ │ ├── meta.yaml │ │ │ └── tags │ │ │ ├── mlflow.source.git.commit │ │ │ ├── mlflow.source.name │ │ │ ├── mlflow.source.type │ │ │ └── mlflow.user │ │ ├── 7813850eea9344c0a8e67670fd1eb52b │ │ │ ├── artifacts │ │ │ │ └── cars.csv │ │ │ ├── meta.yaml │ │ │ └── tags │ │ │ ├── mlflow.source.git.commit │ │ │ ├── mlflow.source.name │ │ │ ├── mlflow.source.type │ │ │ └── mlflow.user │ │ ├── 8d81478e0b7a4ab78a76afb2c0225d85 │ │ │ ├── meta.yaml │ │ │ └── tags │ │ │ ├── mlflow.source.git.commit │ │ │ ├── mlflow.source.name │ │ │ ├── mlflow.source.type │ │ │ └── mlflow.user │ │ ├── d152c4ed8ff846459df57701db6542b0 │ │ │ ├── artifacts │ │ │ │ └── cars.csv │ │ │ ├── meta.yaml │ │ │ ├── metrics │ │ │ │ └── R2_Score │ │ │ ├── params │ │ │ │ └── gbr │ │ │ └── tags │ │ │ ├── mlflow.source.git.commit │ │ │ ├── mlflow.source.name │ │ │ ├── mlflow.source.type │ │ │ └── mlflow.user │ │ ├── ee11d66e35c64736bda4bd41429a678b │ │ │ ├── artifacts │ │ │ │ └── cars.csv │ │ │ ├── meta.yaml │ │ │ └── tags │ │ │ ├── mlflow.source.git.commit │ │ │ ├── mlflow.source.name │ │ │ ├── mlflow.source.type │ │ │ └── mlflow.user │ │ ├── f6aeeb22a768414e81e1825e8b65c728 │ │ │ ├── artifacts │ │ │ │ ├── cars.csv │ │ │ │ └── model │ │ │ │ ├── conda.yaml │ │ │ │ ├── MLmodel │ │ │ │ ├── model.pkl │ │ │ │ ├── python_env.yaml │ │ │ │ └── requirements.txt │ │ │ ├── meta.yaml │ │ │ ├── metrics │ │ │ │ └── R2_Score │ │ │ ├── params │ │ │ │ └── gbr │ │ │ └── tags │ │ │ ├── mlflow.log-model.history │ │ │ ├── mlflow.source.git.commit │ │ │ ├── mlflow.source.name │ │ │ ├── mlflow.source.type │ │ │ └── mlflow.user │ │ ├── meta.yaml │ │ └── tags │ │ └── mlflow.note.content │ └── requirements.txt ├── Notebooks │ └── Notebooks.zip ├── README.md ├── setup.sh ├── streamlitapp │ └── streamlit_app.py └── tests └── test_api.py

开始⚡

在开始构建和部署模型之前,我们必须设置我们的环境。我使用'pyenv'来管理python的不同版本,使用pyenv-virtualenv来设置虚拟环境。您可以通过查看他们的官方版本来了解如何在您的操作系统上安装pyenvgithub.另外,在您的系统上安装git也很重要,这样您就可以轻松地克隆这个存储库。如果你在Linux上,你可以通过运行这个命令来安装git:

Sudo apt-get安装git

配置Python环境⚡

为了轻松设置我们的环境,我创建了一个名为“setup.sh”在您的系统上轻松安装和配置pyenv。假设我们正在使用Linux,但也有方法在windows上安装pyenv。要用shell脚本轻松安装pyenv,在终端上运行以下命令:

  1. 克隆这个存储库:
git克隆https://github.com/Nneji123/Serving-Machine-Learning-Models.git
  1. 更改工作目录
cd Serving-Machine-Learning-Models
  1. 运行脚本
。/ setup.sh
  1. 运行脚本后,可以通过运行以下命令检查pyenv是否成功安装:
pyenv版本

您应该看到Python 3.8.10作为安装版本。

使用pyenv安装依赖项和创建虚拟环境

我们将使用python和一些框架,如FastAPI, Flask, Streamlit等,我们将需要安装它们的各种依赖。在每个文件夹中我都创建了特定的用于安装每个项目所需的依赖项的文件。例如,您可以安装FastAPI通过运行PIP的应用需求:

CD fastapi PIP install -r require .txt

这个存储库中的其他项目也是如此。

建立机器学习模型:汽车价格预测⚡

在这个项目中,我们将建立一个机器学习回归模型,可以基于一些特征预测汽车的价格。使用的数据集可以在Kaggle上找到,也可以在这个中找到存储库.你可以看看笔记本文件夹其中包含用于分析和可视化数据和建立我们的模型的笔记本。

如何保存模型与Joblib⚡

Joblib是一组用Python提供轻量级流水线的工具。你可以阅读更多关于Joblib的信息在这里.为了保存我们的模型,我使用joblib将模型保存为pickle文件(.pkl),以便稍后使用模型进行预测。为了保存你的模型(假设你已经建立了一个模型),你可以通过运行:

导入joblib模型=线性回归模型。适合(X_train y_train) joblib.dump(”模型。pkl”模型)

使用DVC(数据版本控制)对模型进行版本控制

DVC是干什么用的?数据版本控制(Data Version Control,或DVC)是一个数据和ML实验管理工具,它利用了我们熟悉的现有工程工具集(Git、CI/CD等)。DVC是与Git一起运行的。git和DVC命令通常会一个接一个地串联使用。在这个项目中,我使用DVC来管理我们的模型和数据。您可以阅读更多关于DVC和如何使用它的信息在这里

使用您的模型:计算机创建应用程序

在本节中,我们将使用以下框架为我们的模型提供应用:

  1. FastAPI
  2. BentoML
  3. Mlflow
  4. Streamlit
  5. KivyMD

使用FastAPI⚡服务模型

FastAPI是一个现代、快速(高性能)的web框架,用于基于标准Python类型提示使用Python 3.6+构建api。

主要特点是:

  • 快速:非常高的性能,与NodeJS和Go不相上下(感谢Starlette和Pydantic)。最快的Python框架之一。

  • 快速编码:将开发特性的速度提高200%到300%。*

  • 更少的bug:减少大约40%的人为(开发人员)错误。*

  • 直观:强大的编辑器支持。完成无处不在。更少的时间调试。

  • 简单:设计为易于使用和学习。更少的时间阅读文件。

  • 短:尽量减少代码重复。每个参数声明的多个特性。更少的错误。

  • 健壮:获得可用于生产的代码。具有自动交互文档。

  • 基于标准:基于(并完全兼容)api的开放标准:OpenAPI(以前称为Swagger)和JSON Schema。

为了使用FastAPI为模型提供服务,我在这个存储库中创建了一个示例模板,在这个模板中,我将汽车价格预测模型部署为API,可用于发出POST请求以获得预测。要在您的系统上本地运行该项目,请运行以下命令:

CD fastapi PIP install -r require .txt uvicorn app:app——reload

您应该能够通过访问浏览器来查看APIhttp://127.0.0.1:8000/

您还可以在这里查看已部署的APIhttps://carpriceapi.herokuapp.com

在这个教程您可以了解更多关于如何使用FastAPI将您的模型作为RESTful API提供服务的信息。

截图:相机:

截图(168)

你也可以在我的网站上查看其他FastAPI应用程序GitHub

服务模型与烧瓶⚡

Flask是一个用Python编写的微网络框架。它被归类为微框架,因为它不需要特定的工具或库。它没有数据库抽象层、表单验证或任何其他组件,在这些组件中已有的第三方库提供通用函数。但是,Flask支持可以添加应用程序特性的扩展,就好像它们是在Flask本身中实现的一样。对象-关系映射器、表单验证、上传处理、各种开放身份验证技术和一些与框架相关的公共工具都有扩展。

为了使用flask服务模型,我在这个存储库中创建了一个模板,其中我将汽车价格预测模型部署为具有基本html和css的web应用程序。要在您的系统上本地运行该项目,请运行以下命令:

CD flaskapp PIP install -r requirements.txt python app.py

您应该能够通过访问浏览器来查看应用程序http://127.0.0.1:5000/

你也可以在这里查看部署的应用程序:https://carflaskpred.herokuapp.com

截图:相机:

截图(166)

BentoML服务模型⚡

BentoML是一个Python开源库,用户可以在几分钟内创建一个机器学习驱动的预测服务,这有助于弥合数据科学和DevOps之间的差距。

为了使用Bentoml服务模型,我在这个存储库中创建了一个模板,在这个模板中,我将汽车价格预测模型部署为使用Bentoml的API。要在您的系统上本地运行该项目,请运行以下命令:

CD bentoml PIP install -r needs .txt python bentosklearn.py bentoml serve service.py:service——reload

您应该能够通过访问浏览器来查看应用程序http://127.0.0.1:5000/

使用Mlflow服务模型⚡

MLflow是一个简化机器学习开发的平台,包括跟踪实验,将代码打包成可重复运行,以及共享和部署模型。MLflow提供了一组轻量级api,可以与任何现有的机器学习应用程序或库(TensorFlow, PyTorch, XGBoost等)一起使用,无论您当前在哪里运行ML代码(例如在笔记本电脑,独立应用程序或云)。

为了使用mlflow为模型提供服务,我在这个存储库中创建了一个模板,在这个模板中,我将汽车价格预测模型部署为使用mlflow的API。要在您的系统上本地运行该项目,请运行以下命令:

CD mlflow PIP install -r requirements.txt python mlflow_app.py

然后可以运行下面的命令查看Mlflow用户界面:

mlflow ui

服务模型与Streamlit⚡

Streamlit是一个Pyth雷竞技技官网下载on语言的开源应用框架。它帮助我们在短时间内为数据科学和机器学习创建web应用程序。它兼容主要的Python库,如scikit-learn, Keras, PyTorch, symy (latex), NumPy, pandas, Matplotlib等。

为了使用Streamlit服务模型,我在这个存储库中创建了一个模板,在这个模板中我将汽车价格预测模型部署为带有Streamlit的web应用程序。要在您的系统上本地运行该项目,请运行以下命令:

CD streamlitapp PIP install -r requests .txt streamlit运行streamlit_app.py

您应该能够通过此链接在浏览器中查看web应用程序http://127.0.0.1:8501/

您还可以查看部署在流照明云上的流照明应用程序在这里

截图:相机:

截图(168)

将模型作为桌面/移动应用程序⚡

您还可以将机器学习模型部署为桌面和移动应用程序,使用框架如KivyMD.通过查看这篇文章,您可以了解更多关于使用KivyMD部署模型的信息教程

我还在这个存储库中创建了一个模板应用程序,用于使用KivyMD部署汽车价格预测模型。我还构建了应用程序作为一个android应用程序与buildozer和github动作,这将在后面的部分解释。你可以签出并安装android应用程序,签出bin文件夹数据这个存储库的分支。

要运行该项目,运行以下命令:

CD androidapp PIP install -r requirements.txt python main.py

你应该会看到一个类似下图的屏幕:截图2022-07-14 155152

如何用Pytest⚡测试您的模型和应用程序

pytest框架使编写小型、可读的测试变得容易,并且可以扩展以支持应用程序和库的复杂功能测试。

使用码头工人⚡

Docker是一组平台即服务产品,它使用操作系统级虚拟化在称为容器的包中交付软件。该服务有免费和付费两种级别。

在这个存储库中,我使用Dockerfile部署了FastAPI应用程序。您可以了解更多关于使用Docker和编写dockerfile的信息在这里

将您的应用程序部署到AWS和Heroku⚡

在这个存储库中,我将FastAPI和Flask应用程序部署到AWS和Heroku等平台上。我会用fastapi文件夹作为将应用程序部署到AWS和Heroku的示例。

部署到Heroku⚡

将FastAPI应用程序部署到Heroku运行以下命令:

  1. 安装heroku cli
NPM安装-g heroku
  1. 登录到Heroku
heroku登录——互动
  1. 更改工作目录
cd fastapi
  1. 运行此命令,以便只使用fastapi文件夹
Git初始化Git添加。Git commit -m "first commit"
  1. 创建heroku应用
heroku创建your-app-name

取代your-app-name用你选的名字。

  1. 将heroku cli git远程设置到该应用程序
heroku git:远程your-app-name
  1. 将heroku堆栈设置为container
heroku栈:设置容器
  1. 推动heroku
Git push heroku master

你应该可以通过下面的链接查看你部署的应用程序https://your-app-name.herokuapp.com

您还可以通过运行以下命令查看已部署应用程序的日志:

Heroku记录-t -a your-app-name

部署到AWS⚡

您还可以通过以下步骤使用AWS EC2实例(Ubuntu)部署您的应用程序。这也是假设您已经启动了实例,公开了所需的端口并在实例中安装了git。如果你不知道怎么做,你可以看看这个存储库为更多的细节。

在AWS EC2实例中运行以下命令:

git克隆https://github.com/Nneji123/Serving-Machine-Learning-Models.git cd services - machine - learning - models /fastapi ./fastapi-setup.sh

运行上述命令后,您可以转到AWS实例的公共IP地址位置,查看已部署的应用程序。例如,如果你的公共ip地址是3.91.202.12访问http://3.91.202.12:80/docs浏览已部署的API文档。

Github行动⚡

GitHub Actions使得自动化所有的软件工作流程变得容易,现在有世界级的CI/CD。直接从GitHub构建、测试和部署代码。按照您想要的方式进行代码评审、分支管理和问题分类。

使用Github Actions和Heroku for CI/CD⚡

在这个存储库中,我使用Github动作来持续部署Flask和FastAPI应用到Heroku,即每当我在这个存储库中做一个推或拉动作,Github动作就会运行,并将这些应用的新版本部署到Heroku。'action'文件存储在此文件夹

你可以阅读更多关于使用Github动作自动化你的工作流程在这里

许可证

麻省理工学院

提示!

新闻p要查看以前的文件或,n查看下一个文件

评论

加载……