Skip to main content

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.
  1. To start the project change the directory to outboxml/app
    docker compose up
    
    or for backround lunch
    docker compose up -d
    
  • To restart:
    docker compose down && docker compose up --build
    
  • To stop the project:
    docker compose down
    
  1. Check availablity

  2. Ensure that all containters are up

    docker ps
    
  3. For testing of FastAPI use Swagger docs: http://localhost:8000/docs.

  4. 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
  1. Jupyter Notebook
    • By default open without password or token
  2. Prometheus и Grafana
    • Manually connect Prometheus to Grafana.

Possible issues and solutions

  1. The ports are in use:

    • Find and free the neccesary ports:
      sudo lsof -i:<порт>
      
    • Alternatively change the ports in docker-compose.yml.
  2. No connection between containers:

    • Check names of Docker network:
      docker network inspect <project>_default
      
  3. No connections between FastAPI and MLflow:

    • Check connections MLflow API:
      curl http://mlflow:5000/api/2.0/mlflow/experiments/list
      
  4. 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

outboxml-0.10.1.tar.gz (143.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

outboxml-0.10.1-py3-none-any.whl (147.4 kB view details)

Uploaded Python 3

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

Hashes for outboxml-0.10.1.tar.gz
Algorithm Hash digest
SHA256 687889ffe6effcc39cd7cc84cdaa240eb4c4008e6c9883e2a48cf7754b090d21
MD5 d7063a014e794bc29859bb096737da73
BLAKE2b-256 62c74cd6de213c5e01b6c5f911a94668c8e35ffb1bcc2dd9b5653f9d493d2802

See more details on using hashes here.

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

Hashes for outboxml-0.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cff4a7f67420b32a29209df3f3e78a2b80b47c8fc80aedab445cd5815c45cd88
MD5 89dde7d78b3ae6130fa8d096f6da873a
BLAKE2b-256 92d9471ee4573ba3f8db5e3a3846bb486d9f08c65e02fd29112ceebfc9659186

See more details on using hashes here.

Supported by

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