# MLOps is a team effort

### <mark style="color:blue;">Turning a model from a prototype to an integrated part of the business requires a cross-functional team working closely together.</mark> <mark style="color:blue;"></mark><mark style="color:blue;">**You will need:**</mark>

* Platform/Machine Learning engineer(s) to provide the environment to host the model.&#x20;
* Data engineers to create the production data pipelines to retrain the model.&#x20;
* Data scientists to create and amend the model.&#x20;
* Software engineers to integrate the model into business systems (e.g. a webpage calling a model hosted as a microservice)

{% embed url="https://youtu.be/PPfmC0ot704" %}

MLOps is easier if everyone has an idea of the concerns of the others. Data Scientists are typically strong at mathematics and statistics, and may not have strong software development skills. They are focused on algorithm performance and accuracy metrics. The various engineering disciplines are more concerned about testing, configuration control, logging, modularisation and paths to production (to name a few).

![](https://1196515524-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmkSyTb0xzzHuIbvQF0L4%2Fuploads%2F6wx6jDTvTbKqfc3NUreX%2Fteam%404x.png?alt=media\&token=3c72649f-42b0-48d1-bb06-2b98211c3c16)

It is helpful if the engineers can provide clear ways of working to the data scientist early in the project. It will make it easier for the data scientists to deliver their models to them. How do they want the model/algorithm code delivered (probably not as a notebook)? What coding standards should they adhere to? How do you want them to log? What tests do you expect? Create a simple document and spend a session taking them through the development process that you have chosen. Engineers should recognise that the most pressing concern for data scientists is prototyping, experimentation and algorithm performance evaluation.

<mark style="color:blue;">**When the team forms, recognise that it is one team and organise yourself accordingly. Backlogs and stand-ups should be owned by and include the whole team.**</mark>

## <mark style="color:blue;">Experience report</mark>

{% hint style="info" %}
I started as a data scientist but quickly realised that if I wanted my work to be used I would need to take more interest in how models are deployed and used in production, which has led me to move into data engineering and ML Operations, and now this has become my passion! There are many things that I have learned during this transition.

In general, models are developed by data scientists. They have the maths and stats skills to understand the data and figure out which algorithms to use, whilst the data engineers deploy the models. New features can get added by either of these groups.

In my experience, data scientists usually need to improve their software development practices. They need to become familiar with the separation of environments (e.g. development, staging, production) and how code is promoted between these environments. I’m not saying they should become devops experts, but algorithms are software and if the code is bad or if it can’t be understood then it can’t be deployed or improved. Try to get your code out of the notebook early, and don’t wait for perfection before thinking about deployment. The more you delay moving into production, the more you end up with a bunch of notebooks that you don’t understand. Right now I’m working with a great data scientist and she follows the best practice of developing the code in Jupyter Notebooks, and then extracts the key functionality into libraries which can be easily deployed.

For data engineers - find time to pair with data scientists and share best dev practices with them. Recognise that data science code is weird in many respects - lots of stuff is done with Data Frames or similar structures, and will look strange compared to traditional application programming. It will probably be an easier experience working with the data scientists if you understand that they will be familiar with the latest libraries and papers in Machine Learning, but not with the latest software dev practices. They should look to you to provide guidance on this - try to provide it in a way that recognises their expertise!\
\
[<mark style="color:blue;">**Matteo Guzzo**</mark>](https://www.linkedin.com/in/matteoguzzo/)\ <mark style="color:blue;">**Data specialist**</mark>

<mark style="color:blue;">Equal Experts, EU</mark>

\
![](https://1196515524-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmkSyTb0xzzHuIbvQF0L4%2Fuploads%2FpxiacTvu6OgrimFwNOLm%2Fmatteo-round.png?alt=media\&token=47c66c36-a3c2-4e17-988b-adaa0de67767)
{% endhint %}

## <mark style="color:blue;">**Experience Report**</mark>

{% hint style="info" %}
As the lead data scientist in a recent project, my role was to create an algorithm to estimate prices for used vehicles. There was an intense initial period where I had to understand the raw data, prototype the data pipelines and then create and evaluate different algorithms for pricing. It was a really intense time and my focus was very much on data cleaning, exploration and maths for the models.

We worked as a cross-functional team with a data engineer, UX designer and two user interface developers. Wehad shared stand-ups; and the data engineering, machine learning and user experience were worked on in parallel. I worked closely with our data engineer to develop the best way to deploy the ETL and model training scripts as data pipelines and APIs. He also created a great CI/CD environment and set up the formal ways of working in this environment, including how code changes in git should be handled and other coding practices to adopt. He paired with me on some of the initial deployments so I got up to speed quickly in creating production-ready code. As a data scientist I know there are 100 different ways someone can set up the build process - and I honestly don’t have any opinion on which is the right way. I care about the performance of my model! I really appreciated working together on it - that initial pairing meant that we were able to bring all our work together very quickly and has supported the iteration of the tool since then.\
\
[<mark style="color:blue;">**Adam Fletcher**</mark>](https://www.linkedin.com/in/adamfletcheruk/)\ <mark style="color:blue;">**Data scientist**</mark>

<mark style="color:blue;">Equal Experts, UK</mark>\
\
![](https://1196515524-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmkSyTb0xzzHuIbvQF0L4%2Fuploads%2F68ngz7D8eNEZVlpPFpAO%2Fadam-round.png?alt=media\&token=407e1760-4aa2-48f1-af65-d98504077b18)
{% endhint %}

