Food waste is a huge problem we encounter every day. Besides that, we notice that there is food waste in the cafeteria at EPFL and we were aware that a lot of food is wasted in the catering industry because restaurant tends to buy more ingredients since they don't know how much food they will sell. This problem is widely known in machine learning. So why do we not use the algorithms of it to help restaurants predict future sales in order to help them reduce overproduction and create a menu plan tailored for the customers? Which leads to a more sustainable world, emission reduction, and less overproduction.
What it does
We use DISCO (Distributed collaborative Machine Learning) to leverage federated learning to allow restaurant owners to collaboratively train machine learning models without sharing their original data. This helps restaurants to get more precise predictions without leaking any sensitive information. We build a simple to use App, which shows the restaurants the future sales and makes federated machine learning accessible for everyone on top of DISCO.
How we built it
It was tough, if you had asked me 10 hours ago I would say impossible. But we managed to build an app using Vue and write custom components for DISCO and port a scientific application into the real world. Since it's federated learning the data doesn't leave the client, so there is no real backend, which makes creating this app even harder. It's a full-fledged app with a front-end and a "not back-end".
Challenges we ran into
DISCO is hard to use since it has complicated server and client sides that handle all the peer2peer communications and model training tasks while providing outdated or hidden documentation. We spent more than half of our time trying to make it work. After it worked (just running) we had to integrate it with Vue, which was not trivial. So we had to write custom components to implement it.
Also, we failed to find any existing dataset that fits our needs, so we created a dummy one as a proof of concept and the service is providing what we intend to.
Accomplishments that we're proud of
First of all, we got DISCO running successfully with our own model! Second, integrate it into our own Vue app (to our knowledge we are the first ones doing so). And the app, it's simple, hacky but fancy :)
What we learned
- Never do frontend again
- DISCO please please improve your design and documentation. What about using gRPCs?
What's next for PredicTable
- Talk to restaurants (also EPFL cafeterias) and see how we can help them
- Providing options to interact with the restaurant system directly
- Implement time-series forecasting and a more complex model to improve accuracy
- Updating the model based on current performance and user feedback