In today’s world, ML (machine learning) engineer and Data scientist are two popular job positions. These positions have a lot of overlap but there are also some key differences to be aware of. In this blog post, we will go over the details of ML engineers vs Data scientists so you can decide which one is right for you!
What does an ML engineer do?
An ML engineer primarily designs and develops machine learning systems. Before getting into the roles & responsibilities of an ML engineer, let’s understand what is a machine learning system.
A machine learning system can be defined as a system that comprises of one or more predictive models whose predictions are combined based on some rules to create or serve a prediction that drives decision-making for business stakeholders. The following would form the key aspect of designing and developing such a machine learning system:
- One or more models can be exposed as a service (or microservice) that can run as a server-less function or hosted on a server.
- Big data service can be used to extract the features from the raw data and write in a data storage. These features can later be used for making predictions in batch manner or in real-time
- Cloud machine learning services such as Amazon sagemaker studio can be used by data scientists for building the models.
- Cloud machine learning services can be used out-of-box for solving different machine learning-related problems. For example, Amazon comprehend, textract, forecast, transcribe, etc. Check out the list of services in this post – 20 amazon machine learning services
- Quality and performance standards of machine learning systems.
An ML engineer will be involved in all of the above activities. ML engineers will need to have in-depth knowledge on how the machine learning model is trained from data points available at hand and how it will make the prediction. ML engineers should also be aware of different machine learning algorithms such as linear regression, random forest etc. ML engineers would work with data scientists to help them build predictive models that can be exposed through a service or used in an application that communicates with this service. Additionally, ML engineers need to understand how these services are exposed through APIs and what are the best practices to follow while designing these services. ML engineers would also be responsible for building Big Data Services which can read data from various sources such as SaaS tools, CSV files etc.
Having said this, an ML engineer should have good knowledge of the python programming language since most of the machine learning services can be exposed using REST APIs, and ML engineers will need to write the code which talks with these services.
The following represents some of the responsibilities of ML engineers:
- Designing & developing one or more microservices for exposing machine learning models as a REST endpoint. It is important for ML engineers to consider cloud-native container-based design patterns when designing such microservices. This may require a good knowledge of Docker, Kubernetes, and cloud-based container services.
- Designing and developing big data services for extracting features from raw data. ML engineers will have to perform feature engineering tasks such as creating new features which are necessary input into machine learning models. ML engineers need to have a good understanding of cloud-based big data tools such as Spark, PySpark, Hadoop, etc. for this purpose.
- Data ingestion & streaming: ML engineer would be responsible for ingesting data and make it available as a streaming service (Kafka, PubSub), databases (MySQL, Redis etc).
- Data preparation: ML engineer is responsible for ETL jobs to prepare the training dataset that can then be fed into predictive models. In addition to this, they also have the responsibility of migrating existing ML models into their machine learning system.
- Discovering, designing, and developing ML solutions by leveraging cloud-based ML services such as Amazon ML, Azure ML, Google ML, etc. ML engineers will need to have a good understanding of ML services as well as the ML algorithms they offer. For example, ML engineers should have a good understanding of ML algorithms such as recommendation, image classification, etc.
- Ensuring quality and performance standards are met for ML systems developed using the above activities. This is very important since these ML systems will form part of critical decision-making applications running in production environments across many business units within an organization.
In summary, ML engineers design and develop machine learning systems that are exposed as a service or microservice for making predictions to other applications in a real-time or batch manner. They also need to have a good understanding of big data technologies such as Python & Spark for building the feature extraction pipeline along with cloud-based ML services. ML engineers need to have a good understanding of ML services offered by different cloud providers.
Some interview questions for ML Engineers
The following are some sample interview questions for ML Engineers to give you an idea on roles & responsibilities of ML engineers:
- What are the main responsibilities of an ML Engineer?
- What is feature engineering in a machine learning context? What tools do you prefer for doing this job?
- How does an ML algorithm work behind the scene to make predictions, what are its working steps?
- Why should an organization hire ML engineers rather than ML scientists?
- What are the ML algorithms that you know and their applications in the context of deep learning & cloud-based ML services?
- How do ML engineers communicate with data scientists?
- What are ML engineers responsible for when developing ML models using ML services offered by cloud providers?
- How should one design REST APIs so that they can be consumed by ML models?
- What are some of the cloud-based ML services that you know and their applications in the context of ML engineers role at an organization?
- Which languages or tools do you prefer for developing big data pipelines with feature engineering tasks (for example, using Spark & PySpark)?
What does a data scientist do?
Data scientists’ core responsibilities include building ML models using the data provided by different business units within an organization. Data scientists will be responsible for collecting and cleaning this raw data. They then need to prepare ML features from these datasets which can then be used as input into machine learning algorithms such as linear regression, [logistic regression, random forest, etc. Before making any prediction, they also run a series of statistical tests and also apply ML algorithms to validate their ML models.
Here are some of the core job responsibilities of a data scientist:
- Exploratory data analysis: In exploratory data analysis, data scientists perform activities such as collecting & cleaning raw datasets, summarizing data, visualizing ML features, and finding insights hidden in the dataset.
- Feature engineering including feature extraction, feature selection: In feature engineering, the responsibilities include ML feature extraction and ML feature selection. ML features are basically the data that will be used as input into ML algorithms. Data scientists work with business analysts or product managers to identify ML features that are needed for ML models.
- Training & testing models: Data scientists need to have a good understanding of machine learning concepts such as ML algorithm, loss functions etc.. This knowledge is used to train and test the models with appropriate machine learning algorithms.
- Models and algorithms selection: Finally, data scientists are also required to make ML models selection by making use of model selection and algorithm selection techniques.
Data scientists need to be strong in concepts related to Mathematics, ML algorithms, ML models, and data science processes. They would also need to be good with programming languages such as Python, R, or Scala.
Once the data scientists are satisfied with their ML model, they need to deploy it as a service or microservice which can then be used by other business units within an organization for either making real-time predictions or batch predictions, etc. This is where data scientists need to work with ML engineers.
What’s the difference between Data Scientist and ML Engineer?
While data scientists are involved in building machine learning models based on techniques such as exploratory data analysis, feature engineering, models selection etc, ML engineers are involved in ML system design and development as described in the previous section. In fact, data scientists can also be involved in some of the activities carried out by ML Engineers such as designing end-to-end ML systems, training & testing ML models, etc., but they will need to have a good understanding of data science and machine learning techniques for building models. ML Engineers will need to have a good understanding of ML services offered by different cloud providers such as AWS, Azure, Google ML, etc, and also know how to use them for designing, building, and deploying ML systems.
ML engineer vs Data scientist – What to become?
If you are a software engineer and want to get into the field of data science/machine learning while not drifting away completely from software engineering activities, an ML engineer career is the way to go for you.
However, if you completely want to make a shift from software engineering to data science/machine learning, a Data scientist career is the right path for you.
Both fields are very lucrative from a career perspective and both professionals can expect a handsome pay package. Also, ML engineers will be required for companies that are making heavy investments into ML systems and AI-related technologies such as chatbots, etc.. At the same time, data scientist jobs would be needed for building AI/machine learning models.
ML engineers and data scientists both have a lot of potential for growth in the ML field. Data scientist jobs are on the rise as more companies invest heavily into AI/ML systems, while ML Engineer jobs will be needed to design ML models according to specific needs. If you’re interested in either career path, it’s worth considering what your strengths may lie so that you can make an informed decision about which role is best suited for you! Please feel free to drop a message for a conversation.