Tempo: The MLOps Software Development Kit
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
- 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 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.
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mlops-tempo-0.5.2.tar.gz | 45.0 kB | Without provenance | Details for mlops-tempo-0.5.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mlops_tempo-0.5.2-py3-none-any.whl | Python 3 | none | any | Details for mlops_tempo-0.5.2-py3-none-any.whl |
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
|
Security for mlops-tempo 0.5.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.