跳转到主要内容

为网络打包机器学习模型

项目描述

ShipIt

轻松将您的机器学习模型部署到云中的API。

快速入门

  1. 安装和配置awscli
  2. 安装terraform
  3. pip install shipit
  4. shipit init
  5. 编辑新创建的shipit.yml,见配置
  6. shipit deploy

您将获得一个输出,告诉您版本和端点。

Project             : demo
Endpoint            : production-alb-demo-553835794.us-west-2.elb.amazonaws.com
Version             : 2

工作原理

ShipIt使用docker、awscli和terraform等工具,使部署适用于机器学习模型的、生产就绪的Web API变得容易。首先,基于配置创建一个基于docker的镜像。

本地运行

您可以通过以下方式在本地启动容器

shipit build -t yourtagname
docker run -p 5000:80 -it yourtagname

现在您可以通过Web API提供模型。访问localhost:5000/查看可用模型列表。

命令

shipit deploy -t [yourtag] --verbosity 1:构建并部署shipit项目。所有参数都是可选的。

shipit destroy:使用Terraform进行销毁

shipit build -t [yourtag] --verbosity 1:构建Docker镜像并标记。所有参数都是可选的。

用法

获取预测需要向相关模型的预测端点发送一个POST请求

http://[your-endpoint]/predict/[model-name]

有效负载应该是提供给模型端点的JSON序列化数组或2维数组(用于多个预测)。例如,一个需要三个特征的模型看起来像这样

[33, 4, 10]

在执行多个预测的情况下,将其作为2维数组传递。

[
    [33, 4, 10],
    [32, 1, 5]
]

以下是一个使用cURL的示例。

curl -d '[[5, 1, 6], [1, 2, 3]]' -H "Content-Type: application/json" -X POST http://[your-endpoint]:5000/predict/[modelname]

响应始终是2维数组,因此如果您发送一个数据点,则期望返回一个只有一个行的列表。

配置

您的项目配置文件shipit.yml分为两个主要部分。

meta

project_name:一个独特的项目名称,用于命名您为项目创建的资源。

requirements:requirements.txt文件路径,用于安装模型的依赖项。

provider:目前这始终假定是aws

aws_profile:您的awscli凭证中配置文件的名称。

aws_region:在哪个AWS区域启动您的服务。

models

此部分可以包含一个或多个您想包含在此API服务中的模型。请参阅example/shipit.yml作为参考。

path:冻结模型文件的相对路径,例如models/my_model.pkl

variety:["sklearn", "keras"]之一。最终我们将添加更多模型类型。

preprocess:(可选)一个预处理函数的Python导入点路径。此函数可以在将API输入发送到您的模型之前对其进行操作。

postprocess:(可选)一个后处理函数的Python导入点路径。此函数可以在将模型预测输出返回给用户之前对其进行操作。

格式化模型数据

首先,确保您的特征是一个形状为(n_samples, n_features)的numpy数组(在标准sklearn形式中)。将其转换为列表(这样我们就可以对其进行JSON序列化)。

保存模型

来自scikit-learn的模型应该使用joblib保存。来自keras的模型应该使用model.save()保存。请参阅example/save_model_example.py

待办事项

  • 部署到私有VPN
  • Route53 / 私有 / 公共DNS
  • 构建“导出”功能,用于自定义Docker / Terraform设置。
  • 支持XGBoost模型
  • 找出为什么sklearn.linear_model.LinearRegression不能序列化

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

shipit_ml-0.6.0.tar.gz (8.1 kB 查看哈希值)

上传时间

构建分布

shipit_ml-0.6.0-py3-none-any.whl (10.8 kB 查看哈希值)

上传时间 Python 3

由以下支持