Presentation: https://drive.google.com/drive/folders/1NntH7FiwwmKuPwTDOSu5uE7WJ73fX7xn
DockerHub ML image: https://hub.docker.com/r/artemsbulgakov/mlops-model
Business problem revolves around improving operational efficiency and passenger satisfaction through accurate flight status predictions. By classifying flights as on-time, canceled, or diverted, airlines can gain crucial insights to optimize their operations and provide a better service to their passengers.
Dataset: https://www.kaggle.com/datasets/robikscube/flight-delay-dataset-20182022 (Combined_Flights_2022.csv)
Team members:
- Ivan Golov
- Artem Bulgakov
- Alexey Tkachenko
- Install Docker (or Docker Desktop) with Docker Compose plugin.
- Run Flask API and Gradio UI:
docker compose up --build ml-gradio ml-api ml
- Check Gradio UI at http://localhost:8084, Flask API at http://localhost:8083, model API at http://localhost:8082/ping.
We use Docker to setup Airflow and run ZenML server. For local development and running MLFlow, we use Poetry venv.
- Install Docker (or Docker Desktop) with Docker Compose plugin.
- Run the following command:
mkdir -p ./services/airflow/dags ./services/airflow/logs ./services/airflow/plugins ./services/airflow/config echo -e "AIRFLOW_UID=$(id -u)" > .env
- Build images:
docker compose build --pull
- Install Python 3.11
- Install Poetry 1.8.3
- Add poetry plugin
$ poetry self add poetry-plugin-export
- Configure
.venv
location$ poetry config virtualenvs.in-project true
- Create
.venv
with Python 3.11 (make sure you have it installed)$ poetry env use python3.11
- Install dependencies
$ poetry install --with dev
- Set up pre-commit hooks
$ poetry run pre-commit install --install-hooks -t pre-commit -t commit-msg
We use Docker Compose to run all services of Airflow and ZenML server.
- Start Airflow services and ZenML server:
docker compose up --build
- Wait several minutes (Airflow may take a lot of time to start).
- Access Airflow at http://localhost:8080 (default login
airflow
, passwordairflow
). - Access ZenML server at http://localhost:8081 (default login
admin
, passwordadmin
).
- Start MLFlow server in one terminal:
mlflow server
- Run entry point in second terminal:
mlflow run . --env-manager=local
- Wait for all models to train.
- Access MLFlow server at http://localhost:5000.
Each folder contains a README.md
file with short description for every file. Code is well-documented with inline comments and representative symbol names