Originally from Morocco, Amine, a Software Engineer in Criteo AI Lab, moved to Paris at the age of 20 to study Engineering before diving headfirst into data science and machine learning.
Now an integral part of the team that builds the Criteo Recommender System, the technology that backs the Product Recommendations arm of the Criteo Engine, Amine chats with us this week about his work in Criteo AI Lab and his biggest challenges working in Machine Learning.
Tell us about your background and how you came to Criteo.
I got my Engineering Degree from ENSTA ParisTech, majoring in applied mathematics. After working for a few years on a variety of subjects (ranging from Natural Language Processing to Discrete Optimization) in smaller companies, I thought it was about time I took it to the next level in terms of scale, team size and challenge. Criteo checked these boxes (and a few more), and I was happy to join the recommendation team a year ago.
What do you do at Criteo?
I am a Software Engineer working on Machine Learning problems, what we typically call an Eng ML at Criteo, and my job is to leverage Machine Learning techniques to solve our problems and build large scale ML powered systems. Specifically, I work on the Criteo Recommender system which connects billions of users to billions of products through billions of daily displays.
One of the trends in Machine Learning for at least the last few years revolves around embedding different entities (like products and users) in a vector space while preserving the notion of “similarity”. One fundamental operation that is afterwards used, is retrieving the closest entities to a given query entity in this vector space, this is what is called “nearest neighbor retrieval”. Now, I’m working on scaling our solution to billions of queries and hundreds of millions of entities while keeping a reasonable running time.
What is your typical day like?
Most days revolve around solving problems, either by actually writing code and building things, doing design and code reviews, having sync meetings with other teams, going to technical presentations (what we affectionately call Beer & Techs) or Reading groups (around Machine Learning mostly). So no two days are exactly alike but they have a good mix of individual work and (important) meetings.
What is the most exciting part of your job?
I came to Criteo for the scale and the challenge of the problems and I was not disappointed. Actually applying novel Machine Learning techniques to real world problems is very rewarding, for example, discovering what makes a user click or buy a particular type of product or what makes a group of users interests similar.
But I would say the most exciting part of my job is to actually be surrounded by smart and brilliant folk from which you can learn something everyday.
What is the most challenging part of your job?
Well the challenging parts are also the most fun, getting your solution up to Criteo’s scale is no easy feat. I am glad to contribute to building a tool that helps us visualize the inputs and outputs of several components of our pipeline (user history, aggregated user features, recommendations, etc.) and gives insight into what to improve.
Criteo’s business is built on Machine Learning, and Machine Learning algorithms are built on data, so visualizing our data sources and assessing their quality, spotting issues is an important part of our job.
Understanding how to the different pieces of Criteo’s infra fit together and how to optimally design your system with regards to the current constraints is part of the job, but there is always some twist, otherwise it’s too easy right?
Another challenging aspect is the variety of problems we have the opportunity to solve, from writing an offline job that processes terabytes of data, to changing something in an real time service that processes millions of requests / second, to analyzing some AB test results, you don’t really have time to be bored.
Advice for people looking to get into Machine Learning?
Be curious and eager to learn. While this advice applies to any field, it is especially true for Machine Learning where things are moving at a fast pace. Being curious also means being interested in other fields of Computer Science like information theory, algorithm design … you never know where the inspiration for you next solution will come from.