Metadata-Version: 2.4
Name: busysloths-mlox
Version: 0.1.0.post55
Summary: Accelerate your ML journey—deploy production-ready MLOps in minutes, not months.
Author-email: nicococo <contact@mlox.org>
License: MIT License
        
        Copyright (c) 2024 nicococo
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
Project-URL: Homepage, https://busysloths.github.io/mlox/mlox.html
Project-URL: Tracker, https://github.com/busysloths/mlox/issues
Project-URL: Source, https://github.com/busysloths/mlox
Project-URL: Examples, https://github.com/busysloths/mlox
Keywords: Infrastructure,Server,Service,Dashboard,Opinionated,MLOps
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development
Classifier: Topic :: System :: Distributed Computing
Classifier: Topic :: Internet
Classifier: Topic :: Database
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: dacite
Requires-Dist: pyyaml
Requires-Dist: fabric
Requires-Dist: cryptography
Requires-Dist: bcrypt
Requires-Dist: passlib
Provides-Extra: gcp
Requires-Dist: pandas; extra == "gcp"
Requires-Dist: gspread; extra == "gcp"
Requires-Dist: pandas-gbq; extra == "gcp"
Requires-Dist: google-cloud-storage; extra == "gcp"
Requires-Dist: google-cloud-bigquery; extra == "gcp"
Requires-Dist: google-cloud-secret-manager; extra == "gcp"
Provides-Extra: all
Requires-Dist: streamlit; extra == "all"
Requires-Dist: streamlit-vis-timeline; extra == "all"
Requires-Dist: backports.tarfile; extra == "all"
Requires-Dist: pandas; extra == "all"
Requires-Dist: numpy; extra == "all"
Requires-Dist: gspread; extra == "all"
Requires-Dist: pandas-gbq; extra == "all"
Requires-Dist: google-cloud-storage; extra == "all"
Requires-Dist: google-cloud-bigquery; extra == "all"
Requires-Dist: google-cloud-secret-manager; extra == "all"
Requires-Dist: mlflow; extra == "all"
Requires-Dist: mlserver; extra == "all"
Requires-Dist: psutil; extra == "all"
Requires-Dist: opentelemetry-api; extra == "all"
Requires-Dist: opentelemetry-sdk; extra == "all"
Requires-Dist: opentelemetry-exporter-otlp; extra == "all"
Requires-Dist: redis; extra == "all"
Requires-Dist: influxdb; extra == "all"
Requires-Dist: grpcio; extra == "all"
Provides-Extra: dev
Requires-Dist: streamlit; extra == "dev"
Requires-Dist: streamlit-vis-timeline; extra == "dev"
Requires-Dist: backports.tarfile; extra == "dev"
Requires-Dist: pandas; extra == "dev"
Requires-Dist: numpy; extra == "dev"
Requires-Dist: gspread; extra == "dev"
Requires-Dist: pandas-gbq; extra == "dev"
Requires-Dist: google-cloud-storage; extra == "dev"
Requires-Dist: google-cloud-bigquery; extra == "dev"
Requires-Dist: google-cloud-secret-manager; extra == "dev"
Requires-Dist: mlflow; extra == "dev"
Requires-Dist: mlserver; extra == "dev"
Requires-Dist: psutil; extra == "dev"
Requires-Dist: opentelemetry-api; extra == "dev"
Requires-Dist: opentelemetry-sdk; extra == "dev"
Requires-Dist: opentelemetry-exporter-otlp; extra == "dev"
Requires-Dist: redis; extra == "dev"
Requires-Dist: influxdb; extra == "dev"
Requires-Dist: grpcio; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest-mock; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: pdoc; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: psycopg2-binary; extra == "dev"
Dynamic: license-file

## BusySloths presents
[![Logo](https://github.com/BusySloths/mlox/blob/main/mlox/resources/mlox_logo_wide.png?raw=true)](Logo)

<p align="center">
<strong>
Accelerate your ML journey—deploy production-ready MLOps in minutes, not months.
</strong>
</p>

Tired of tangled configs, YAML jungles, and broken ML pipelines? So were we.
MLOX gives you a calm, streamlined way to deploy, monitor, and maintain production-grade MLOps infrastructure—without rushing.
It’s for engineers who prefer thoughtful systems over chaos. Powered by sloths. Backed by open source.

<p align="center">
<a href="https://qlty.sh/gh/BusySloths/projects/mlox"><img src="https://qlty.sh/gh/BusySloths/projects/mlox/maintainability.svg" alt="Maintainability" /></a>
<a href="https://qlty.sh/gh/BusySloths/projects/mlox"><img src="https://qlty.sh/gh/BusySloths/projects/mlox/coverage.svg" alt="Code Coverage" /></a>
<img alt="GitHub Issues or Pull Requests" src="https://img.shields.io/github/issues/busysloths/mlox">
<img alt="GitHub Discussions" src="https://img.shields.io/github/discussions/busysloths/mlox">
</p>

### ATTENTION

MLOX is still in a very early development phase. If you like to contribute in any capacity, we would love to hear from you `contact[at]mlox.org`.


### Installation

There are two parts of the project.
1. If you want to install the main UI to manage your infrastructure, then
```
  pip install busysloths-mlox[all]
```
This will install the main UI together with all supporting components (ie. lots of packages!).

2. If you have existing MLOX infrastructure and want to use certain functionality in your apps, you can install only the necessary parts, e.g. if you want to use GCP related functionality:
```
  pip install busysloths-mlox[gcp]
```
This will only install the base packages as well as GCP related packages.

### Unnecessary Long Introduction

Machine Learning (ML) and Artificial Intelligence (AI) are revolutionizing businesses and industries. Despite its importance, many companies struggle to go from ML/AI prototype to production.

ML/AI systems consist of eight non-trivial sub-problems: data collection, data processing, feature engineering, data labeling, model design, model training and optimization, endpoint deployment, and endpoint monitoring. Each of these step require specialized expert knowledge and specialized software. 

MLOps, short for **Machine Learning Operations,** is a paradigm that aims to tackle those problems and deploy and maintain machine learning models in production reliably and efficiently. The word is a compound of "machine learning" and the continuous delivery practice of DevOps in the software field.

Cloud provider such as Google Cloud Platform or Amazon AWS offer a wide range of solutions for each of the MLOps steps. However, solutions are complex and costs are notorious hard to control on these platforms and are prohibitive high for individuals and small businesses such as startups and SMBs. E.g. a common platform for data ingestion is Google Cloud Composer who’s monthly base rate is no less than 450 Euro for a meager 2GB RAM VPS. Solutions for model endpoint hosting are often worse and often cost thousands of euros p. month (cf. Databricks).

Interestingly, the basis of many cloud provider MLOps solutions is widely available open source software (e.g. Google Cloud Composer is based on Apache Airflow). However, these are  complex software packages were setup, deploy and maintaining is a non-trivial task.

This is were the MLOX project comes in. The goal of MLOX is four-fold:

1. [Infrastructure] MLOX offers individuals, startups, and small teams easy-to-use UI to securily deploy, maintain, and monitor complete MLOps infrastructures on-premise based on open-source software without any vendor lock-in.
2. [Code] To bridge the gap between the users` code base and the MLOps infrastructure,  MLOX offers a Python PYPI package that adds necessary functionality to integrate with all MLOps services out-of-the-box. 
3. [Processes] MLOX provides fully-functional templates for dealing with data from ingestion, transformation, storing, model building, up until serving.
4. [Migration] Scripts help to easily migrate parts of your MLOps infrastructure to other service providers.

More Links:

1. https://en.wikipedia.org/wiki/MLOps
2. https://www.databricks.com/glossary/mlops
3. https://martinfowler.com/articles/cd4ml.html



## Contributing  
There are many ways to contribute, and they are not limited to writing code. We welcome all contributions such as:

- <a href="https://github.com/BusySloths/mlox/issues/new/choose">Bug reports</a>
- <a href="https://github.com/BusySloths/mlox/issues/new/choose">Documentation improvements</a>
- <a href="https://github.com/BusySloths/mlox/issues/new/choose">Enhancement suggestions</a>
- <a href="https://github.com/BusySloths/mlox/issues/new/choose">Feature requests</a>
- <a href="https://github.com/BusySloths/mlox/issues/new/choose">Expanding the tutorials and use case examples</a>

Please see our [Contributing Guide](CONTRIBUTING.md) for details.


## Big Thanks to our Sponsors

MLOX is proudly funded by the following organizations:

<img src="https://github.com/BusySloths/mlox/blob/main/mlox/resources/BMFTR_logo.jpg?raw=true" alt="BMFTR" width="420px"/>

## Supporters
We would not be here without the generous support of the following people and organizations:

<p align="center">
<img src="https://github.com/BusySloths/mlox/blob/main/mlox/resources/PrototypeFund_logo_light.png?raw=true" alt="PrototypeFund" width="380px"/>
<img src="https://github.com/BusySloths/mlox/blob/main/mlox/resources/PrototypeFund_logo_dark.png?raw=true" alt="PrototypeFund" width="380px"/>
</p>


## License  

MLOX is open-source and intended to be a community effort, and it wouldn't be possible without your support and enthusiasm.
It is distributed under the terms of the MIT license. Any contribution made to this project will be subject to the same provisions.

## Join Us 

We are looking for nice people who are invested in the problem we are trying to solve. 
