Dela via


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

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:

  1. 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.

  2. Leta reda på notebook-filen som klonas i steg 1, välj eller skapa en Beräkningsinstans för att köra notebook-filen.

    Screenshot of the running local service on notebook

  3. Notebook-filen visar URL:en och porten som tjänsten körs på. Till exempel https://localhost:6789. Du kan också köra cellen som innehåller print('Local service port: {}'.format(local_service.port)) för att visa porten.

    Screenshot of the running local service port

  4. 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.

    De prestandaobjekt

    • Virtuell notebook-dator: https://vm-name-6789.northcentralus.notebooks.azureml.net/score
    • Beräkningsinstans: https://vm-name-6789.northcentralus.instances.azureml.net/score

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