为网络打包机器学习模型
项目描述
ShipIt
轻松将您的机器学习模型部署到云中的API。
快速入门
- 安装和配置awscli
- 安装terraform
pip install shipit
shipit init
- 编辑新创建的
shipit.yml
,见配置 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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2a0b616edfcd131affbe7086149db6d050106c4ed4cf5911aee0d3620569dbb3 |
|
MD5 | 212f76e05df002ab5efe148238584a1a |
|
BLAKE2b-256 | 596aa5679efcfeea026669f156db2b97d3df5f5901fbbb203d8e4a43dfe96c42 |
shipit_ml-0.6.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7886f20f968c15921cda6034d0197e1800139810c615f78d12f16c4c44707bf3 |
|
MD5 | 54d072e155642209959810dce3c6149b |
|
BLAKE2b-256 | 4497b4490ff9e2abcfeef8fc330a8f5a64915d15b6b1ae761903741986be4d22 |