Packen und Bereitstellen von Modellen außerhalb von Azure Machine Learning (Vorschau)
Sie können Modelle außerhalb von Azure Machine Learning online bereitstellen, indem Sie Modellpakete erstellen (Vorschau). Mit Azure Machine Learning können Sie ein Modellpaket erstellen, das alle Abhängigkeiten sammelt, die für die Bereitstellung eines Machine Learning-Modells auf einer Bereitstellungsplattform erforderlich sind. Sie können ein Modellpaket zwischen Arbeitsbereichen und sogar außerhalb von Azure Machine Learning verschieben. Weitere Informationen zu Modellpaketen finden Sie unter Modellpakete für die Bereitstellung (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 in einem Azure App Service 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.
Hinweis
Private Link-aktivierte Arbeitsbereiche unterstützen keine Paketmodelle für die Bereitstellung außerhalb von Azure Machine Learning.
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.
Vorbereiten Ihres Systems
Führen Sie die folgenden Schritte aus, um Ihr System vorzubereiten.
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 Artikel wird das Beispiel im Ordner endpoints/online/deploy-with-packages/mlflow-model verwendet.
Stellen Sie eine Verbindung mit dem Azure Machine Learning-Arbeitsbereich her, in dem Sie Ihre Arbeit erledigen.
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Pakete erfordern, dass das Modell entweder in Ihrem Arbeitsbereich oder in einer Azure Machine Learning-Registrierung registriert wird. In diesem Beispiel ist 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='heart-classifier-mlflow' MODEL_PATH='model' az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
Bereitstellen eines Modellpakets im Azure App Service
In diesem Abschnitt packen Sie das zuvor registrierte MLflow-Modell und stellen es im Azure App Service bereit.
Für die Bereitstellung eines Modells außerhalb von Azure Machine Learning muss eine Paketspezifikation erstellt werden. Um ein Paket zu erstellen, das vollständig von Azure Machine Learning getrennt ist, geben Sie den
copy
-Modus in der Modellkonfiguration an. Dercopy
-Modus weist das Paket an, die Artefakte innerhalb des Pakets zu kopieren. Der folgende Code zeigt, wie Sie den Kopiermodus für die Modellkonfiguration angeben:Erstellen Sie eine YAML-Spezifikation:
package-external.yml
$schema: http://azureml/sdk-2-0/ModelVersionPackage.json target_environment: heart-classifier-mlflow-pkg inferencing_server: type: azureml_online model_configuration: mode: copy
Tipp
Wenn Sie die Modellkonfiguration mithilfe von
copy
für die Modus-Eigenschaft angeben, stellen Sie sicher, dass alle Modellartefakte innerhalb des generierten Docker-Images kopiert werden, anstatt aus der Registrierung des Azure Machine Learning-Modells heruntergeladen zu werden und somit eine echte Portabilität außerhalb von Azure Machine Learning zu ermöglichen. Eine vollständige Spezifikation zu allen Optionen beim Erstellen von Paketen finden Sie unter Erstellen einer Paketspezifikation.Starten Sie den Paketvorgang.
az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
Das Ergebnis des Paketvorgangs ist eine Umgebung in Azure Machine Learning. Der Vorteil dieser Umgebung besteht darin, dass jede Umgebung über ein entsprechendes Docker-Image verfügt, das Sie in einer externen Bereitstellung verwenden können. Bilder werden in der Azure-Containerregistrierung gehostet. Die folgenden Schritte zeigen, wie Sie den Namen des generierten Bilds erhalten:
Wechseln Sie zum Azure Machine Learning-Studio.
Wählen Sie den Abschnitt Umgebungen aus.
Wählen Sie die Registerkarte Benutzerdefinierte Umgebungen aus.
Suchen Sie nach der Umgebung mit dem Namen heart-classifier-mlflow-package, wobei es sich um den Namen des soeben erstellten Pakets handelt.
Kopieren Sie den Wert im Feld Azure-Containerregistrierung.
Stellen Sie dieses Paket jetzt in einem App Service bereit.
Wechseln Sie zum Azure-Portal und erstellen Sie eine neue App Service-Ressource.
Wählen Sie im Erstellungs-Assistenten das von Ihnen verwendete Abonnement und die Ressourcengruppe aus.
Geben Sie der App im Abschnitt Instanzdetails einen Namen.
Wählen Sie unter Veröffentlichen die Option Docker-Container aus.
Wählen Sie unter Betriebssystem die Option Linux aus.
Konfigurieren Sie den Rest der Seite nach Bedarf und wählen Sie Weiter aus.
Wechseln Sie zur Registerkarte Docker.
Wählen Sie unter Optionen die Option Einzelner Container aus.
Wählen Sie unter Imagequelle die Option Azure Container Registry aus.
Konfigurieren Sie die Azure-Containerregistrierungsoptionen wie folgt:
Wählen Sie für Registrierung die Azure-Container Registry aus, die dem Azure Machine Learning-Arbeitsbereich zugeordnet ist.
Wählen Sie für Bild das Bild aus, das Sie in Schritt 3(e) dieses Tutorials gefunden haben.
Wählen Sie unter Tag die Option Neuestes aus.
Konfigurieren Sie den Rest des Assistenten nach Bedarf.
Klicken Sie auf Erstellen. Das Modell ist jetzt im von Ihnen erstellten App Service bereitgestellt.
Die Art und Weise, wie Sie Vorhersagen aufrufen und abrufen, hängt vom verwendeten Rückschlussserver ab. In diesem Beispiel haben Sie den Azure Machine Learning-Rückschlussserver verwendet, der Vorhersagen unter der Route
/score
erstellt. Weitere Informationen zu den Eingabeformaten und -features finden Sie in den Details des Pakets azureml-inference-server-http.Bereiten Sie die Anforderungsnutzdaten vor. Das Format für ein MLflow-Modell, das mit Azure Machine Learning-Inferencing-Server bereitgestellt wird, lautet wie folgt:
sample-request.json
{ "input_data": { "columns": [ "age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal" ], "index": [1], "data": [ [1, 1, 4, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2] ] } }
Testen Sie die Modellbereitstellung, um festzustellen, ob sie funktioniert.
cat -A sample-request.json | curl http://heart-classifier-mlflow-pkg.azurewebsites.net/score \ --request POST \ --header 'Content-Type: application/json' \ --data-binary @-