Azure, the renowned cloud service platform, provides us with various products and services that let data scientists efficiently perform their tasks. One of its splendid offering is the Azure machine learning pipeline, which is a popularly used resource to build, train, package, deploy and manage reusable machine learning workflows.
An essential part of implementing a data science solution on Azure is to deploy your trained model to an online endpoint. This facilitates real-time inferencing, which can be accessed over a REST API. This is crucial as it allows applications to use your model instantly to infer from new data.
In relation to Exam DP-100: Designing and Implementing a Data Science Solution on Azure, deploying a model to an online endpoint can be achieved following several steps.
Deploy a Model to an Azure Container Instance (ACI)
Azure Container Instance (ACI) facilitates a fast and simplified way of deploying models as a web service. However, it’s better suited for development and testing. For scalable production deployments, consider Azure Kubernetes Service (AKS).
To deploy your model to ACI, take the following steps:
- Register the Model: In the workspace where the model was developed, register the model.
model = Model.register(workspace=ws, model_name='my_model', model_path='my_model.pkl') - Define the Inference Configuration: Here, the scoring script and the environment that the model uses are defined.
inference_config = InferenceConfig(entry_script="scoring.py", environment=myenv) - Set up the Deployment Configuration: Specify the compute resources the service needs.
aci_config = AciWebservice.deploy_configuration(cpu_cores=1, memory_gb=1) - Deploy the Model to ACI: Deploy the model by providing the model, inference configuration, and the deployment configuration to the deployment method. Wait until the deployment state turns ‘Healthy.’
service = Model.deploy(ws, "myservice", [model], inference_config, aci_config)
service.wait_for_deployment(True)
Deploy a Model to an Azure Kubernetes Service (AKS)
Azure Kubernetes Service (AKS) facilitates the scalable production deployment of models.
- Create an AKS Cluster: If there’s no AKS cluster connected, create one.
from azureml.core.compute import AksCompute, ComputeTarget
prov_config = AksCompute.provisioning_configuration()
aks_name = 'myaks'
aks_target = ComputeTarget.create(workspace=ws, name=aks_name, provisioning_configuration=prov_config) - Define the Inference Configuration: Similar to the process for ACI.
- Set up the Deployment Configuration: This considers additional factors like whether to enable SSL or autoscaling.
aks_config = AksWebservice.deploy_configuration(autoscale_enabled=True, cpu_cores=1, memory_gb=1) - Deploy the Model: Similar to the process for ACI.
aks_service = Model.deploy(ws, 'myservice', [model], inference_config, aks_config, aks_target)
aks_service.wait_for_deployment(True)
The deployment process is a vital part of Exam DP-100. After deploying, the endpoint can be tested, monitored, troubleshooted if needed and can be consumed in applications. Not only do you get the convenience of deploying AI models at scale, but also manage, track, and update these models using Azure’s robust ML Ops capabilities. Studying this thoroughly and understanding how to deploy machine learning models using Azure services is indispensable for exam-preparation and indubitably a worthy addition to your data science toolkit.
Practice Test
True/False: An online endpoint is a private server where your model is hosted.
- False
Answer: False
Explanation: An online endpoint is an Azure resource that enables client applications to send data to a deployed model for real-time inferencing.
Which of the following are ways to deploy a model in Azure?
- A. Using Azure Machine Learning Workspace
- B. Using Azure Functions
- C. Using Azure Container Instances
- D. Using Azure Visual Studio
Answer: A, B, C
Explanation: Azure Machine Learning Workspace, Azure Functions, and Azure Container Instances are the methods provided by Azure to deploy a model. Visual Studio is a development environment and is not used for model deployment.
True/False: Azure Kubernetes Service (AKS) can be used to deploy models for high-scale, production deployments.
- True
Answer: True
Explanation: Azure Kubernetes Service (AKS) is a hosting service in Azure that simplifies the deployment, management and scaling of containerized applications and is often used for high-volume workloads.
What would be the final step in deploying a model to an online endpoint?
- A. Training the model
- B. Deploy the web service
- C. Registering the model
- D. Updating the model
Answer: B. Deploy the web service
Explanation: After the model is registered, you can use the registered model to deploy a web service in Azure.
True/False: Azure Container Instance (ACI) is a service that allows the deployment of models for high-scale, production deployments.
- False
Answer: False
Explanation: Azure Container Instances (ACI) is more suitable for testing and development. Azure Kubernetes Service (AKS) is used for high-scale, production deployments.
Which kind of compute resource you can’t use to host a web service that uses your model?
- A. Azure Kubernetes Service (AKS)
- B. Azure Container Instances (ACI)
- C. Azure Databricks
- D. Local web service
Answer: C. Azure Databricks
Explanation: You can host a web service using Azure Kubernetes Service (AKS), Azure Container Instances (ACI), or even as a local web service. But not on Azure Databricks.
True/False: You can not use a RESTful API to send data to the model for inferencing.
- False
Answer: False
Explanation: Once the model is deployed as a web service, you can use a RESTful API to send data to the model for inferencing.
True/False: The Azure portal can be used to create an endpoint from a model deployment.
- True
Answer: True
Explanation: Models deployed in Azure Machine Learning can be consumed through endpoints, which can be created through the Azure portal.
Which Azure service is not typically utilized during model deployment?
- A. Azure Machine Learning
- B. Azure Stream Analytics
- C. Azure Container Instances
- D. Azure Kubernetes Service
Answer: B. Azure Stream Analytics
Explanation: While Azure Stream Analytics is a powerful service for real-time data streaming, it is not typically utilized during the process of deploying a model.
True/False: When an Azure Machine Learning model is deployed, it can be accessed by any device with an internet connection.
- True
Answer: True
Explanation: When you deploy an Azure Machine Learning model as a web service, it creates a RESTful API, which can be accessed from any device with an internet connection.
Interview Questions
What is the purpose of deploying a model to an online endpoint in Azure?
Deploying a model to an online endpoint is for real-time inference. Real-time inference is useful for scenarios where you load a model and generate predictions in response to incoming data.
Which Azure service can be used to deploy a model for real-time scoring?
Azure Machine Learning Service can be used to deploy a model for real-time scoring.
What is a deployment configuration in Azure Machine Learning?
A deployment configuration in Azure Machine Learning is an object that specifies the number of compute resources for your deployment such as the compute type, the number of cores, and the amount of memory.
Can you adjust or scale the number of nodes in a deployed Azure Machine Learning model after deployment?
Yes, you can adjust the number of nodes in an Azure Machine Learning model deployment based on the workload.
What is inferencing in the context of Azure Machine Learning Services?
Inferencing is the process of using a trained machine learning model to make predictions.
What is an ACI in Azure Machine Learning?
ACI stands for Azure Container Instances, and it provides a method to run a container without the overhead of a full Kubernetes cluster in Azure.
How can a client application consume an Azure Machine Learning model deployed in ACI?
A client application consumes an Azure Machine Learning model deployed in ACI via RESTful principles over HTTP.
What is the purpose of a scoring script in Azure Machine Learning?
The scoring script in Azure Machine Learning receives data, conducts predictions with the model, and returns the results.
What are the primary components necessary for deploying a machine learning model in Azure?
The primary components required for deploying a machine learning model in Azure include a trained model, scoring script, environment description, and deployment configuration.
What format should a model be registered in, to be deployed with Azure Machine Learning Service?
A model, once serialized as per specific requirements, can be registered in any format in Azure Machine Learning Service.
What is the script runconfig object in Azure ML?
The script runconfig object specifies the configuration details of your training job, including your training script, environment to use, and the compute target to run on.
Can you point out some general types of compute targets available for deploying models in Azure Machine Learning?
There are several types of compute targets in Azure Machine Learning such as local compute, Azure Machine Learning Compute, Azure Databricks, AKS, ACI, etc.
Can you deploy a model to Azure Container Instances (ACI) and Azure Kubernetes Service (AKS) using the same configuration file?
No, each service requires a different deployment configuration.
Do you need to enable SSL to access Azure Machine Learning models deployed in AKS?
Yes, enabling SSL is a requirement to access Azure Machine Learning models deployed in AKS.
How can you control access to your deployed model in Azure Machine Learning Service?
You can control access to your deployed model in Azure Machine Learning Service by enabling authentication and then only authenticated users with corresponding access rights can consume the deployed model service.