Sammeln von Daten von Modellen in der Produktion
GILT FÜR: Python SDK azureml v1
In diesem Artikel wird beschrieben, wie Sie Daten aus einem Azure Machine Learning Modell sammeln, das in einem Azure Kubernetes Service-Cluster (AKS) bereitgestellt wird. Die gesammelten Daten werden anschließend in Azure Blob Storage gespeichert.
Nach der Aktivierung der Sammlung unterstützen die gesammelten Daten Sie bei den folgenden Aufgaben:
Überwachen Sie Datendrifts bei den Produktionsdaten, die Sie erfassen.
Analysieren der gesammelten Daten mit Power BI oder Azure Databricks
Fundiertere Entscheidungen in Bezug auf den Zeitpunkt zum erneuten Trainieren oder Optimieren des Modells
Erneutes Trainieren des Modells mit den gesammelten Daten
Einschränkungen
- Das Feature für die Modelldatensammlung kann nur mit dem Ubuntu 18.04-Image funktionieren.
Wichtig
Seit dem 10.03.2023 ist das Ubuntu 18.04-Image veraltet. Die Unterstützung für Ubuntu 18.04-Images wird ab Januar 2023 eingestellt, wenn das Lebensdauerende am 30. April 2023 erreicht wird.
Das MDC-Feature ist mit keinem anderen Image als Ubuntu 18.04 kompatibel. Dies ist nicht verfügbar, nachdem das Ubuntu 18.04-Image veraltet ist.
Weitere Informationen, auf die Sie sich beziehen können:
Hinweis
Die Datensammlungsfunktion befindet sich derzeit in der Vorschauphase. Previewfunktionen werden für Produktionsworkloads nicht empfohlen.
Welche Daten werden gesammelt, und wo werden sie gespeichert?
Die folgenden Daten können gesammelt werden:
Modelleingabedaten von Webdiensten, die in einem AKS-Cluster bereitgestellt werden. Sprachaudiodaten, Bilder und Videos werden nicht erfasst.
Modellvorhersagen, die auf Eingabedaten aus der Produktion gestützt sind.
Hinweis
Vorabaggregation und -berechnungen für diese Daten sind zurzeit nicht Teil des Sammlungsdiensts.
Die Ausgabe wird im Blobspeicher gespeichert. Da die Daten dem Blobspeicher hinzugefügt werden, können Sie Ihr bevorzugtes Tool zum Ausführen der Analyse auswählen.
Der Pfad zu den Ausgabedaten im Blob folgt dieser Syntax:
/modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv
# example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv
Hinweis
In älteren Versionen des Azure Machine Learning SDK für Python als Version 0.1.0a16 hat das Argument designation
den Namen identifier
. Wenn Ihr Code mit einer älteren Version entwickelt wurde, müssen Sie ihn entsprechend aktualisieren.
Voraussetzungen
Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Ein Azure Machine Learning-Arbeitsbereich, ein lokales Verzeichnis mit Ihren Skripts und das Azure Machine Learning SDK für Python müssen installiert sein. Informationen zur Installation finden Sie unter Konfigurieren einer Entwicklungsumgebung.
Ein trainiertes Machine Learning-Modell muss in AKS bereitgestellt werden. Wenn Sie keines besitzen, sehen Sie sich das Tutorial zum Trainieren eines Bildklassifizierungsmodells an.
Sie benötigen einen AKS-Cluster. Weitere Informationen, wie dies erstellt und bereitgestellt wird, finden Sie unter Bereitstellen von Machine Learning-Modellen in Azure.
Einrichten Ihrer Umgebung und Installieren des Azure Machine Learning Monitoring SDK
Verwenden Sie ein Docker-Image basierend auf Ubuntu 18.04, das mit ausgeliefert wird
libssl 1.0.0
, der wesentlichen Abhängigkeit von modeldatacollector. Sie können auf vorgefertigte Bilder verweisen.
Aktivieren der Datensammlung
Sie können die Datensammlung ungeachtet des über Azure Machine Learning oder andere Tools bereitgestellten Modells aktivieren.
Führen Sie zum Aktivieren der Datensammlung folgende Schritte aus:
Öffnen Sie die Bewertungsdatei.
Fügen Sie den folgenden Code am Anfang der Datei hinzu:
from azureml.monitoring import ModelDataCollector
Deklarieren Sie die Variablen für die Datensammlung in der
init
-Funktion:global inputs_dc, prediction_dc inputs_dc = ModelDataCollector("best_model", designation="inputs", feature_names=["feat1", "feat2", "feat3", "feat4", "feat5", "feat6"]) prediction_dc = ModelDataCollector("best_model", designation="predictions", feature_names=["prediction1", "prediction2"])
Der Parameter CorrelationId ist optional. Sie müssen ihn nicht verwenden, wenn er für das Modell nicht erforderlich ist. Die Verwendung von CorrelationId erleichtert die Zuordnung zu anderen Daten, etwa LoanNumber oder CustomerId.
Der Parameter Identifier wird später zum Erstellen der Ordnerstruktur in Ihrem Blob verwendet. Sie können ihn verwenden, um Rohdaten von verarbeiteten Daten zu unterscheiden.
Fügen Sie die folgenden Codezeilen der
run(input_df)
-Funktion hinzu:data = np.array(data) result = model.predict(data) inputs_dc.collect(data) #this call is saving our input data into Azure Blob prediction_dc.collect(result) #this call is saving our prediction data into Azure Blob
Die Datensammlung wird nicht automatisch auf true festgelegt, wenn Sie einen Dienst in AKS bereitstellen. Aktualisieren Sie Ihre Konfigurationsdatei, wie im folgenden Beispiel gezeigt:
aks_config = AksWebservice.deploy_configuration(collect_model_data=True)
Sie können auch Application Insights für die Dienstüberwachung aktivieren, indem Sie diese Konfiguration ändern:
aks_config = AksWebservice.deploy_configuration(collect_model_data=True, enable_app_insights=True)
Informationen zum Erstellen eines neuen Images und zum Bereitstellen des Machine Learning-Modells finden Sie unter Bereitstellen von Machine Learning-Modellen in Azure.
Fügen Sie das pip-Paket „Azure-Monitoring“ zu den Conda-Abhängigkeiten der Webdienstumgebung hinzu:
env = Environment('webserviceenv')
env.python.conda_dependencies = CondaDependencies.create(conda_packages=['numpy'],pip_packages=['azureml-defaults','azureml-monitoring','inference-schema[numpy-support]'])
Datensammlung deaktivieren
Sie können das Sammeln von Daten jederzeit beenden. Verwenden Sie Python-Code zum Deaktivieren der Datensammlung.
## replace <service_name> with the name of the web service
<service_name>.update(collect_model_data=False)
Überprüfen und Analysieren Ihrer Daten
Sie können ein beliebiges Tool Ihrer Wahl verwenden, um die im Blobspeicher erfassten Daten zu analysieren.
Schnelles Zugreifen auf Ihre Blobdaten
Melden Sie sich beim Azure-Portalan.
Öffnen Sie Ihren Arbeitsbereich.
Wählen Sie Speicher.
Folgen Sie dem Pfad zu den Ausgabedaten des Blobs mit dieser Syntax:
/modeldata/<subscriptionid>/<resourcegroup>/<workspace>/<webservice>/<model>/<version>/<designation>/<year>/<month>/<day>/data.csv # example: /modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/12/31/data.csv
Analysieren von Modelldaten mithilfe von Power BI
Laden Sie Power BI Desktop herunter, und öffnen Sie diese Anwendung.
Wählen Sie Daten abrufen und anschließend Azure Blob Storage aus.
Fügen Sie den Namen Ihres Speicherkontos hinzu, und geben Sie Ihren Speicherschlüssel ein. Sie finden diese Informationen, indem Sie in Ihrem Blob Einstellungen>Zugriffsschlüssel auswählen.
Wählen Sie den Container Modelldaten und dann Bearbeiten aus.
Klicken Sie im Abfrage-Editor unter der Spalte Name, und fügen Sie Ihr Speicherkonto hinzu.
Geben Sie Ihren Modellpfad in den Filter ein. Erweitern Sie einfach den Filterpfad, wenn Sie sich nur die Dateien für ein bestimmtes Jahr oder einen bestimmten Monat ansehen möchten. Verwenden Sie beispielsweise den folgenden Filterpfad, wenn Sie nur die Daten vom März anzeigen möchten:
/modeldata/<Abonnement-ID>/<Ressourcengruppenname>/<Arbeitsbereichsname>/<Webdienstname>/<Modellname>/<Modellversion>/<Bezeichnung>/<Jahr>/3
Filtern Sie die Daten, die für Sie relevant sind, nach den Werten für Name. Wenn Sie Vorhersagen und Eingaben gespeichert haben, müssen Sie für jede jeweils eine separate Abfrage erstellen.
Wählen Sie den nach unten zeigenden Doppelpfeil neben der Spaltenüberschrift Inhalt aus, um die Dateien zu kombinieren.
Wählen Sie OK aus. Die Daten werden vorab geladen.
Wählen Sie Schließen und übernehmen aus.
Wenn Sie Eingaben und Vorhersagen hinzugefügt haben, werden Ihre Tabellen automatisch anhand der RequestId-Werte sortiert.
Beginnen Sie mit der Erstellung Ihrer benutzerdefinierten Berichte in Ihren Modelldaten.
Analysieren von Modelldaten mithilfe von Azure Databricks
Erstellen Sie einen Azure Databricks-Arbeitsbereich.
Greifen Sie auf Ihren Databricks-Arbeitsbereich zu.
Wählen Sie in Ihrem Databricks-Arbeitsbereich die Option Daten hochladen aus.
Wählen Sie Neue Tabelle erstellen und dann Weitere Datenquellen>Azure Blob Storage>Tabelle in Notebook erstellen aus.
Aktualisieren Sie den Speicherort Ihrer Daten. Hier ist ein Beispiel:
file_location = "wasbs://mycontainer@storageaccountname.blob.core.windows.net/*/*/data.csv" file_type = "csv"
Führen Sie die Schritte in der Vorlage aus, um Ihre Daten anzuzeigen und zu analysieren.
Nächste Schritte
Erkennen von Datendrifts bei den gesammelten Daten.