The vast majority of the recommender systems nowadays are based on algorithms which are good at representing linear relations between users and items, or items and items. With the growing popularity of deep learning applications, it was quite natural for us to experiment with a more advanced recommendation engine which could represent more complex, non-linear relations. With this we were able to generate much more relevant recommendations to the users.
The new recommendation engine was developed by a student as part of his master thesis, lead by a PHD colleague from the mobile.de data team. The engine is based on deep learning and combines 3 sub neural networks. The engine showed really good results compared to our current recommendation engine, what brought us to the decision of trying to deploy it into our production system. Once we started to review the new engine, the following main challenges were raised:
- We are using Java/Scala in our production system: Is there a possibility to deploy a Tensorflow model, which was trained in python, in Java/Scala ?
- How would we be able to deploy new models into the production system, without any downtimes ?
- The model contains 3 sub neural networks, each sub network is responsible for different functionality: Would it be possible to isolate each of those sub networks and deploy it separately in order to scale out the entire engine ?
- How could we generate recommendations in real-time without pre-calculating the recommendations for each user/item over night ?
- Does such complex system can scale at all?
The main focus of this talk would be on our journey towards the design and implementation of a scalable architecture, giving all the mentioned above requirements, which could support the deployment of the new Deep Learning Recommender in production. During the talk I would try to present the different architecture components and how each component helps in solving the mentioned above challenges. In addition, I would try to describe how the different components of the Deep Learning Recommender could be reused and help us to improve also our search functionalities.
Keywords: Tensorflow, Tensorflow Serving, Scala, Docker, Kafka, nearest neighbor search, Elasticsearch, Deep Learninig.