How software engineers can build better products with automated machine learning

Romain Lencou came to Modulos as a senior software engineer in 2019. Before joining Modulos, he worked at some of the leading tech companies, including Logitech, VMWare and Intel. I talked with him via video chat to get his perspective on automated machine learning as a software engineer.

Question: Let’s start at the beginning and just maybe you can tell us a little bit about your background and your previous experience with machine learning.

Romain: Okay. So I’m a software engineer by trade. I was trained in France. I wanted to do pure software, embedded if possible. I was always looking for new challenges, so I pursued virtualization, I pursued cryptography, and arrived in machine learning. 

Question: Before you joined Modulos, you were trying to get machine learning working in an actual product. What kind of challenges did you face there?

Romain: We were trying to use computer vision to work in a product and machine learning was one of the tools we used. As we were trying to do that, I felt the challenges of my trade: the reality of putting a piece of software into production. These realities can sometimes limit what possibilities you can explore. Fast turnaround would often be really difficult for the data scientists. 

Suppose an updated ML framework comes along. Updating the production framework is costly, changing framework is costly. It could take two months to bring changes to production, so you had to be really sure it was worth it, and you really had to know what you are doing. 

Question: So, if you made some decisions about what kind of framework or what kind of model you want to use, you ended up being locked in? You couldn’t change your mind further down the road? 

Romain: Yeah. To go from a data scientist experiment, to a real product, there are weeks and months of hard work and consolidation, of optimizing memory and CPU usage, weeks of being sure that it’s good software and not just… well, bleeding-edge things also sometimes crash. So yeah, I would say so.

Question: So now that you joined Modulus and you’re working on making automated machine learning a useful tool, thinking back to your time, how would it have helped you to have access to something like AutoML?

Romain: Well, first of all, being able to easily change AI solutions without having to change APIs, without having to care about packaging, without having to care about all the small details, makes a big difference. Ideally, AutoML enables real continuous integration and testing. If a new model or framework becomes available such as a new version of TensorFlow, then I just send the new models on to continuous integration and testing. And when they pass, we’re done and the new model is put in place. That would be priceless, because then I could just focus on feature development, and I don’t have to do any maintenance or service.

The first thing you learn as an engineer is to not reinvent the wheel, so the best way to do my job is to just have our automated machine learning system deliver me a package I can plug in and it works.

Romain Lencou, Senior Software engineer

Question: The way in which software engineers work with machine learning is changing, right? Software engineers like you now have the ability to use machine learning without having to constantly cross-check with data scientists?

Romain: That’s one of the big things for me. When I worked using computer vision and machine learning, I would see them as pieces of the puzzle, but ultimately I don’t care about the pieces, but the whole puzzle — meaning writing very good software. Machine learning should be a tool used by good software engineers. The first thing you learn as an engineer is to not reinvent the wheel, so the best way to do my job is to just have our automated machine learning system deliver me a package I can plug in and it works.

Spending time on data augmentation, or, I don’t know, binarizing weights or things like that, or chasing down if the new framework is likely to bog down the app or service? That’s something I don’t enjoy. I just want to compose the elements themselves, and I can do it for programming languages, I can do it for services, I can do it for servers. Why can’t I also do it for machine learning?  It’s a service to me. Give me an API and I will use it.