Machine Learning Operations Toolkit
Project description
⏳ Tempo: The MLOps Software Development Kit
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
Highlights
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 an inference pipeline of models and orchestration steps.
- Include any custom python components as needed. Examples:
- Outlier detectors with Alibi-Detect.
- Explainers with Alibi-Explain.
- Test Locally - Deploy to Production
- Run with local unit tests.
- Deploy locally to Docker to test with Docker runtimes.
- Deploy to production on Kubernetes
- Extract declarative Kubernetes yaml to follow GitOps workflows.
- Supporting a wide range of production runtimes
- Seldon Core open source
- KFServing open source
- Seldon Deploy enterprise
- Create stateful services. Examples:
- Multi-Armed Bandits.
Workflow
- Develop locally.
- Test locally on Docker with production artifacts.
- Push artifacts to remote bucket store and launch remotely (on Kubernetes).
Motivating Synopsis
Data scientists can easily test their models and orchestrate them with pipelines.
Below we see two Model
s (sklearn and xgboost) with a function decorated pipeline
to call both.
def get_tempo_artifacts(artifacts_folder: str) -> Tuple[Pipeline, Model, Model]:
sklearn_model = Model(
name="test-iris-sklearn",
platform=ModelFramework.SKLearn,
local_folder=f"{artifacts_folder}/{SKLearnFolder}",
uri="s3://tempo/basic/sklearn",
)
xgboost_model = Model(
name="test-iris-xgboost",
platform=ModelFramework.XGBoost,
local_folder=f"{artifacts_folder}/{XGBoostFolder}",
uri="s3://tempo/basic/xgboost",
)
@pipeline(
name="classifier",
uri="s3://tempo/basic/pipeline",
local_folder=f"{artifacts_folder}/{PipelineFolder}",
models=PipelineModels(sklearn=sklearn_model, xgboost=xgboost_model),
)
def classifier(payload: np.ndarray) -> Tuple[np.ndarray, str]:
res1 = classifier.models.sklearn(input=payload)
if res1[0] == 1:
return res1, SKLearnTag
else:
return classifier.models.xgboost(input=payload), XGBoostTag
return classifier, sklearn_model, xgboost_model
Save the pipeline code.
from tempo.serve.loader import save
save(classifier)
Deploy to docker.
from tempo.seldon.docker import SeldonDockerRuntime
docker_runtime = SeldonDockerRuntime()
docker_runtime.deploy(classifier)
docker_runtime.wait_ready(classifier)
Make predictions on containerized servers that would be used in production.
classifier.remote(payload=np.array([[1, 2, 3, 4]]))
Deploy to Kubernetes for production.
from tempo.serve.metadata import RuntimeOptions, KubernetesOptions
runtime_options = RuntimeOptions(
k8s_options=KubernetesOptions(
namespace="production",
authSecretName="minio-secret"
)
)
from tempo.seldon.k8s import SeldonKubernetesRuntime
k8s_runtime = SeldonKubernetesRuntime(runtime_options)
k8s_runtime.deploy(classifier)
k8s_runtime.wait_ready(classifier)
This is an extract from the introduction demo.
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
File details
Details for the file mlops-tempo-0.1.0rc1.tar.gz
.
File metadata
- Download URL: mlops-tempo-0.1.0rc1.tar.gz
- Upload date:
- Size: 33.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0.post20210125 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 801009a384ad11bfb9edcc4ae9054c1ce39bb9eb16ebc4dbab2dd494d1fd0f93 |
|
MD5 | dcecac9be3d429c98301904e440cd071 |
|
BLAKE2b-256 | 722371e1069c1ec86479eaaa0ea351c9dd0d7c2a521c86fde419047c06bda0b7 |
File details
Details for the file mlops_tempo-0.1.0rc1-py3-none-any.whl
.
File metadata
- Download URL: mlops_tempo-0.1.0rc1-py3-none-any.whl
- Upload date:
- Size: 58.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0.post20210125 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.7.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee7ba8f47fc991dba42cb6b87f418aef8d96ba68a57e358889e827d91598d299 |
|
MD5 | 6507c90ebded45ae068e1a80bb708c0d |
|
BLAKE2b-256 | b8d890b6fff3162686718676eea4bd52087d1932f7d960b6c9bdc1acce265c5b |