Azure Machine Learning Service

Azure Machine Learning Service (AMLS) is the cloud service released by Microsoft in 2018 to replace the previous offering which was called Azure Machine Learning Workbench. Azure Machine Learning Workbench never made it out of preview and seems to have not gained much traction in its short life. In contrast AMLS is already in GA and seems targeted on meeting the real needs of the data scientist, not by providing huge support in model development but by providing support for model management and deployment, which is for many the more difficult part of providing value. Azure Machine Learning Service and Workbench shouldn’t be confused with Azure Machine Learning Studio which is the latest incarnation of the original Microsoft GUI ML standalone offering and which remains available as a separate product.

AMLS provides an environment to help you develop, train, test, deploy, manage and track machine learning models, and the most outstanding feature here is the ease of deployment of models whether that be for batch or interactive scoring.This is a major leap forward and unlike Workbench, AMLS is already in GA which gives some reassurance in terms of Microsofts’ commitment to the product going forward.

Gone is the data preparation GUI which formed part of Workbench but actually in my experience the limitations that product had means most people ended up writing their data preparation in Python anyway. In has come integrated deployment via Docker containers but so cleverly this been integrated that this should not frighten anyone who doesn’t have experience in this area, its done all for you.

This image shows the path:-

 

As you can see, the path starts with a trained model. This can be trained on your local machine, a Data Science VM running in Azure or using an AMLS service.

 

In the Portal

When you create an Azure Machine Learning Service in the Azure portal it will create something which looks like the area below. This area is (and there is plenty of room to cause confusion here) called a Machine Learning Service Workspace.

It contains a number of Tabs,  as can be seen below

 

Portal1

 

Calling out the main ones

Experiment – contains a log of all experiment runs performed using the AMLS service as shown below: It includes the number of runs and how they have performed, and you can click through on the Run Number to see logs associated with that run

Portal2

 

Compute – Is where the cluster details you want to use to run the models are allocated

Models – Contains versions of the models which have been created or uploaded into the service

Images – Contains details of the Docker containers which are contained in the service

Deployments – Contains the live deployments which are being used to service requests either via API or batch request.

Activities – Contains a log of activities which have been performed on the service

 

Getting Started

Getting started is a bit daunting, where do you start? Well luckily Microsoft have provided a few example workbooks which make it easy to get up and running and to rapidly understand and appreciate this service. You can work through them fairly easily and I would recommend these as a good path to understand how to work with AMLS

The first is available here:-

https://github.com/Azure/MachineLearningNotebooks/blob/master/tutorials/img-classification-part1-training.ipynb

This covers the

1) Setup of the local Python environment,

2) Connection to the workspace in AMLS

3) Creation of an Experiment

4) Attaching to the compute in the service to enable model training in the cloud

5) Uploading training data to Azure

6) Training a model locally and in the cloud (submitting and monitoring a run)

7) Registering a model (creating a pickled model in the Registry)

 

The second workbook is available here:-

https://github.com/Azure/MachineLearningNotebooks/blob/master/tutorials/img-classification-part2-deploy.ipynb

This explains how to:-

1) Create the Docker container

2) Deploy and test the model as a webservice

Once you have run through an example the purpose and ease of use of the Service means its a simple task to take a different model and use the service for your own purpose

Some Thoughts

  • The first step to develop locally is to install the azureml SDK in Python. I use Anaconda by preference and use it pretty regularly so my libraries are usually quite up to date with latest versions. When I went to install the azureml SDK I discovered that I already had some newer incompatible versions of some python libraries installed. I attempted to uninstall the later versions only to find the uninstallers not working. To overcome this I created a new Anaconda environment an installed from scratch and then the process went very smoothly, Probably a better idea to start with a new environment anyway.
  • This is Python only, sorry, I don’t know if there is a roadmap for other languages but that seems to be the way at the moment.
  • The uploading of code to Azure is a bit clunky in places. It basically involves writing python code to local storage then uploading this to AMLS. While the workbooks described above detail how to do this and its all achieved using Python commands the issue is that the code being uploaded cant easily be tested locally before being uploaded and the upload can take a while so its not the slickest process. That said it doesn’t put me off using it, but its just something I will have to get used to working with

 

I hope you enjoyed this. Let me know if you have any questions