ApplyingML

  • Papers
  • Resources
  • Mentors

Pratik Bhavsar - Founding Engineer (NLP) @ Enterpret

Learn more about Pratik on his site, Twitter, and LinkedIn.

Please share a bit about yourself: your current role, where you work, and what you do?

I work as a Founding Engineer at Enterpret. My primary role is to design and implement search and MLOps. I help set up the best practices around deploying models, testing and software engineering.

I like to write a lot and have written 40+ blogs in the last two years. You can find them at blogs.pratik.ai.

I also manage Maxpool - a data science community for ML practitioners.

What was your path towards working with machine learning? What factors helped along the way?

I am originally a Mechanical + Energy engineer. I was on a hiatus after my masters and stumbled upon NLP after some exploration. I was at a juncture where I did not want to go back to mechanical and not sure on where to go next. And then I thought of trying out ML for two more months. In a few months, I became a different person. I was laid off in a month at my first ML job due to the cancellation of funding. Luckily, I found a new job soon, which kick-started my real career in data science.

One day, I told my boss, "I am bored at times. What should I do?" He gave me advice that changed my life - "Nobody stops you from exploring new ideas in your free time. If you want to try out many things, go participate in hackathons." Due to this discussion, I got interested in hackathons and participated in 4 of them in a year. I won an external hackathon which gave me a lot of confidence boost. Later I won a company hackathon which kick-started a significant initiative inside the company to automate annotations done by 1000+ people. I led the effort and got to learn the ML lifecycle.

After this, I participated in a Microsoft learning to rank hackathon where I came in the top 20. This led to a contract of writing a book - "BERT For NLP" with Packt. I started writing it but hated the process. So I dropped the agreement and instead started publishing on medium. This started my journey into technical writing.

All these activities lead to a remote job, and I have been working remotely ever since.

How do you spend your time day-to-day?

I like to wake up early - 6:30 AM and start my day by watching a book summary on YouTube along with my coffee. Then I have a kettlebell workout for 20 minutes. I start working at 9 AM, and the first thing I do is write down my top 3 tasks for the day in a journal. Then I have a look at my calendar and chunk meetings at a later part of the day to get more time for deep work.

Many days I wonder what can be the most impactful thing for myself and the company. There is a difference. At times I try to pitch ideas that would move the product forward and help me work on something exciting. I like to create my own work.

I am an ardent follower of Atomic habits and try to add small improvements that can have a significant impact. I actively explore tools which can help me be more efficient.

Every sprint, we have two paper reading sessions where we discuss a relevant research paper that we can apply at work. This has turned out to be a great addition to us since it adds curiosity of learning in the team.

Sometimes, we work closely with the annotators for creating supervised datasets.

What are your tips for doing effective remote work?

First of all, communication is a real problem in remote work. I have been at 3 remote companies and, I saw tools playing a significant role in getting this better.

Async communication

  • Notion - internal wiki
  • Postman - for sharing APIs
  • Jira/Linear/Monday - task management
  • Slack - for chats
  • Miro - flow charts

Sync communication

  • Zoom - video discussions
  • Hangouts - video discussions
  • Slack - audio huddles

The more async communication tools you have, the more you unblock people to accomplish the task.

Secondly, learn to write better design docs. Eugene has an excellent article on it. I like to do high level as well as low level design in the doc.

Thirdly, set up automation like Donut to pair random people to have casual communications. This has turned out to be a lot of fun!

Fourthly, having gaming sessions can add much fun and are equivalent to office parties.

We also have bi-weekly teach-me-something (non-tech) sessions where some of my colleagues showed cooking and sketching.

Lastly, have a sync call at the end of the day to get on the same page and discuss solutions to important issues.

How do you work with business to identify and define problems suited for machine learning? How do you align ML projects with business objectives?

We have two business objectives - how to make models better and how to onboard our clients faster. We are a B2B company and have an elaborate onboarding process where we fetch data from different sources and run pipelines to create insights.

We regularly discuss ideas in our evening sync and keep documenting those of high potential. If any of them seems urgent, impactful and less risky, we discuss it out to the CTO and get his buy-in. We are an early company, we are setting up many things from scratch. Hence we prioritise 0-1 things over 1-2 things.

Machine learning systems can be several steps removed from users, relative to product and UI. How do you maintain empathy with your end-users?

We have a dedicated user interviews channel in slack where our CEO shares interviews with clients. We also have shared channels with clients through which we get the pulse of our users. We also collect activity logs which tell us where our users derive the most value.

All of our employees have access to the product made for all clients. We check it out every week to find bugs and improvements. We have no test engineer and are supposed to test things ourselves.

Imagine you're given a new, unfamiliar problem to solve with machine learning. How would you approach it?

I like to do quick research on the topic to find blogs and papers on the problem. I compare the techniques on 2 dimensions - ease and impact. I avoid methods which require a dataset. I am a big fan of unsupervised.

At times I post my doubts on Maxpool.

Designing, building, and operating ML systems is a big effort. Who do you collaborate with? How do you scale yourself?

Currently, all of our pipelines are on AWS Lambda. This fits our needs and does not require any scaling effort. However, we understand its limitations and plan to move some of our batch predictions to either Sagemaker or AWS Batch.

We interact with backend engineers to fix up the contract(request/response), expected behaviour and configuration but MLE does the full ML deployment. MLE are also expected to do system and load tests if needed.

Every time we deploy a new feature we post it out on slack #product channel and get it tested.

Previously I worked on a large team with backend, DevOps, testing engineer, manager, scrum master and PM. Over there the isolation of work was higher and my scope ended at writing the server code.

There are many ways to structure DS/ML teams—what have you seen work, or not work?

This is quite controversial and it depends on the stage of the company. For startups, I have seen people perform best when they act in a full-stack mindset. It allows data scientists to ship better systems faster. This can get quite intense as it requires a very high ramp-up speed. You have to take care of fixing bugs while working on new features and plan out the next steps.

While for large companies, getting experts for different verticals and embedding them in the product team works excellent. One side effect is that you can get bored after a while. Allowing people to change projects can give a fresh breath of air and rejuvenate curiosity. This happened to me once and it can be a win-win since you understand the company ecosystem and get to work on a new problem.

How does your organization or team enable rapid iteration on machine learning experiments and systems?

We have very stringent timelines which force us to think about simple ideas and make them work.

What processes, tools, or artifacts have you found helpful in the machine learning lifecycle? What would you introduce if you joined a new team?

I am quite surprised by the power of AWS Lambda! Couple it with event-driven architecture using AWS EventBridge and bamm. You can learn to deploy serverless ML using Lambda over here.

I love GitHub actions! It is simple to work with and can execute many common scenarios for CI/CD.

I enjoy wandb for experiment tracking and its slack integration. I strongly suggest DVC for all artefact versioning.

Hydra & pyyaml can help a lot in configuration management.

Grafana is quite helpful for monitoring and alerts.

How do you quantify the impact of your work? What was the greatest impact you made?

I think of my work in 3 dimensions

  • Ship more useful features
  • Setup processes and tools to make things easy for my team
  • Raise the bar of our software engineering

Once upon a time, I worked on a project to assist manual work of 1000+ people through classification models. I think that was the most impactful work I did for any company. I measure my impact in terms of quality * speed.

What’s a problem you encountered where machine learning seemed like the right solution, but turned out to be wrong? What was the eventual solution?

There had been a situation where somebody suggested ML for a table classification problem but we averted it by simple word match. In another situation I felt unsupervised had been good enough instead of the supervised approach.

Think of people who are able to apply ML effectively–what skills or traits do you think contributed to that?

A clear understanding of metric, ability to think of simple solutions and great software engineering skills.

I have written a long post on how to be an impactful data scientist without a PhD.

Do you have any lessons or advice about applying ML that's especially helpful? Anything that you didn't learn at school or via a book (i.e., only at work)?

I have laid down all of my ideas in my long post of becoming a full-stack data scientist.

How do you learn continuously? What are some resources or role models that you've learned from?

I actively try not to learn something for the sake of curiosity. I acquire skills which are means to an end. I keep a close eye on the problems at work and hunt for their solutions.

I don't shy away from spending on platforms like Udemy, Educative and Teachable to get quick guidance/solutions to my problems.

Sometimes I try out small projects like AskPratik, Fakenews bot, Vaccine tracker and COVID case tracker to explore new tools and get insights to apply at work.

I am a massive fan of Andrei Lopatenko as he shares recent trends in semantic search, which is an area of my interest. Goku Mohandas inspires me to up my presentation game. In writing, Eugene and Amit Chaudhary have put great efforts in consistent quality writing. I am quite sad about the long writing hiatus of Amit.

Some of my favorite open source heroes include - Nils Reimers, Jeremy Howard and Ben Awad.

Read more mentor interviews?


© Eugene Yan 2021AboutSuggest edits.