Skip to main content

Version Python version License Documentation Status

Tempo: The MLOps Software Development Kit

Documentation

An open source framework to enable data scientists to productionise, test and deploy models with simple workflows that abstract the underlying complexity of scalable MLOps platforms.

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 Seldon production runtimes
    • Seldon Core open source
    • Seldon Deploy enterprise
  • Create stateful services. Examples:
    • Multi-Armed Bandits.

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

Motivating Synopsis

Data scientists can easily test their models and orchestrate them with pipelines.

Below we see two Models (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 locally to docker.

from tempo import deploy_local
remote_model = deploy_local(classifier)

Make predictions on containerized servers that would be used in production.

remote_model.predict(np.array([[1, 2, 3, 4]]))

Deploy to Kubernetes for production.

from tempo.serve.metadata import SeldonCoreOptions
from tempo import deploy_remote

runtime_options = SeldonCoreOptions(**{
    "remote_options": {
        "namespace": "production",
        "authSecretName": "minio-secret"
    }
})	
remote_model = deploy_remote(classifier, options=runtime_options)

This is an extract from the multi-model introduction demo.

Release files for mlops-tempo 0.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mlops-tempo 0.5.2
File Size Uploaded
mlops-tempo-0.5.2.tar.gz 45.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mlops-tempo 0.5.2
File Interpreter ABI Platform
mlops_tempo-0.5.2-py3-none-any.whl Python 3 none any Details

Total release size:120.0 kB

Release files / mlops-tempo-0.5.2.tar.gz

Download URL mlops-tempo-0.5.2.tar.gz
Size 45.0 kB
Tags Source
SHA-256 checksum
How to use checksums
28744f6c93331d281e22c879390d1147cf7355d4d387e3be4db3395743197134
BLAKE2b-256 checksum
How to use checksums
fdc2f6027b72f7851d373e454586ab85568c7cae837318a34d18131bf80d617e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.5.0.1 requests/2.25.1 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.7.4

Release files / mlops_tempo-0.5.2-py3-none-any.whl

Download URL mlops_tempo-0.5.2-py3-none-any.whl
Size 75.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9e4313a09ee18ed2b416d515c13f1fbc3b359701dd069cfe6af819407b51c5e9
BLAKE2b-256 checksum
How to use checksums
517582862901ffddb1eb305dcb5d03149fbfa6f25ea08359e6185870ee4e2f40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.5.0.1 requests/2.25.1 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.7.4
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page