Distribuera en modell lokalt
Lär dig hur du använder Azure Machine Learning för att distribuera en modell som en webbtjänst på din Azure Machine Learning-beräkningsinstans. Använd beräkningsinstanser om något av följande villkor är sant:
- Du måste snabbt distribuera och verifiera din modell.
- Du testar en modell som är under utveckling.
Dricks
Att distribuera en modell från en Jupyter Notebook på en beräkningsinstans till en webbtjänst på samma virtuella dator är en lokal distribution. I det här fallet är den "lokala" datorn beräkningsinstansen.
Kommentar
Azure Machine Learning-slutpunkter (v2) ger en förbättrad och enklare distributionsupplevelse. Slutpunkter stöder scenarier för både realtids- och batchinferens. Slutpunkter ger ett enhetligt gränssnitt för att anropa och hantera modelldistributioner mellan beräkningstyper. Se Vad är Azure Machine Learning-slutpunkter?.
Förutsättningar
- En Azure Machine Learning-arbetsyta med en beräkningsinstans som körs. Mer information finns i Skapa resurser för att komma igång.
Distribuera till beräkningsinstanserna
En exempelanteckningsbok som visar lokala distributioner ingår i beräkningsinstansen. Använd följande steg för att läsa in anteckningsboken och distribuera modellen som en webbtjänst på den virtuella datorn:
Från Azure Machine Learning-studio väljer du "Notebooks" och sedan how-to-use-azureml/deployment/deploy-to-local/register-model-deploy-local.ipynb under "Sample notebooks". Klona anteckningsboken till din användarmapp.
Leta reda på notebook-filen som klonas i steg 1, välj eller skapa en Beräkningsinstans för att köra notebook-filen.
Notebook-filen visar URL:en och porten som tjänsten körs på. Exempel:
https://localhost:6789
Du kan också köra cellen som innehållerprint('Local service port: {}'.format(local_service.port))
för att visa porten.Om du vill testa tjänsten från en beräkningsinstans använder du
https://localhost:<local_service.port>
URL:en. Om du vill testa från en fjärrklient hämtar du den offentliga URL:en för tjänsten som körs på beräkningsinstansen. Den offentliga URL:en kan fastställas med hjälp av följande formel.- Notebook VM:
https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.notebooks.azureml.net/score
. - Beräkningsinstans:
https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.instances.azureml.net/score
.
Ett exempel:
- Virtuell notebook-dator:
https://vm-name-6789.northcentralus.notebooks.azureml.net/score
- Beräkningsinstans:
https://vm-name-6789.northcentralus.instances.azureml.net/score
- Notebook VM:
Testa tjänsten
Om du vill skicka exempeldata till den tjänst som körs använder du följande kod. Ersätt värdet service_url
för med URL:en från föregående steg:
Kommentar
När du autentiserar till en distribution på beräkningsinstansen görs autentiseringen med Hjälp av Microsoft Entra-ID. Anropet till interactive_auth.get_authentication_header()
i exempelkoden autentiserar dig med hjälp av Microsoft Entra-ID och returnerar ett huvud som sedan kan användas för att autentisera till tjänsten på beräkningsinstansen. Mer information finns i Konfigurera autentisering för Azure Machine Learning-resurser och arbetsflöden.
När du autentiserar till en distribution på Azure Kubernetes Service eller Azure Container Instances används en annan autentiseringsmetod. Mer information finns i Konfigurera autentisering för Azure Machine-modeller som distribueras som webbtjänster.
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)
Nästa steg
- Distribuera en modell med en anpassad Docker-avbildning
- Felsökning av distribution
- Använda TLS för att skydda en webbtjänst via Azure Machine Learning
- Använda en ML-modell som distribuerats som en webbtjänst
- Övervaka dina Azure Machine Learning-modeller med Application Insights
- Samla in data för modeller i produktion