Tech stack:
Kubernetes
Kubernetes
MLFlow
MLFlow
FastAPI
FastAPI
Dash
Dash
Story
For a couple of months, I have been creating single components of a Machine Learning Platform at my work. I thought that creating a similar solution as a whole would be a good enough challenge for me for private repositories contributions. That’s when I decided to create a Fullstack MLOps Platform for Formula 1 – a coherent place, where any petrolhead can experience the true queen of motorsport.
Solution
I decided that the whole F1 Platform will be run with the usage of minikube Kubernetes distribution, together with Docker, Python and Git codebase. For single components, I have used a vast number of popular frameworks, used everyday in the data science and Machine Learning world, for instance: MLFlow, MinIO, Dash, PyGWalker, Prometheus, Grafana, Roboflow.
Platform Architecture
Landscape view
Components
1. Academy | Dash Dashboard – of Driver Telemetry data (based on F1 2019 PS4 Game), |
2. Classify | FastAPI ML Model – for F1 Cars Image Classification of Teams, |
3. Recognize | FastAPI ML Model – for Image/Video F1 Cars Recognition and Classification of Teams, |
4. Explore | PyGWalker Dashboard – of F1 Historical Dataset, |
5. Monitoring & Aggregate | Grafana Dashboard – based on Prometheus logged data, |
6. Models | MLFlow Repository – of model runs and experiments, |
7. Storage | MinIo S3 – object-based storage. |
Project Phases
- 1. Locally on PC,
- 2. On-premise VPS,
- 3. Cloud-based:
- 1. Google Cloud Platform,
- 2. Amazon Web Services,
- 3. Microsoft Azure.
Lesson Learned
By contributing to this project, I have observed that making hands-on engineering is the best way of learning for me. By: doing something valuable, having fun myself, and proving Hiring Managers wrong – creating this Fullstack MLOps Platform has been a very fulfilling code-journey for me. Moreover, not only has it enabled me to give back to the community, but also has it promoted Formula One to interested parties in a way (especially: business end-users and MLOps Engineers).
Statistics
- 8: Components:
- 4: Business end-users,
- 4: MLOps Engineers.
- 9: Languages:
- YAML, Dockerfile, Python, Jupyter, Shell, Markdown, HTML, CSS, JavaScript,
- 10: Code Repositories,
- 48: Tags,
- 167: Commits,
- 2042: Lines removed,
- 4651 Meaningful Lines of code (and counting!),
- 7548: Lines added.