Skip to content

Commit

Permalink
Merge pull request #66 from cliveseldon/62_notebook_updates
Browse files Browse the repository at this point in the history
Updated basic example and docs
  • Loading branch information
ukclivecox authored Mar 26, 2021
2 parents 7eb6ca2 + c02aee1 commit ae29b95
Show file tree
Hide file tree
Showing 28 changed files with 1,591 additions and 632 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ install:
.PHONY: install-dev
install-dev: install
pip install -r requirements-dev.txt
pip install -r docs/requirements-docs.txt

.PHONY: test
test:
Expand Down
28 changes: 27 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,38 @@

# ⏳ Tempo: The MLOps Software Development Kit

An open source SDK to streamline workflows to productionise machine learning models at scale.
## Vision

*Enable data scientists to see a productionised machine learning model within moments, not months. Easy to work with locally and also in kubernetes, whatever your preferred data science tools*

## Overview

Tempo provides a unified interface to multiple MLOps projects that enable data scientists to deploy and productionise machine learning systems.


* Package your trained model artifacts to optimized server runtimes (Tensorflow, PyTorch, Sklearn, XGBoost etc)
* Package custom business logic to production servers.
* Build a inference pipeline of models and orchestration steps.
* Include any custom python components as needed. Examples:
* Outlier detectors with Alibi-Detect.
* Explainers with Alibi-Explain.
* Deploy locally to Docker to test with Docker runtimes.
* Deploy to production on Kubernetes with configurable runtimes.
* Seldon customers can deploy with Seldon Deploy runtime.
* Run with local unit tests.
* Create stateful services. Examples:
* Multi-Armed Bandits.
* Extract declarative Kubernetes yaml to follow GitOps workflows.


## Workflow

1. Develop locally.
2. Test locally on Docker with production artifacts.
3. Push artifacts to remote bucket store and launch remotely (on Kubernetes).

![overview](/assets/tempo-overview.png)

## Motivating Example

Tempo allows you to interact with scalable orchestration engines like Seldon Core and KFServing, and leverage a broad range of machine learning services like TFserving, Triton, MLFlow, etc.
Expand Down
33 changes: 33 additions & 0 deletions conda/conda.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: tempo
channels:
- defaults
dependencies:
- _libgcc_mutex=0.1=main
- ca-certificates=2021.1.19=h06a4308_0
- certifi=2020.12.5=py37h06a4308_0
- ld_impl_linux-64=2.33.1=h53a641e_7
- libedit=3.1.20191231=h14c3975_1
- libffi=3.3=he6710b0_2
- libgcc-ng=9.1.0=hdf63c60_0
- libstdcxx-ng=9.1.0=hdf63c60_0
- ncurses=6.2=he6710b0_1
- openssl=1.1.1j=h27cfd23_0
- pip=21.0.1=py37h06a4308_0
- python=3.7.9=h7579374_0
- readline=8.1=h27cfd23_0
- setuptools=52.0.0=py37h06a4308_0
- sqlite=3.33.0=h62c20be_0
- tk=8.6.10=hbc83047_0
- wheel=0.36.2=pyhd3eb1b0_0
- xz=5.2.5=h7b6447c_0
- zlib=1.2.11=h7b6447c_3
- pip:
- opencv-python-headless
- mlops-tempo
- alibi-detect
- dill
- mlserver==0.3.1.dev5
- mlserver-tempo==0.3.1.dev5
- jupyter
- ansible

182 changes: 182 additions & 0 deletions conda/environment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
name: tempo-examples
channels:
- defaults
dependencies:
- _libgcc_mutex=0.1=main
- ca-certificates=2021.1.19=h06a4308_1
- certifi=2020.12.5=py37h06a4308_0
- ld_impl_linux-64=2.33.1=h53a641e_7
- libffi=3.3=he6710b0_2
- libgcc-ng=9.1.0=hdf63c60_0
- libstdcxx-ng=9.1.0=hdf63c60_0
- ncurses=6.2=he6710b0_1
- openssl=1.1.1j=h27cfd23_0
- pip=21.0.1=py37h06a4308_0
- python=3.7.10=hdb3f193_0
- readline=8.1=h27cfd23_0
- setuptools=52.0.0=py37h06a4308_0
- sqlite=3.35.2=hdfb4753_0
- tk=8.6.10=hbc83047_0
- wheel=0.36.2=pyhd3eb1b0_0
- xz=5.2.5=h7b6447c_0
- zlib=1.2.11=h7b6447c_3
- pip:
- absl-py==0.12.0
- alibi==0.5.6
- alibi-detect==0.5.1
- argon2-cffi==20.1.0
- astunparse==1.6.3
- async-generator==1.10
- attrs==20.3.0
- authlib==0.15.3
- backcall==0.2.0
- beautifulsoup4==4.9.3
- bleach==3.3.0
- blis==0.7.4
- cachetools==4.2.1
- catalogue==2.0.1
- cffi==1.14.5
- chardet==4.0.0
- click==7.1.2
- cloudpickle==1.6.0
- conda-pack==0.5.0
- cryptography==3.4.6
- cymem==2.0.5
- dask==2021.3.0
- decorator==4.4.2
- defusedxml==0.7.1
- dill==0.3.3
- dm-tree==0.1.5
- docker==4.4.4
- entrypoints==0.3
- fastapi==0.63.0
- filelock==3.0.12
- flatbuffers==1.12
- gast==0.3.3
- google-auth==1.28.0
- google-auth-oauthlib==0.4.3
- google-pasta==0.2.0
- grpcio==1.32.0
- h11==0.12.0
- h5py==2.10.0
- idna==2.10
- imageio==2.9.0
- importlib-metadata==3.7.3
- ipykernel==5.5.0
- ipython==7.21.0
- ipython-genutils==0.2.0
- ipywidgets==7.6.3
- jedi==0.18.0
- jinja2==2.11.3
- joblib==1.0.1
- jsonschema==3.2.0
- jupyter==1.0.0
- jupyter-client==6.1.12
- jupyter-console==6.4.0
- jupyter-core==4.7.1
- jupyterlab-pygments==0.1.2
- jupyterlab-widgets==1.0.0
- keras-preprocessing==1.1.2
- kiwisolver==1.3.1
- kubernetes==12.0.1
- llvmlite==0.36.0
- markdown==3.3.4
- markupsafe==1.1.1
- matplotlib==3.3.4
- mistune==0.8.4
- mlops-tempo==0.1.0.dev6
- mlserver==0.3.1.dev5
- mlserver-tempo==0.3.1.dev5
- murmurhash==1.0.5
- nbclient==0.5.3
- nbconvert==6.0.7
- nbformat==5.1.2
- nest-asyncio==1.5.1
- networkx==2.5
- notebook==6.3.0
- numba==0.53.0
- numpy==1.19.5
- oauthlib==3.1.0
- opencv-python==4.5.1.48
- opencv-python-headless==4.5.1.48
- opt-einsum==3.3.0
- orjson==3.5.1
- packaging==20.9
- pandas==1.2.3
- pandocfilters==1.4.3
- parso==0.8.1
- pathy==0.4.0
- pexpect==4.8.0
- pickleshare==0.7.5
- pillow==8.1.2
- preshed==3.0.5
- prometheus-client==0.9.0
- prompt-toolkit==3.0.18
- protobuf==3.15.6
- ptyprocess==0.7.0
- pyasn1==0.4.8
- pyasn1-modules==0.2.8
- pycparser==2.20
- pydantic==1.7.3
- pygments==2.8.1
- pyparsing==2.4.7
- pyrsistent==0.17.3
- python-dateutil==2.8.1
- python-rclone==0.0.2
- pytz==2021.1
- pywavelets==1.1.1
- pyyaml==5.4.1
- pyzmq==22.0.3
- qtconsole==5.0.3
- qtpy==1.9.0
- regex==2021.3.17
- requests==2.25.1
- requests-oauthlib==1.3.0
- rsa==4.7.2
- sacremoses==0.0.43
- scikit-image==0.18.1
- scikit-learn==0.24.1
- scipy==1.6.1
- seldon-deploy-sdk==0.2.1
- send2trash==1.5.0
- shap==0.37.0
- six==1.15.0
- slicer==0.0.3
- smart-open==3.0.0
- soupsieve==2.2.1
- spacy==3.0.5
- spacy-legacy==3.0.1
- spacy-lookups-data==1.0.0
- srsly==2.4.0
- starlette==0.13.6
- tensorboard==2.4.1
- tensorboard-plugin-wit==1.8.0
- tensorflow==2.4.1
- tensorflow-estimator==2.4.0
- tensorflow-probability==0.12.1
- termcolor==1.1.0
- terminado==0.9.3
- testpath==0.4.4
- thinc==8.0.2
- threadpoolctl==2.1.0
- tifffile==2021.3.17
- tokenizers==0.10.1
- toolz==0.11.1
- tornado==6.1
- tqdm==4.59.0
- traitlets==5.0.5
- transformers==4.4.2
- typer==0.3.2
- typing-extensions==3.7.4.3
- urllib3==1.26.4
- uvicorn==0.13.4
- wasabi==0.8.2
- wcwidth==0.2.5
- webencodings==0.5.1
- websocket-client==0.58.0
- werkzeug==1.0.1
- widgetsnbextension==3.5.1
- wrapt==1.12.1
- zipp==3.4.1
prefix: /home/clive/anaconda3/envs/tempo-examples

12 changes: 12 additions & 0 deletions conda/requirements-examples.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
conda-pack
jupyter
ansible
openshift
opencv-python-headless
mlops-tempo
alibi-detect==0.5.1
alibi==0.5.6
dill
mlserver==0.3.1.dev5
mlserver-tempo==0.3.1.dev5
xgboost
1 change: 1 addition & 0 deletions conda/requirements-minimal.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
conda-pack
Binary file added docs/assets/tempo-overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions docs/examples/basic/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
minio-secret.yaml
rclone.conf
Loading

0 comments on commit ae29b95

Please sign in to comment.