Gegevens verzamelen van modellen in productie

In dit artikel wordt beschreven hoe u gegevens verzamelt van Azure Machine Learning model dat is geïmplementeerd op een Azure Kubernetes Service (AKS)-cluster. De verzamelde gegevens worden vervolgens opgeslagen in Azure Blob Storage.

Zodra het verzamelen is ingeschakeld, helpen de gegevens die u verzamelt u het volgende:

Wat er wordt verzameld en waar het wordt op

De volgende gegevens kunnen worden verzameld:

  • Modelinvoergegevens van webservices die zijn geïmplementeerd in een AKS-cluster. Spraak, afbeeldingen en video worden niet verzameld.

  • Modelvoorspellingen met behulp van productie-invoergegevens.

Notitie

Preaggregatie en voorberekeningen op deze gegevens maken momenteel geen deel uit van de verzamelingsservice.

De uitvoer wordt opgeslagen in Blob Storage. Omdat de gegevens worden toegevoegd aan Blob Storage, kunt u uw favoriete hulpprogramma kiezen om de analyse uit te voeren.

Het pad naar de uitvoergegevens in de blob volgt deze syntaxis:

/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

Notitie

In versies van de Azure Machine Learning SDK voor Python die lager is dan versie 0.1.0a16, designation heet het argument identifier . Als u uw code met een eerdere versie hebt ontwikkeld, moet u deze dienovereenkomstig bijwerken.

Vereisten

  • Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.

  • Een Azure Machine Learning werkruimte, een lokale map met uw scripts en de Azure Machine Learning SDK voor Python moeten zijn geïnstalleerd. Zie Een ontwikkelomgeving configureren voor meer informatie over het installeren ervan.

  • U hebt een getraind machine learning-model nodig om te worden geïmplementeerd in AKS. Als u geen model hebt, bekijkt u de zelfstudie Afbeeldingsclassificatiemodel trainen.

  • U hebt een AKS-cluster nodig. Zie Implementeren en waar voor meer informatie over het maken en implementeren ervan.

  • Stel uw omgeving in en installeer de Azure Machine Learning Monitoring SDK.

Gegevensverzameling inschakelen

U kunt gegevensverzameling inschakelen, ongeacht het model dat u implementeert via Azure Machine Learning of andere hulpprogramma's.

Als u gegevensverzameling wilt inschakelen, moet u het volgende doen:

  1. Open het scoring-bestand.

  2. Voeg bovenaan het bestand de volgende code toe:

    from azureml.monitoring import ModelDataCollector
    
  3. Declareer uw gegevensverzamelingsvariabelen in uw init functie:

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

    CorrelationId is een optionele parameter. U hoeft deze niet te gebruiken als dit niet vereist is voor uw model. Het gebruik van CorrelationId helpt u om gemakkelijker te kunnen worden in kaart gebracht met andere gegevens, zoals LoanNumber of CustomerId.

    De id-parameter wordt later gebruikt voor het bouwen van de mapstructuur in uw blob. U kunt deze gebruiken om onbewerkte gegevens te onderscheiden van verwerkte gegevens.

  4. Voeg de volgende regels code toe aan de run(input_df) functie :

    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. Gegevensverzameling wordt niet automatisch ingesteld op true wanneer u een service in AKS implementeert. Werk uw configuratiebestand bij, zoals in het volgende voorbeeld:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True)
    

    U kunt application Insights ook inschakelen voor servicebewaking door deze configuratie te wijzigen:

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True, enable_app_insights=True)
    
  6. Als u een nieuwe afbeelding wilt maken en het machine learning implementeert, gaat u naar Implementeren en waar.

  7. Voeg het PIP-pakket 'Azure-Monitoring' toe aan de conda-afhankelijkheden van de webserviceomgeving:

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

Gegevens verzamelen uitschakelen

U kunt het verzamelen van gegevens op elk moment stoppen. Python-code gebruiken om gegevensverzameling uit te schakelen.

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

Uw gegevens valideren en analyseren

U kunt een hulpprogramma van uw voorkeur kiezen om de gegevens te analyseren die in uw Blob-opslag zijn verzameld.

Snel toegang krijgen tot uw blobgegevens

  1. Meld u aan bij de Azure-portal.

  2. Open uw werkruimte.

  3. Selecteer Opslag.

    Selecteer de Storage optie

  4. Volg het pad naar de uitvoergegevens van de blob met deze syntaxis:

    /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
    

Modelgegevens analyseren met behulp van Power BI

  1. Download en open Power BI Desktop.

  2. Selecteer Gegevens op halen en selecteer Azure Blob Storage.

    Power BI blob instellen

  3. Voeg de naam van uw opslagaccount toe en voer uw opslagsleutel in. U kunt deze informatie vinden door Instellingen > Toegangssleutels in uw blob te selecteren.

  4. Selecteer de gegevenscontainer voor het model en selecteer Bewerken.

    Power BI Navigator

  5. Klik in de query-editor onder de kolom Naam en voeg uw opslagaccount toe.

  6. Voer uw modelpad in het filter in. Als u alleen bestanden van een specifiek jaar of een bepaalde maand wilt bekijken, vouwt u het filterpad uit. Als u bijvoorbeeld alleen gegevens van maart wilt bekijken, gebruikt u dit filterpad:

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

  7. Filter de gegevens die relevant zijn voor u op basis van naamwaarden. Als u voorspellingen en invoer hebt opgeslagen, moet u voor elke query een query maken.

  8. Selecteer de omlaag dubbele pijlen naast de kolomkoppen Inhoud om de bestanden te combineren.

    Power BI Inhoud

  9. Selecteer OK. De gegevens worden vooraf geladen.

    Power BI Bestanden combineren

  10. Selecteer Sluiten en toepassen.

  11. Als u invoer en voorspellingen hebt toegevoegd, worden uw tabellen automatisch geordend op RequestId-waarden.

  12. Begin met het bouwen van uw aangepaste rapporten op basis van uw modelgegevens.

Modelgegevens analyseren met behulp van Azure Databricks

  1. Maak een Azure Databricks werkruimte.

  2. Ga naar uw Databricks-werkruimte.

  3. Selecteer in uw Databricks-werkruimte Upload Data.

    De optie Databricks Upload Data selecteren

  4. Selecteer Nieuwe tabel maken en selecteer Andere gegevensbronnen Azure Blob > Storage Tabel maken in > Notebook.

    Databricks-tabel maken

  5. Werk de locatie van uw gegevens bij. Hier volgt een voorbeeld:

    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"
    

    Databricks-installatie

  6. Volg de stappen in de sjabloon om uw gegevens weer te geven en te analyseren.

Volgende stappen

Detecteer gegevensdrift op de gegevens die u hebt verzameld.