Zbieranie danych z modeli w środowisku produkcyjnymCollect data from models in production

W tym artykule pokazano, jak zbierać dane z modelu Azure Machine Learning wdrożonego w klastrze usługi Azure Kubernetes Service (AKS).This article shows how to collect data from an Azure Machine Learning model deployed on an Azure Kubernetes Service (AKS) cluster. Zebrane dane są następnie przechowywane w usłudze Azure Blob Storage.The collected data is then stored in Azure Blob storage.

Po włączeniu kolekcjonowania zbierane dane ułatwiają:Once collection is enabled, the data you collect helps you:

  • Monitoruj dryfy danych na zbieranych danych produkcyjnych.Monitor data drifts on the production data you collect.

  • Analizowanie zebranych danych przy użyciu Power BI lub Azure DatabricksAnalyze collected data using Power BI or Azure Databricks

  • Podejmowanie lepszych decyzji o tym, kiedy należy ponownie przeprowadzić uczenie lub zoptymalizować model.Make better decisions about when to retrain or optimize your model.

  • Przeszkol model z zebranymi danymi.Retrain your model with the collected data.

Co to jest zbierane i gdzie się odbywaWhat is collected and where it goes

Można zbierać następujące dane:The following data can be collected:

  • Modeluj dane wejściowe z usług sieci Web wdrożonych w klastrze AKS.Model input data from web services deployed in an AKS cluster. Audio, obrazy i wideo głosowe nie są zbierane.Voice audio, images, and video are not collected.

  • Prognozowanie modeli przy użyciu danych wejściowych produkcyjnych.Model predictions using production input data.

Uwaga

Preagregacja i obliczenia przedniego na tych danych nie są obecnie częścią usługi kolekcji.Preaggregation and precalculations on this data are not currently part of the collection service.

Dane wyjściowe są zapisywane w magazynie obiektów BLOB.The output is saved in Blob storage. Ponieważ dane są dodawane do magazynu obiektów blob, można wybrać ulubione narzędzie w celu uruchomienia analizy.Because the data is added to Blob storage, you can choose your favorite tool to run the analysis.

Ścieżka do danych wyjściowych w obiekcie BLOB jest następująca:The path to the output data in the blob follows this 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

Uwaga

W wersjach zestawu Azure Machine Learning SDK dla języka Python starszej niż wersja 0.1.0 A16 designation argument ma nazwę identifier .In versions of the Azure Machine Learning SDK for Python earlier than version 0.1.0a16, the designation argument is named identifier. Jeśli kod został opracowany przy użyciu wcześniejszej wersji, należy odpowiednio go zaktualizować.If you developed your code with an earlier version, you need to update it accordingly.

Wymagania wstępnePrerequisites

Włączanie zbierania danychEnable data collection

Zbieranie danych można włączyć niezależnie od modelu wdrażanego za pomocą Azure Machine Learning lub innych narzędzi.You can enable data collection regardless of the model you deploy through Azure Machine Learning or other tools.

Aby włączyć zbieranie danych, należy:To enable data collection, you need to:

  1. Otwórz plik oceniania.Open the scoring file.

  2. Dodaj następujący kod na początku pliku:Add the following code at the top of the file:

    from azureml.monitoring import ModelDataCollector
    
  3. Zadeklaruj zmienne kolekcji danych w init funkcji:Declare your data collection variables in your init function:

    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"])
    

    Identyfikator korelacji jest opcjonalnym parametrem.CorrelationId is an optional parameter. Nie musisz używać go, jeśli model nie jest wymagany.You don't need to use it if your model doesn't require it. Użycie korelacji ułatwia łatwiejsze mapowanie przy użyciu innych danych, takich jak LoanNumber lub CustomerID.Use of CorrelationId does help you more easily map with other data, such as LoanNumber or CustomerId.

    Parametr identyfikatora jest później używany do kompilowania struktury folderów w obiekcie blob.The Identifier parameter is later used for building the folder structure in your blob. Można jej użyć do rozróżniania danych pierwotnych od przetworzonych danych.You can use it to differentiate raw data from processed data.

  4. Dodaj następujące wiersze kodu do run(input_df) funkcji:Add the following lines of code to the run(input_df) function:

    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 input data into Azure Blob
    
  5. Podczas wdrażania usługi w AKS nie jest automatycznie ustawiana wartość true dla zbierania danych.Data collection is not automatically set to true when you deploy a service in AKS. Zaktualizuj plik konfiguracji, tak jak w poniższym przykładzie:Update your configuration file, as in the following example:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True)
    

    Możesz również włączyć Application Insights do monitorowania usług, zmieniając tę konfigurację:You can also enable Application Insights for service monitoring by changing this configuration:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True, enable_app_insights=True)
    
  6. Aby utworzyć nowy obraz i wdrożyć model uczenia maszynowego, zobacz jak wdrożyć i gdzie.To create a new image and deploy the machine learning model, see How to deploy and where.

  7. Dodaj pakiet PIP "Azure-Monitoring" do Conda-zależności środowiska usługi sieci Web:Add the 'Azure-Monitoring' pip package to the conda-dependencies of the web service environment:

  env = Environment('webserviceenv')
  env.python.conda_dependencies = CondaDependencies.create(conda_packages=['numpy'],pip_packages=['azureml-defaults','azureml-monitoring','inference-schema[numpy-support]'])

Wyłączanie zbierania danychDisable data collection

Zbieranie danych można zatrzymać w dowolnym momencie.You can stop collecting data at any time. Aby wyłączyć zbieranie danych, użyj kodu języka Python.Use Python code to disable data collection.

## replace <service_name> with the name of the web service
<service_name>.update(collect_model_data=False)

Weryfikowanie i analizowanie danychValidate and analyze your data

Możesz wybrać narzędzie preferencji do analizowania danych zbieranych w magazynie obiektów BLOB.You can choose a tool of your preference to analyze the data collected in your Blob storage.

Szybkie uzyskiwanie dostępu do danych obiektów BLOBQuickly access your blob data

  1. Zaloguj się do Azure Portal.Sign in to Azure portal.

  2. Otwórz obszar roboczy.Open your workspace.

  3. Wybierz pozycję Magazyn.Select Storage.

    Wybierz opcję magazynuSelect the Storage option

  4. Postępuj zgodnie ze ścieżką do danych wyjściowych obiektu BLOB przy użyciu następującej składni:Follow the path to the blob's output data with this 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
    

Analizowanie danych modelu za pomocą Power BIAnalyze model data using Power BI

  1. Pobierz i Otwórz Power BI Desktop.Download and open Power BI Desktop.

  2. Wybierz pozycję Pobierz dane i wybierz pozycję Azure Blob Storage.Select Get Data and select Azure Blob Storage.

    Power BI Konfiguracja obiektu BLOBPower BI blob setup

  3. Dodaj nazwę konta magazynu i wprowadź swój klucz magazynu.Add your storage account name and enter your storage key. Te informacje można znaleźć, wybierając pozycję Ustawienia > klucze dostępu w obiekcie blob.You can find this information by selecting Settings > Access keys in your blob.

  4. Wybierz kontener dane modelu i wybierz pozycję Edytuj.Select the model data container and select Edit.

    Nawigator Power BIPower BI Navigator

  5. W edytorze zapytań kliknij kolumnę Nazwa i Dodaj konto magazynu.In the query editor, click under the Name column and add your storage account.

  6. Wprowadź ścieżkę modelu do filtru.Enter your model path into the filter. Jeśli chcesz wyszukać tylko pliki z określonego roku lub miesiąca, po prostu rozwiń ścieżkę filtru.If you want to look only into files from a specific year or month, just expand the filter path. Aby na przykład wyszukać dane z marca, Użyj tej ścieżki filtru:For example, to look only into March data, use this filter path:

    /modeldata/ <subscriptionid> / <resourcegroupname> / <workspacename> / <webservicename> / <modelname> / <modelversion> / <designation> / <year> /3/modeldata/<subscriptionid>/<resourcegroupname>/<workspacename>/<webservicename>/<modelname>/<modelversion>/<designation>/<year>/3

  7. Filtrowanie danych, które są istotne dla użytkownika na podstawie wartości nazw .Filter the data that is relevant to you based on Name values. Jeśli przechowujesz prognozy i dane wejściowe, musisz utworzyć zapytanie dla każdej z nich.If you stored predictions and inputs, you need to create a query for each.

  8. Wybierz podwójną strzałkę w dół obok nagłówka kolumny zawartości , aby połączyć pliki.Select the downward double arrows next to the Content column heading to combine the files.

    Power BI zawartośćPower BI Content

  9. Wybierz przycisk OK.Select OK. Ładowania danych.The data preloads.

    Power BI łączenie plikówPower BI Combine Files

  10. Wybierz pozycję Zamknij i Zastosuj.Select Close and Apply.

  11. Jeśli dodano dane wejściowe i przewidywania, tabele są automatycznie uporządkowane według wartości IdentyfikatorŻądania .If you added inputs and predictions, your tables are automatically ordered by RequestId values.

  12. Zacznij tworzyć niestandardowe raporty dotyczące danych modelu.Start building your custom reports on your model data.

Analizowanie danych modelu za pomocą Azure DatabricksAnalyze model data using Azure Databricks

  1. Utwórz obszar roboczy Azure Databricks.Create an Azure Databricks workspace.

  2. Przejdź do obszaru roboczego kostki danych.Go to your Databricks workspace.

  3. W obszarze roboczym datakostki wybierz pozycję Przekaż dane.In your Databricks workspace, select Upload Data.

    Wybieranie opcji przekazywania danychSelecting Databricks Upload Data option

  4. Wybierz pozycję Utwórz nową tabelę i wybierz pozycję inne źródła danych > Azure Blob Storage > Utwórz tabelę w notesie.Select Create New Table and select Other Data Sources > Azure Blob Storage > Create Table in Notebook.

    Tworzenie tabeli datakostekDatabricks table creation

  5. Zaktualizuj lokalizację danych.Update the location of your data. Oto przykład:Here is an example:

    file_location = "wasbs://mycontainer@storageaccountname.blob.core.windows.net/modeldata/1a2b3c4d-5e6f-7g8h-9i10-j11k12l13m14/myresourcegrp/myWorkspace/aks-w-collv9/best_model/10/inputs/2018/*/*/data.csv" 
    file_type = "csv"
    

    Konfiguracja kostekDatabricks setup

  6. Postępuj zgodnie z instrukcjami szablonu, aby wyświetlić i przeanalizować dane.Follow the steps on the template to view and analyze your data.

Następne krokiNext steps

Wykrywaj dryf danych zbieranych danych.Detect data drift on the data you have collected.