使用 Docker 容器和 REST API 的 Flask 实时推理预测

用于执行在线推理的 Docker 容器和 REST API 的快速示例。

本文的想法是快速轻松地构建一个 Docker 容器,以使用 Flask 和 Python API 通过训练有素的机器学习模型执行在线推理。

当您有时间计算预测时,批量推理非常有用。 假设您需要实时预测。 在这种情况下,批量推理就不太合适了,我们需要在线推理。 如果没有在线预测,许多应用程序将无法工作或不会非常有用,例如自动驾驶汽车、欺诈检测、高频交易、基于定位数据的应用程序、对象识别和跟踪或脑机接口。 有时,需要以毫秒为单位提供预测。

为了学习这个概念,我们将使用 Docker 和 Flask-RESTful 实现在线推理(线性判别分析和多层感知器神经网络模型)。

首先,让我们考虑以下文件:Dockerfile、train.py、api.py、requirements.txt、train.csv、test.json。

train.py 是一个 Python 脚本,用于摄取和规范化 EEG 数据并训练两个模型来对数据进行分类。 Dockerfile 将用于构建我们的 Docker 映像,requirements.txt(flask、flask-restful、joblib)用于 Python 依赖项,而 api.py 是将被调用以使用 REST API 执行在线推理的脚本。 train.csv 是用于训练我们的模型的数据,test.json 是一个包含将用于我们的推理模型的新 EEG 数据的文件。

RESTful API

构建 API 的第一步是考虑我们想要处理的数据、我们想要如何处理它以及我们想要我们的 API 输出什么。 在我们的示例中,我们将使用 test.json 文件,其中有 1300 行 EEG 数据,每行有 160 个特征(列)。 我们希望我们的 API 如下:

api.py

机器学习模型

train.py 是一个 Python 脚本,它在 csv 文件 (train.csv) 中摄取和规范化 EEG 数据,并训练两个模型来对数据进行分类(使用 scikit-learn)。 该脚本保存了两个模型:线性判别分析(clf_lda)和神经网络多层感知器(clf_NN):

train.py

在线推理的 Docker 镜像

我们必须构建我们的 Docker 镜像。 首先,我们需要使用 jupyter/scipy-notebook 镜像作为基础镜像的 Dockerfile。 我们还需要设置我们的环境变量并安装 joblib 以允许我们训练的模型和烧瓶(requirements.txt)的序列化和反序列化。 我们将 train.csv、test.json、train.py 和 api.py 文件复制到图像中。 然后,我们运行 train.py,它将拟合并序列化机器学习模型,作为我们图像构建过程的一部分。

运行 Docker 在线推理

现在的目标是运行我们的在线推理,这意味着每次客户端向 /line/ 、/prediction/ 、/score 端点发出 POST 请求时,我们将显示请求的数据(行),预测 我们使用预训练模型注入的数据类别,以及使用所有可用数据的预训练模型的得分。 要启动 Web 服务器,我们将运行 Docker 容器并运行 api.py 脚本:

源代码

详情参阅 - 亚图跨际

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值