Bereitstellen eines Modells in Azure Container Instances mit der CLI (v1)

Wichtig

In diesem Artikel wird gezeigt, wie Sie die CLI und das SDK v1 verwenden, um ein Modell bereitzustellen. Informationen zum empfohlenen Ansatz für v2 finden Sie unter Bereitstellen und Bewertung eines Machine Learning-Modells mithilfe eines Onlineendpunkts.

Erfahren Sie, wie Sie ein Modell mit Azure Machine Learning als Webdienst in Azure Container Instances (ACI) bereitstellen. Verwenden Sie Azure Container Instances, wenn Folgendes zutrifft:

  • Sie möchten keinen eigenen Kubernetes-Cluster verwalten.
  • Sie benötigen nur ein Replikat Ihres Diensts (kann sich auf die Uptime auswirken).

Informationen zu den für ACI geltenden Kontingenten und zur Verfügbarkeit in den Regionen finden Sie im Artikel Kontingente und Limits für Azure Container Instances.

Wichtig

Es wird dringend empfohlen, vor der Bereitstellung im Webdienst lokal zu debuggen. Weitere Informationen finden Sie unter Lokales Debuggen.

Weitere Informationen finden Sie auch unter Azure Machine Learning – Bereitstellung auf lokalem Notebook

Voraussetzungen

Begrenzungen

Wenn Ihr Azure Machine Learning-Arbeitsbereich mit einem privaten Endpunkt konfiguriert ist, wird die Bereitstellung in Azure Container Instances in einem virtuellen Netzwerk nicht unterstützt. Verwenden Sie stattdessen einen verwalteten Onlineendpunkt mit Netzwerkisolation.

Bereitstellen für ACI

Um ein Modell für Azure Container Instances bereitzustellen, erstellen Sie eine Bereitstellungskonfiguration, in der die benötigten Computeressourcen beschrieben werden. Dies sind beispielsweise die Anzahl von Kernen und die Arbeitsspeichergröße. Außerdem benötigen Sie eine Rückschlusskonfiguration, in der die zum Hosten des Modells und des Webdiensts erforderliche Umgebung beschrieben wird. Weitere Informationen zum Erstellen der Rückschlusskonfiguration finden Sie unter Wie und wo Modelle bereitgestellt werden.

Hinweis

  • ACI eignet sich nur für kleine Modelle, die weniger als 1 GB groß sind.
  • Wir empfehlen die Verwendung von AKS mit einem einzelnen Knoten, um größere Modelle zu entwickeln.
  • Die Anzahl der bereitzustellenden Modelle ist auf 1.000 Modelle pro Bereitstellung (pro Container) beschränkt.

Verwenden des SDK

GILT FÜR: Python SDK azureml v1

from azureml.core.webservice import AciWebservice, Webservice
from azureml.core.model import Model

deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
service = Model.deploy(ws, "aciservice", [model], inference_config, deployment_config)
service.wait_for_deployment(show_output = True)
print(service.state)

Weitere Informationen zu den in diesem Beispiel verwendeten Klassen, Methoden und Parametern finden Sie in den folgenden Referenzdokumenten:

Verwenden der Azure-Befehlszeilenschnittstelle

GILT FÜR: Azure CLI-ML-Erweiterung v1

Verwenden Sie für die Bereitstellung mit der CLI den folgenden Befehl. Ersetzen Sie mymodel:1 durch den Namen und die Version des registrierten Modells. Ersetzen Sie myservice durch den Namen, den dieser Dienst erhalten soll:

az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json

Die Einträge im Dokument deploymentconfig.json werden den Parametern für AciWebservice.deploy_configuration zugeordnet. In der folgenden Tabelle wird die Zuordnung zwischen den Entitäten im JSON-Dokument und den Parametern für die Methode beschrieben:

JSON-Entität Methodenparameter Beschreibung
computeType Nicht verfügbar Das Computeziel. Für ACI muss der Wert ACI sein.
containerResourceRequirements Nicht verfügbar Der Container für die CPU- und Arbeitsspeicherentitäten.
  cpu cpu_cores Die Anzahl der zuzuordnenden CPU-Kerne. Standardwert: 0.1
  memoryInGB memory_gb Der Arbeitsspeicherumfang (in GB), der für diesen Webdienst zugeordnet werden soll. Standardwert: 0.5.
location location Die Azure-Region, in der dieser Webdienst bereitgestellt werden soll. Wenn keine Region angegeben ist, wird der Standort des Arbeitsbereichs verwendet. Weitere Informationen zu verfügbaren Regionen finden Sie hier: ACI-Regionen.
authEnabled auth_enabled Gibt an, ob die Authentifizierung für diesen Webdienst aktiviert werden soll. Der Standardwert ist „FALSE“.
sslEnabled ssl_enabled Gibt an, ob für diesen Webdienst TLS aktiviert werden soll. Der Standardwert lautet „False“.
appInsightsEnabled enable_app_insights Gibt an, ob für diesen Webdienst AppInsights aktiviert werden soll. Der Standardwert ist „FALSE“.
sslCertificate ssl_cert_pem_file Die benötigte CERT-Datei, wenn TLS aktiviert ist
sslKey ssl_key_pem_file Die benötigte KEY-Datei, wenn TLS aktiviert ist
cname ssl_cname Der CNAME, wenn TLS aktiviert ist
dnsNameLabel dns_name_label Die DNS-Namensbezeichnung für den Bewertungsendpunkt. Wenn keine eindeutige DNS-Namensbezeichnung angegeben ist, wird eine für den Bewertungsendpunkt generiert.

Der folgende JSON-Code ist ein Beispiel für eine Bereitstellungskonfiguration für die Verwendung mit der CLI:

{
    "computeType": "aci",
    "containerResourceRequirements":
    {
        "cpu": 0.5,
        "memoryInGB": 1.0
    },
    "authEnabled": true,
    "sslEnabled": false,
    "appInsightsEnabled": false
}

Weitere Informationen finden Sie in der az ml model deploy-Referenz.

Verwenden von VS Code

Informationen finden Sie im Artikel zum Verwalten von Ressourcen in VS Code.

Wichtig

Sie müssen vorab keinen ACI-Container zu Testzwecken erstellen. ACI-Container werden bei Bedarf erstellt.

Wichtig

Wir fügen eine Arbeitsbereichs-ID mit Hash allen zugrunde liegenden ACI-Ressourcen hinzu, die erstellt werden. Alle ACI-Namen im selben Arbeitsbereich haben dasselbe Suffix. Der Azure Machine Learning Service-Name wäre immer noch derselbe vom Kunden vorgegebene „Dienstname“, und für alle Benutzer von Azure Machine Learning SDK-APIs ist keine Änderung erforderlich. Wir geben keine Garantien für die Namen der zugrunde liegenden Ressourcen, die erstellt werden.

Nächste Schritte