Collecter des données pour des modèles en production

Cet article montre comment collecter des données à partir d’un modèle d’Azure Machine Learning déployé sur un cluster Azure Kubernetes service (AKS). Les données collectées sont alors stockées dans le Azure Blob.

Une fois la collecte activée, les données que vous collectez vous permettent d’effectuer les opérations suivantes :

  • Surveiller les dérives de données sur les données de production que vous recueillez.

  • Analyser les données collectées à l’aide de Power BI ou Azure Databricks

  • Prendre de meilleures décisions concernant le réentraînement ou l’optimisation de votre modèle

  • Réentraîner votre modèle avec les données collectées

Types et destination des données collectées

Les données suivantes peuvent être collectées :

  • Données d’entrée de modèle issues des services web déployés dans un cluster AKS. La voix audio, les images et les vidéos ne sont pas collectés.

  • Prédictions de modèle utilisant des données d’entrée de production.

Notes

La préagrégation et les précalculs de ces données ne font pas partie du service de collecte.

La sortie est enregistrée dans le stockage d’objets blob. Étant donné que les données sont ajoutées au stockage d’objets blob, vous pouvez choisir votre outil favori pour exécuter l’analyse.

Le chemin des données de sortie dans l’objet blob respecte cette syntaxe :

/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

Notes

Dans les versions du SDK Azure Machine Learning pour Python qui sont antérieures à la version 0.1.0a16, l’argument designation se nomme identifier. Si votre code a été développé avec une version antérieure, vous devrez le mettre à jour.

Prérequis

Activer la collecte des données

Vous pouvez activer la collecte de données, quel que soit le modèle que vous déployez par le biais d’Azure Machine Learning ou d’autres outils.

Pour activer la collecte de données, vous devez :

  1. Ouvrir le fichier de scoring.

  2. Ajoutez le code suivant au début du fichier :

    from azureml.monitoring import ModelDataCollector
    
  3. Déclarez vos variables de collecte de données dans votre fonction init :

    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 est un paramètre facultatif. Il n’est pas obligatoire si votre modèle n’en a pas besoin. L’utilisation de CorrelationId vous permet un mappage plus facile avec d’autres données, telles que LoanNumber ou CustomerId.

    Le paramètre Identifier est utilisé ultérieurement pour créer la structure de dossiers dans votre objet blob. Vous pouvez l’utiliser pour différencier les données brutes des données traitées.

  4. Ajoutez les lignes de code suivantes à la fonction run(input_df) :

    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. La collecte de données n’est pas automatiquement définie sur true quand vous déployez un service dans AKS. Mettez à jour votre fichier de configuration, comme dans l’exemple suivant :

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True)
    

    Vous pouvez également activer Application Insights pour la supervision de service en modifiant cette configuration :

    aks_config = AksWebservice.deploy_configuration(collect_model_data=True, enable_app_insights=True)
    
  6. Pour créer une image et déployer le modèle Machine Learning, consultez Où et comment effectuer un déploiement.

  7. Ajoutez le package PIP « Azure-Monitoring » aux dépendances Conda de l’environnement de service Web :

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

Désactiver la collecte de données

Vous pouvez arrêter la collecte de données à tout moment. Utilisez le code Python pour désactiver la collecte de données.

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

Valider et analyser vos données

Vous pouvez choisir l’outil de votre choix pour analyser les données collectées dans votre stockage d’objets blob.

Accéder rapidement à vos données d’objets blob

  1. Connectez-vous au portail Azure.

  2. Ouvrez votre espace de travail.

  3. Sélectionnez Stockage.

    Sélection de l’option de stockage

  4. Suivez le chemin des données de sortie de l’objet blob avec cette syntaxe :

    /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
    

Analyser des données de modèle à l’aide de Power BI

  1. Téléchargez et ouvrez Power BI Desktop.

  2. Sélectionnez Obtenir des données, puis sélectionnez Stockage Blob Azure.

    Configuration de l’objet blob Power BI

  3. Ajoutez le nom de votre compte de stockage et entrez votre clé de stockage. Vous pouvez accéder à ces informations en sélectionnant Paramètres > Clés d’accès dans votre objet blob.

  4. Sélectionnez le conteneur de données de modèle, puis sélectionnez Modifier.

    Navigateur - Power BI

  5. Dans l’éditeur de requête, cliquez sous la colonne Name et ajoutez votre compte de stockage.

  6. Entrez le chemin du modèle dans le filtre. Si vous ne voulez examiner que les fichiers d’une année ou d’un mois spécifique, développez simplement le chemin du filtre. Par exemple, pour rechercher uniquement les données du mois de mars, utilisez ce chemin de filtre :

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

  7. Filtrez les données qui vous concernent en fonction des valeurs de Nom. Si vous avez stocké des prédictions et des entrées, vous devrez créer une requête pour chacune d’elles.

  8. Sélectionnez les flèches doubles vers le bas en regard de l’en-tête de colonne Contenu pour combiner les fichiers.

    Contenu - Power BI

  9. Sélectionnez OK. Les données sont préchargées.

    Combiner les fichiers - Power BI

  10. Sélectionnez Fermer et appliquer.

  11. Si vous avez ajouté des entrées et des prédictions, vos tables sont automatiquement classées en fonction des valeurs RequestId.

  12. Commencez à créer vos rapports personnalisés à partir des données de votre modèle.

Analyser des données de modèle à l’aide d’Azure Databricks

  1. Créez un espace de travail Azure Databricks.

  2. Accédez à votre espace de travail Databricks.

  3. Dans votre espace de travail Databricks, sélectionnez Charger des données.

    Sélection de l’option Charger des données - Databricks

  4. Sélectionnez Créer une table, puis sélectionnez Autres sources de données > Stockage Blob Azure > Créer une table dans Notebook.

    Création d’une table - Databricks

  5. Mettez à jour l’emplacement de vos données. Voici un exemple :

    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"
    

    Configuration Databricks

  6. Suivez les étapes du modèle afin d’afficher et d’analyser vos données.

Étapes suivantes

Détectez la dérive des données sur les données que vous avez collectées.