MLOps [12] - What is Azure Machine Learning?
This video and post are part of a One Dev Question series on MLOps - DevOps for Machine Learning. See the full video playlist here, and the rest of the blog posts here.
Azure Machine Learning is one of the many offerings in the Azure ecosystem, specifically aimed at teams working on machine learning projects. It contains everything you need to create, manage, and deploy your predictive models.
In short, Azure Machine Learning is an enterprise-grade cloud-based machine learning service that helps you build, train, manage, track, and deploy models more reliably and faster. Ultimately, it's a DevOps tool specifically for machine learning projects.
From an MLOps perspective, it covers the vast majority of the things you care about - especially those aspects that are different to traditional software projects. Handling data, long-running experiments and training runs, tracking metrics during training, and using powerful and scalable compute are just some examples.
One of the most important features of Azure Machine Learning is the concept of Azure ML Pipelines. As you can probably guess, Azure ML Pipelines are a parallel to traditional continuous integration pipelines in that they define what has to happen to move from code to a potentially deployable model. The big difference is they're specifically designed to be good at ML workflows rather than software builds - in other words, they should focus on machine learning tasks like data preparation and processing, training and validating, saving and registering the resulting models.
Azure ML Pipelines can also be used for deployment, however there are advantages to orchestrating deployments outside Azure Machine Learning, while still using the deployment capabilities in the product itself. For example, Azure DevOps could be used to manage rollout using proven techniques commonly used in good DevOps practices. Blue-green deployments, gradual rollouts, or canary deployments could be used to more safely roll a change out to users. The actual deployment step could simply be a call to Azure Machine Learning using the CLI to make use of the powerful deployment capabilities of the service.
Recently, Azure Machine Learning announced a public preview of native support for MLflow, meaning (amongst other things) that you can take your existing on-prem workloads and MLOps processes and move them to the cloud. MLFlow is an open source platform for managing the lifecycle of an ML project, which nicely decouples the specification from the implementation.
Importantly, this means that just as we recommend defining CI/CD pipelines in code (using YAML), we can now define our ML pipelines in code the same way!
Pipelines are a huge part of what makes Azure Machine Learning a fantastic tool for MLOps, but there are some other really powerful features it has for data scientists and ML engineers as well.
A large number of the features in Azure Machine Learning are focused around the artifacts you use and produce. Capabilities like managing data, tracking experiments, versioning and managing models, and deploying operationalized models in various forms including containers on Azure Container Instances or Azure Kubernetes Service.
There are also features that help you manage some of the benefits of the cloud, in particular scalable compute for training runs so you only pay for all those souped-up machines and GPUs when you actually need them. There are even specific capabilities around distributed training and data parallelism to really speed things up.
Finally, there are fantastic cloud-based tools specifically for machine learning engineers in the Azure Machine Learning Studio. Hosted Jupyter Notebooks, data labeling capabilities, the Azure Machine Learning Designer (drag and drop pipelines!), and even Automated Machine Learning capabilities so you don't have to do all the busywork of comparing algorithms and tuning hyperparameters.
There's a lot, and so much of it is mind-blowing.
As a bonus, Azure Machine Learning comes with a number of features focused on ethics and responsible machine learning, which is becoming more and more important as our models become better and easier to create.
If you want to get started with Azure Machine Learning, I highly recommend the "Build AI solutions with Azure Machine Learning" learning path on Microsoft Learn. It's an awesome in-depth resource.