ShipIt
Easily deploy your machine learning models to an API in the cloud.
Quickstart
- Install and configure awscli
- Install terraform
pip install shipitshipit init- Edit the newly created
shipit.ymlSee configuration shipit deploy
You will get an output that tells you the version and what the endpoint is.
Project : demo
Endpoint : production-alb-demo-553835794.us-west-2.elb.amazonaws.com
Version : 2
How it Works
Shipit wraps tools like docker, awscli, and terraform to make it easy to deploy production ready web APIs for your machine learning models. First a docker image is built based on the configurat
Running Locally
You can spin up your container locally like this:
shipit build -t yourtagname
docker run -p 5000:80 -it yourtagname
You now have your models being served from a web API. Visit localhost:5000/ to see the list of available models.
Commands
shipit deploy -t [yourtag] --verbosity 1 : Build and deploy the shipit project. All arguments are optional.
shipit destroy : Use terraform to destroy
shipit build -t [yourtag] --verbosity 1 : Build the docker image and tag it. All arguments are optional.
Usage
Getting predictions requires sending a POST to the relevant model's predict endpoint:
http://[your-endpoint]/predict/[model-name]
The payload should be a JSON serialized array or 2d array (for multiple predictions) to the provided model's endpoint. For example, a model that takes three features would look like this:
[33, 4, 10]
In the case of doing multiple predictions, pass that in as a 2d array.
[
[33, 4, 10],
[32, 1, 5]
]
Here's an example using cURL.
curl -d '[[5, 1, 6], [1, 2, 3]]' -H "Content-Type: application/json" -X POST http://[your-endpoint]:5000/predict/[modelname]
The response will always be a 2d array, so if you send one data point expect a list back with only one row.
Configuration
The config file shipit.yml for your project is broken down into two major sections.
meta
project_name : A unique project name, used to namespace the resources created for your project.
requirements : Path to a requirements.txt file to install dependencies for your models
provider
: For now this is always assumed to be aws
aws_profile : Name of the profile from your awscli credentials.
aws_region : Which aws region to launch your service in.
models
This section can contain one or more models you want to include in this API service. See example/shipit.yml as a reference.
path
: The relative path of the pickled model file e.g. models/my_model.pkl
variety
: One of ["sklearn", "keras"]. Eventually we will add more model types.
preprocess : (optional) A python import dot path to a preprocess function. This function can perform manipulations of the API input before sending it to your model.
postprocess : (optional) A python import dot path to a postprocess function. This function can perform manipulations of the model's prediction output before returning it to the user.
Formatting model data
First, ensure your features is a (n_samples, n_features)-shaped numpy array ( in standard sklearn form ). Turn this into a list ( so that we can JSON-serialise it ).
Saving models
Models from scikit-learn should be saved with joblib. Models from keras should be saved with model.save(). See example/save_model_example.py.
To Do
- Deploy to Private VPN
- Route53 / private / public DNS
- Build an "export" feature for customization of Docker / terraform setup.
- Support XGBoost models
- Figure out why sklearn.linear_model.LinearRegression can't be pickled
Metadata
Release files for shipit-ml 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| shipit_ml-0.6.0.tar.gz | 8.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| shipit_ml-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.9 kB
Release files / shipit_ml-0.6.0.tar.gz
| Download URL | shipit_ml-0.6.0.tar.gz |
|---|---|
| Size | 8.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2a0b616edfcd131affbe7086149db6d050106c4ed4cf5911aee0d3620569dbb3
|
|
BLAKE2b-256 checksum How to use checksums |
596aa5679efcfeea026669f156db2b97d3df5f5901fbbb203d8e4a43dfe96c42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.2
|
Release files / shipit_ml-0.6.0-py3-none-any.whl
| Download URL | shipit_ml-0.6.0-py3-none-any.whl |
|---|---|
| Size | 10.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7886f20f968c15921cda6034d0197e1800139810c615f78d12f16c4c44707bf3
|
|
BLAKE2b-256 checksum How to use checksums |
4497b4490ff9e2abcfeef8fc330a8f5a64915d15b6b1ae761903741986be4d22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.2
|