Freigeben über


Bereitstellen von Modellpaketen für Onlineendpunkte (Vorschau)

Das Modellpaket ist eine Funktion in Azure Machine Learning, mit der Sie alle Abhängigkeiten sammeln können, die zum Bereitstellen eines Machine Learning-Modells auf einer Bereitstellungsplattform erforderlich sind. Das Erstellen von Paketen vor der Bereitstellung von Modellen bietet eine robuste und zuverlässige Bereitstellung und einen effizienteren MLOps-Workflow. Pakete können zwischen Arbeitsbereichen und sogar außerhalb von Azure Machine Learning verschoben werden. Weitere Informationen zu Modellpaketen (Vorschau)

Wichtig

Dieses Feature ist zurzeit als öffentliche Preview verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar.

Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

In diesem Artikel erfahren Sie, wie Sie ein Modell verpacken und auf einem Onlineendpunkt in Azure Machine Learning bereitstellen.

Voraussetzungen

Stellen Sie vor dem Ausführen der Schritte in diesem Artikel sicher, dass Sie über die folgenden erforderlichen Komponenten verfügen:

  • Ein Azure-Abonnement. Wenn Sie nicht über ein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen. Probieren Sie die kostenlose oder kostenpflichtige Version von Azure Machine Learning aus.

  • Ein Azure Machine Learning-Arbeitsbereich. Wenn Sie keinen Arbeitsbereich haben, führen Sie die Schritte im Artikel Verwalten von Arbeitsbereichen aus, um einen Arbeitsbereich zu erstellen.

  • Die rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) wird verwendet, um Zugriff auf Vorgänge in Azure Machine Learning zu gewähren. Um die Schritte in diesem Artikel auszuführen, muss Ihr Benutzerkonto der Rolle „Besitzer“ oder „Mitwirkender“ für den Azure Machine Learning-Arbeitsbereich bzw. einer benutzerdefinierte Rolle zugewiesen werden. Weitere Informationen finden Sie unter Zugriff auf einen Azure Machine Learning-Arbeitsbereich verwalten.

Über dieses Beispiel

In diesem Beispiel packen Sie ein Modell vom Typ benutzerdefiniert und stellen es für Onlinerückschlüsse auf einem Onlineendpunkt bereit.

Das Beispiel in diesem Artikel basiert auf Codebeispielen, die im Repository azureml-examples enthalten sind. Um die Befehle lokal auszuführen, ohne YAML und andere Dateien kopieren/einfügen zu müssen, klonen Sie zunächst das Repository, und ändern Sie dann die Verzeichnisse zum Ordner:

git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli

In diesem Abschnitt wird das Beispiel im Ordner endpoints/online/deploy-packages/custom-modelverwendet.

Eine Verbindung mit Ihrem Arbeitsbereich herstellen

Stellen Sie eine Verbindung mit dem Azure Machine Learning-Arbeitsbereich her, in dem Sie Ihre Arbeit erledigen werden.

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Packen des Modells

Sie können Modellpakete explizit erstellen, damit Sie steuern können, wie der Verpackungsvorgang erfolgt. Sie können Modellpakete erstellen, indem Sie Folgendes angeben:

  • Zu packendes Modell: Jedes Modellpaket kann nur ein einzelnes Modell enthalten. Azure Machine Learning unterstützt das Verpacken mehrerer Modelle unter demselben Modellpaket nicht.
  • Basisumgebung: Umgebungen werden verwendet, um das Basisimage anzugeben, und in Python-Paketen die Abhängigkeiten, die Ihr Modell benötigt. Für MLflow-Modelle generiert Azure Machine Learning automatisch die Basisumgebung. Für benutzerdefinierte Modelle müssen Sie sie angeben.
  • Bereitstellungstechnologie: Der Rückschlussstapel, der zum Ausführen des Modells verwendet wird.

Tipp

Wenn Ihr Modell MLflow ist, müssen Sie das Modellpaket nicht manuell erstellen. Wir können vor der Bereitstellung automatisch verpacken. Siehe Bereitstellen von MLflow-Modellen für Onlineendpunkte.

  1. Modellpakete erfordern, dass das Modell entweder in Ihrem Arbeitsbereich oder in einer Azure Machine Learning-Registrierung registriert wird. In diesem Beispiel ist bereits eine lokale Kopie des Modells im Repository vorhanden, daher muss das Modell nur in der Registrierung im Arbeitsbereich veröffentlicht werden. Sie können diesen Schritt überspringen, wenn das Modell, das Sie bereitstellen möchten, bereits registriert ist.

    MODEL_NAME='sklearn-regression'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
    
  2. Unser Modell erfordert die Ausführung der folgenden Pakete, und wir haben sie in einer Conda-Datei angegeben:

    conda.yaml

    name: model-env
    channels:
      - conda-forge
    dependencies:
      - python=3.9
      - numpy=1.23.5
      - pip=23.0.1
      - scikit-learn=1.2.2
      - scipy=1.10.1
      - xgboost==1.3.3
    

    Hinweis

    Beachten Sie, wie nur die Anforderungen des Modells in der Conda-YAML angegeben sind. Jedes Paket, das für den Rückschlussserver erforderlich ist, wird vom Paketvorgang eingeschlossen.

    Tipp

    Wenn für Ihr Modell Pakete erforderlich sind, die in privaten Feeds gehostet werden, können Sie Ihr Paket so konfigurieren, dass es sie enthält. Lesen Sie Packen eines Modells mit Abhängigkeiten in privaten Python-Feeds.

  3. Erstellen Sie eine Basisumgebung, die die Modellanforderungen und ein Basisimage enthält. In der Basisumgebung werden nur Abhängigkeiten angegeben, die für Ihr Modell erforderlich sind. Bei MLflow-Modellen ist die Basisumgebung optional, in diesem Fall wird sie von Azure Machine Learning automatisch für Sie generiert.

    Erstellen einer Basisumgebungsdefinition:

    sklearn-regression-env.yml

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: sklearn-regression-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04
    conda_file: conda.yaml
    description: An environment for models built with XGBoost and Scikit-learn.
    

    Erstellen Sie dann die Umgebung wie folgt:

    az ml environment create -f environment/sklearn-regression-env.yml
    
  4. Erstellen einer Paketspezifikation:

    package-moe.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    base_environment_source:
        type: environment_asset
        resource_id: azureml:sklearn-regression-env:1
    target_environment: sklearn-regression-online-pkg
    inferencing_server: 
        type: azureml_online
        code_configuration:
          code: src
          scoring_script: score.py
    
  5. Starten Sie den Modellpaketvorgang:

    az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
    
  6. Das Ergebnis des Paketvorgangs ist eine Umgebung.

Bereitstellen des Modellpakets

Modellpakete können direkt auf Onlineendpunkten in Azure Machine Learning bereitgestellt werden. Führen Sie die folgenden Schritte aus, um ein Paket auf einem Onlineendpunkt bereitzustellen:

  1. Wählen Sie einen Namen für einen Endpunkt aus, um die Bereitstellung des Pakets zu hosten und zu erstellen:

    ENDPOINT_NAME="sklearn-regression-online"
    
    az ml online-endpoint create -n $ENDPOINT_NAME
    
  2. Erstellen Sie die Bereitstellung mithilfe des Pakets. Beachten Sie, wie environment mit dem Paket konfiguriert ist, das Sie erstellt haben.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: with-package
    endpoint_name: hello-packages
    environment: azureml:sklearn-regression-online-pkg@latest
    instance_type: Standard_DS3_v2
    instance_count: 1
    

    Tipp

    Beachten Sie, dass Sie das Modell oder das Bewertungsskript in diesem Beispiel nicht angeben; sie sind alle Teil des Pakets.

  3. Starten der Bereitstellung:

    az ml online-deployment create -f deployment.yml
    
  4. An diesem Punkt ist die Bereitstellung bereit, genutzt zu werden. Sie können testen, wie sie funktioniert, indem Sie eine Beispielanforderungsdatei erstellen:

    sample-request.json

    {
        "data": [
            [1,2,3,4,5,6,7,8,9,10], 
            [10,9,8,7,6,5,4,3,2,1]
        ]
    }
    
  5. Senden der Anforderung an den Endpunkt

    az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json
    

Nächster Schritt