Framework for ML and DS: Automating pipelines from training to deployment
Project description
README
OutBoxML is an open-source framework designed to improve the process of automating machine learning pipelines from model training to deployment. This toolkit integrates several key components including Python for model development, Grafana for monitoring, FastAPI for serving models, and MLFlow for experiment tracking and management. Our aim is to provide a robust and user-friendly platform for ML practitioners to efficiently build, deploy, and monitor their ML solutions with ease.
The key components include:
- AutoML: Use AutoML algorithm with boosting or implement your custom models using low-code solution
- MLFlow: Track experiments, parameters, and outputs with MLFlow .
- Grafana Monitoring: Utilize Grafana dashboards to monitor ML models performance in real-time
- FastAPI: Host the models with FastAPI that allows for quick deployment and testing of ML models via RESTful APIs.
- PostgreSQL: Use open source database to store and update data for AutoML proceses
The main connections between components are made with Docker, the framework requires OS with Docker и Docker Compose installed.
Communications between the containers
All containers use one Docker network, by default (<project>_default):
- MLflow Communicates with PostgreSQL using
postgre. - Prometheus collect metrics from
node-exporter. - FastAPI Sends metrics to MLflow with REST API.
Ports
By default containers map to the following ports:
- MLflow:
5000:5000 - Grafana:
3000:3000 - Prometheus:
9090:9090 - Node Exporter:
9100:9100 - Jupyter Notebook:
8889:8888 - FastAPI:
8000:8000 - Minio:
9001:9001
Getting Started
- Change the directory to outboxml/app
- Run the create-folder.bat(on Windows) or create-folder.sh(on Linux) before starting any other actions.
- To start the project change the directory to outboxml/app
docker compose up
or for backround lunchdocker compose up -d
- To restart:
docker compose down && docker compose up --build
- To stop the project:
docker compose down
-
Check availablity
- MLflow: http://localhost:5000
- Grafana: http://localhost:3000 (default login/password:
admin/admin) - Prometheus: http://localhost:9090
- Jupyter Notebook: http://localhost:8889
- FastAPI: http://localhost:8000
-
Ensure that all containters are up
docker ps -
For testing of FastAPI use Swagger docs: http://localhost:8000/docs.
-
Minio setup
- Open http://localhost:9001 (login: minio, password: Strong#Pass#2022)
- Click "Create Bucket" with name "mlflow"
- Open the bucket and edit "Access Policy:"
- Set Access Policy to Public and click set
Network restrictions and security concerts
- The containers are isolated
- Use firewall on the host machine for extra security
- Jupyter Notebook
- By default open without password or token
- Prometheus и Grafana
- Manually connect Prometheus to Grafana.
Possible issues and solutions
-
The ports are in use:
- Find and free the neccesary ports:
sudo lsof -i:<порт>
- Alternatively change the ports in
docker-compose.yml.
- Find and free the neccesary ports:
-
No connection between containers:
- Check names of Docker network:
docker network inspect <project>_default
- Check names of Docker network:
-
No connections between FastAPI and MLflow:
- Check connections MLflow API:
curl http://mlflow:5000/api/2.0/mlflow/experiments/list
- Check connections MLflow API:
-
Instructions if packages won't install via pip install
1. Log in as a user with sudo privileges.
2. Open the file /etc/default/docker:
$ sudo nano /etc/default/docker
3. Find and uncomment or add the following line:
DOCKER_OPTS="--dns 8.8.8.8"
4. Save and close the file.
5. Restart the Docker daemon service:
$ sudo systemctl restart docker
Contributing
We welcome contributions from the community! If you'd like to contribute, please follow the contributing guidelines outlined in docs/CONTRIBUTING.md.
License
This project is licensed under the MIT License - see the LICENSE.md file for details.
Support
For support, please open an issue on GitHub or contact the maintainers directly.
Acknowledgements
We would like to thank VSK, whose support has been pivotal to the success of the project. Special thanks to Vladimir Nikulin, who not only supervised the business aspects of the project but also provided invaluable insights and guidance on its integration with business workflows. We appreciate the support of our Data Science department for integrating the framework into ML processes, and extend special thanks to the MLOps team, especially Aleksey Makeev and Dmitry Zotov, or their contributions to testing and DevOps integration.
Current contributors
- Semyon Semyonov - Original codebase development, system design and product management
- Vladimir Suvorov - Core code development and software architecture
- Dmitry Bochkarev - Code development and data science model implementation
- Maxim Matcera - Development of specific modules
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file outboxml-0.10.1.tar.gz.
File metadata
- Download URL: outboxml-0.10.1.tar.gz
- Upload date:
- Size: 143.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
687889ffe6effcc39cd7cc84cdaa240eb4c4008e6c9883e2a48cf7754b090d21
|
|
| MD5 |
d7063a014e794bc29859bb096737da73
|
|
| BLAKE2b-256 |
62c74cd6de213c5e01b6c5f911a94668c8e35ffb1bcc2dd9b5653f9d493d2802
|
File details
Details for the file outboxml-0.10.1-py3-none-any.whl.
File metadata
- Download URL: outboxml-0.10.1-py3-none-any.whl
- Upload date:
- Size: 147.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cff4a7f67420b32a29209df3f3e78a2b80b47c8fc80aedab445cd5815c45cd88
|
|
| MD5 |
89dde7d78b3ae6130fa8d096f6da873a
|
|
| BLAKE2b-256 |
92d9471ee4573ba3f8db5e3a3846bb486d9f08c65e02fd29112ceebfc9659186
|