Implantar um modelo localmente
Saiba como usar o Aprendizado de Máquina do Azure para implantar um modelo como um serviço Web em sua instância de computação do Azure Machine Learning. Use instâncias de computação se uma das seguintes condições for verdadeira:
- Você precisa implantar e validar rapidamente seu modelo.
- Você está testando um modelo que está em desenvolvimento.
Gorjeta
A implantação de um modelo de um Jupyter Notebook em uma instância de computação para um serviço Web na mesma VM é uma implantação local. Neste caso, o computador 'local' é a instância de computação.
Nota
Os Pontos de Extremidade do Azure Machine Learning (v2) fornecem uma experiência de implantação aprimorada e mais simples. Os endpoints suportam cenários de inferência em tempo real e em lote. Os endpoints fornecem uma interface unificada para invocar e gerenciar implantações de modelo em todos os tipos de computação. Consulte O que são pontos de extremidade do Azure Machine Learning?.
Pré-requisitos
- Um espaço de trabalho do Azure Machine Learning com uma instância de computação em execução. Para obter mais informações, consulte Criar recursos para começar.
Implantar nas instâncias de computação
Um bloco de anotações de exemplo que demonstra implantações locais está incluído em sua instância de computação. Use as seguintes etapas para carregar o bloco de anotações e implantar o modelo como um serviço Web na VM:
No estúdio de Aprendizado de Máquina do Azure, selecione "Notebooks" e selecione how-to-use-azureml/deployment/deploy-to-local/register-model-deploy-local.ipynb em "Blocos de anotações de exemplo". Clone este bloco de anotações na sua pasta de usuário.
Encontre o bloco de anotações clonado na etapa 1, escolha ou crie uma Instância de Computação para executar o bloco de anotações.
O bloco de notas apresenta o URL e a porta em que o serviço está a ser executado. Por exemplo,
https://localhost:6789
. Você também pode executar a célula que contémprint('Local service port: {}'.format(local_service.port))
para exibir a porta.Para testar o serviço a partir de uma instância de computação, use a
https://localhost:<local_service.port>
URL. Para testar a partir de um cliente remoto, obtenha a URL pública do serviço em execução na instância de computação. O URL público pode ser determinado usando a seguinte fórmula;- VM do bloco de anotações:
https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.notebooks.azureml.net/score
. - Instância de computação:
https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.instances.azureml.net/score
.
Por exemplo,
- VM do bloco de anotações:
https://vm-name-6789.northcentralus.notebooks.azureml.net/score
- Instância de computação:
https://vm-name-6789.northcentralus.instances.azureml.net/score
- VM do bloco de anotações:
Testar o serviço
Para enviar dados de exemplo para o serviço em execução, use o código a seguir. Substitua o valor de service_url
pelo URL da etapa anterior:
Nota
Ao autenticar em uma implantação na instância de computação, a autenticação é feita usando o ID do Microsoft Entra. A chamada para interactive_auth.get_authentication_header()
no código de exemplo autentica você usando o Microsoft Entra ID e retorna um cabeçalho que pode ser usado para autenticar o serviço na instância de computação. Para obter mais informações, consulte Configurar a autenticação para recursos e fluxos de trabalho do Azure Machine Learning.
Ao autenticar em uma implantação no Serviço Kubernetes do Azure ou nas Instâncias de Contêiner do Azure, um método de autenticação diferente é usado. Para obter mais informações sobre, consulte Configurar a autenticação para modelos de máquina do Azure implantados como serviços Web.
import requests
import json
from azureml.core.authentication import InteractiveLoginAuthentication
# Get a token to authenticate to the compute instance from remote
interactive_auth = InteractiveLoginAuthentication()
auth_header = interactive_auth.get_authentication_header()
# Create and submit a request using the auth header
headers = auth_header
# Add content type header
headers.update({'Content-Type':'application/json'})
# Sample data to send to the service
test_sample = json.dumps({'data': [
[1,2,3,4,5,6,7,8,9,10],
[10,9,8,7,6,5,4,3,2,1]
]})
test_sample = bytes(test_sample,encoding = 'utf8')
# Replace with the URL for your compute instance, as determined from the previous section
service_url = "https://vm-name-6789.northcentralus.notebooks.azureml.net/score"
# for a compute instance, the url would be https://vm-name-6789.northcentralus.instances.azureml.net/score
resp = requests.post(service_url, test_sample, headers=headers)
print("prediction:", resp.text)
Próximos passos
- Como implantar um modelo usando uma imagem personalizada do Docker
- Solução de problemas de implantação
- Utilizar o TLS para proteger um serviço Web através do Azure Machine Learning
- Consumir um modelo de ML implantado como um serviço Web
- Monitore seus modelos do Azure Machine Learning com o Application Insights
- Recolher dados para modelos em produção