Skip to main content

Machine Learning Operations Toolkit

Project description

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 a wide range of production runtimes
    • Seldon Core open source
    • KFServing 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mlops-tempo-0.5.0.tar.gz (47.1 kB view details)

Uploaded Source

Built Distribution

mlops_tempo-0.5.0-py3-none-any.whl (77.9 kB view details)

Uploaded Python 3

File details

Details for the file mlops-tempo-0.5.0.tar.gz.

File metadata

  • Download URL: mlops-tempo-0.5.0.tar.gz
  • Upload date:
  • Size: 47.1 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

Hashes for mlops-tempo-0.5.0.tar.gz
Algorithm Hash digest
SHA256 e9645e72126a896cab883963ae7ebae98b9ec24d80c76bdd3e2e5f8cebb6f977
MD5 fce0bad41f3229a8f2231a767ca8ac4c
BLAKE2b-256 ed7d9e38da7f53dc01ccd5e19b40707036877544a684f6b5cdc206b41960ab37

See more details on using hashes here.

File details

Details for the file mlops_tempo-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: mlops_tempo-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 77.9 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

Hashes for mlops_tempo-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 20b814a56b056847401ef1dea91df38a69b8a66fdd1b4490341af73a28c0f7fd
MD5 bd60fc353bb7c281e4fab617602f60ee
BLAKE2b-256 d8f7a0ebeb2efa44c4738cf855aadcb1905ac01a90b0e572c08226eabe89ada6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page