Lokales Bereitstellen eines Modells

Erfahren Sie, wie Sie mit Azure Machine Learning ein Modell als Webdienst auf Ihrer Azure Machine Learning-Compute-Instanz bereitstellen können. Verwenden Sie Compute-Instanzen, wenn eine der folgenden Bedingungen zutrifft:

  • Sie müssen Ihr Modell schnell bereitstellen und überprüfen.
  • Sie testen ein Modell in der Entwicklungsphase.

Tipp

Bei der Bereitstellung eines Modells aus einer Jupyter Notebook-Instanz auf einer Compute-Instanz in einem Webdienst auf der gleichen VM handelt es sich um eine lokale Bereitstellung. In diesem Fall ist der „lokale“ Computer die Compute-Instanz.

Hinweis

Azure Machine Learning-Endpunkte (v2) bieten eine verbesserte, einfachere Bereitstellungserfahrung. Endpunkte unterstützen Szenarien mit Echtzeit- und Batchrückschluss. Endpunkte verfügen über eine einheitliche Schnittstelle zum übergreifenden Aufrufen und Verwalten von Modellbereitstellungen für alle Computetypen. Siehe Was sind Azure Machine Learning-Endpunkte?.

Voraussetzungen

Bereitstellung auf Compute-Instanzen

Ein Beispielnotebook mit einer Veranschaulichung lokaler Bereitstellungen ist auf Ihrer Compute-Instanz enthalten. Führen Sie die folgenden Schritte aus, um das Notebook zu laden und das Modell als Webdienst auf dem virtuellen Computer bereitzustellen:

  1. Wählen Sie in Azure Machine Learning Studio die Option „Notebooks“ und dann unter „Beispiel-Notebooks“ die Datei „how-to-use-azureml/deployment/deploy-to-local/register-model-deploy-local.ipynb“ aus. Klonen Sie dieses Notebook in Ihren Benutzerordner.

  2. Suchen Sie das in Schritt 1 geklonte Notebook, wählen oder erstellen Sie eine Compute-Instanz, um das Notebook auszuführen.

    Screenshot of the running local service on notebook

  3. Im Notebook werden die URL und der Port für den ausgeführten Dienst angezeigt. Beispiel: https://localhost:6789. Sie können zum Anzeigen des Ports auch die Zelle ausführen, die print('Local service port: {}'.format(local_service.port)) enthält.

    Screenshot of the running local service port

  4. Verwenden Sie die URL https://localhost:<local_service.port>, um den Dienst auf der Compute-Instanz zu testen. Rufen Sie zum Testen über einen Remoteclient die öffentliche URL des auf der Compute-Instanz ausgeführten Diensts ab. Die öffentliche URL kann mit der folgenden Formel bestimmt werden:

    • Notebook-VM: https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.notebooks.azureml.net/score.
    • Compute-Instanz: https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.instances.azureml.net/score.

    Beispiel:

    • Notebook-VM: https://vm-name-6789.northcentralus.notebooks.azureml.net/score
    • Compute-Instanz: https://vm-name-6789.northcentralus.instances.azureml.net/score

Testen des Diensts

Verwenden Sie den folgenden Code, um Beispieldaten an den ausgeführten Dienst zu übermitteln. Ersetzen Sie den Wert service_url durch die URL aus dem vorherigen Schritt:

Hinweis

Bei der Authentifizierung für eine Bereitstellung auf der Computeinstanz erfolgt die Authentifizierung über Microsoft Entra ID. Der Aufruf von interactive_auth.get_authentication_header() im Beispielcode authentifiziert Sie mithilfe von Microsoft Entra ID und gibt einen Header zurück, der dann zur Authentifizierung gegenüber dem Dienst auf der Computeinstanz verwendet werden kann. Weitere Informationen finden Sie unter Einrichten der Authentifizierung für Azure Machine Learning-Ressourcen und -Workflows.

Bei der Authentifizierung für eine Bereitstellung in Azure Kubernetes Service oder Azure Container Instances wird eine andere Authentifizierungsmethode verwendet. Weitere Informationen finden Sie unter Konfigurieren der Authentifizierung für Azure Machine Learning-Modelle, die als Webdienst bereitgestellt werden.

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ächste Schritte