Dela via


Distribuera en modell lokalt

Viktigt!

Den här artikeln innehåller information om hur du använder Azure Machine Learning SDK v1. SDK v1 är inaktuell från och med den 31 mars 2025. Stödet för det upphör den 30 juni 2026. Du kan installera och använda SDK v1 fram till det datumet. Dina befintliga arbetsflöden med SDK v1 fortsätter att fungera efter supportdatumet. De kan dock utsättas för säkerhetsrisker eller förändringar som bryter kompatibiliteten vid arkitektoniska förändringar i produkten.

Vi rekommenderar att du övergår till SDK v2 före den 30 juni 2026. Mer information om SDK v2 finns i Vad är Azure Machine Learning CLI och Python SDK v2? och SDK v2-referensen.

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.

    Skärmbild av den lokala tjänst som körs i notebook-filen

  3. 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åller print('Local service port: {}'.format(local_service.port)) för att visa porten.

    Skärmbild av den lokala tjänstport som körs

  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.

    • Bärbar dator 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

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