Machine Learning Lifecycle Framework
Project description
Ebonite is a machine learning lifecycle framework. It allows you to persist your models and reproduce them (as services or in general).
Installation
pip install ebonite
Quickstart
Before starting with Ebonite prepare your model. This could be a model from your favorite library (list of supported libraries is presented above) or a custom Python function working with typical machine learning data structures.
import numpy as np
def clf(data):
return (np.sum(a, axis=-1) > 1).astype(np.int32)
Moreover, your custom function could wrap a model from some library. This gives you flexibility to use not only pure ML models but rule-based ones (e.g., as a service stub at project start) and hybrid (ML with pre/postprocessing) ones which are often applied to solve real world problems.
When a model is prepared you should create a Ebonite client.
from ebonite import Ebonite
ebnt = Ebonite.local()
Then create a task and push your model object with some sample data. Sample data is required for Ebonite to determine structure of inputs and outputs for your model.
task = ebnt.get_or_create_task('my_project', 'my_task')
model = task.create_and_push_model(clf, test_x, 'my_clf')
You are awesome! Now your model is safely persisted in a repository.
Later on in other Python process you can load your model from this repo and do some wonderful stuff with it, e.g., create a Docker image named my_service with an HTTP service wrapping your model.
from ebonite import Ebonite
ebnt = Ebonite.local()
task = ebnt.get_or_create_task('my_project', 'my_task')
model = client.get_model('my_clf', task)
client.build_service('my_service', model)
Check out examples (in examples directory) and documentation to learn more.
Documentation
… is available here
Supported libraries and repositories
Models
your arbitrary Python function
scikit-learn
TensorFlow < 2
XGBoost
LightGBM
PyTorch
CatBoost
Model input / output data
NumPy
pandas
images
Model repositories
in-memory
local filesystem
SQLAlchemy
Amazon S3
Serving
Flask
Contributing
Read this Changelog =========
Current release candidate
0.3.3 (2020-01-10)
Eliminated tensorflow warnings. Added more tests for providers/loaders. Fixed bugs in multi-model provider/builder.
Improved documentation
Eliminate useless “which docker” check which fails on Windows hosts
Perform redirect from / to Swagger API docs in Flask server
Support for predict_proba method in ML model
Do not fix first dimension size for numpy arrays and torch tensors
Support for Pytorch JIT (TorchScript) models
Bump tensorflow from 1.14.0 to 1.15.0
Added more tests
0.3.2 (2019-12-04)
Multi-model interface bug fixes
0.3.1 (2019-12-04)
Minor bug fixes
0.3.0 (2019-11-27)
Added support for LightGBM models
Added support for XGBoost models
Added support for PyTorch models
Added support for CatBoost models
Added uwsgi server for flask containers
0.2.1 (2019-11-19)
Minor bug fixes
0.2.0 (2019-11-14)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for ebonite-0.3.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7249f2a97f8a1614b9730daaa44c7a193b9d82c8d6654defcc8ee1e8f001141d |
|
MD5 | 918a452e70d2184a34fffa63f9924555 |
|
BLAKE2b-256 | 91bd515b0d205da547dd0dd46852ce8515911add93a55d7f5286a0fe17899b3c |