Créer un pipeline prédictif en utilisant ML Studio (classique) et Azure Data Factory

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

ML Studio (classique) vous permet de générer, tester et déployer des solutions d’analyse prédictive. D’un point de vue très général, cela s’effectue en trois étapes :

  1. Créez une expérience de formation. Vous effectuez cette étape à l’aide de ML Studio (classique). ML Studio (classique) est un environnement de développement visuel collaboratif qui vous permet de former et de tester un modèle d’analyse prédictive à l’aide de données d’apprentissage.
  2. Convertissez-la en une expérience prédictive. Une fois que votre modèle a été formé avec des données existantes et que vous êtes prêt à l’utiliser pour la notation de nouvelles données, vous préparez et simplifiez votre expérience de notation.
  3. Déployez-la en tant que service web. Vous pouvez publier votre expérience de notation comme un service web Azure. Vous pouvez envoyer des données à votre modèle via ce point de terminaison de service web et recevoir des prédictions de résultats du modèle.

Utilisation conjointe de Data Factory et ML Studio (classique)

Azure Data Factory vous permet de créer facilement des pipelines qui utilisent un service web ML Studio (classique) publié pour l’analyse prédictive. À l’aide de l’Activité d’exécution par lot dans un pipeline Azure Data Factory, vous pouvez appeler un service web ML Studio (classique) pour effectuer des prédictions sur les données par lot.

Au fil du temps, les modèles prédictifs dans les expériences de notation ML Studio (classique) doivent être reformés à l’aide de nouveaux jeux de données d’entrée. Vous pouvez réentraîner un modèle à partir d’un pipeline Data Factory en effectuant les étapes suivantes :

  1. Publiez l’expérience de formation (et non l’expérience prédictive) comme un service web. Vous pouvez effectuer cette tâche dans ML Studio (classique) comme vous l’avez fait pour exposer l’expérience prédictive en tant que service web dans le scénario précédent.
  2. Utilisez l’activité d’exécution par lots ML Studio (classique) pour appeler le service web pour l’expérience de formation. En fait, vous pouvez utiliser l’activité Batch Execution de ML Studio (classique) pour appeler à la fois le service web de formation et le service web de notation.

Une fois que vous avez fini la reformation, mettez à jour le service web de notation (expérience prédictive exposée comme un service web) avec le modèle qui vient d’être formé à l’aide de l’Activité des ressources de mise à jour ML Studio (classique) . Consultez l’article Mise à jour des modèles à l’aide de l’activité des ressources de mise à jour pour plus d’informations.

Service lié ML Studio (classique)

Vous créez un service lié ML Studio (classique) pour lier un service web ML Studio (classique) à une fabrique de données Azure. Le service lié est utilisé par l'Activité d'exécution par lot et l'Activité des ressources de mise à jour ML Studio (classique).

{
    "type" : "linkedServices",
    "name": "AzureMLLinkedService",
    "properties": {
        "type": "AzureML",
        "typeProperties": {
            "mlEndpoint": "URL to Azure ML Predictive Web Service",
            "apiKey": {
                "type": "SecureString",
                "value": "api key"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Consultez l’article sur les services liés de calcul pour obtenir les descriptions des propriétés dans la définition JSON.

ML Studio (classique) prend à la fois en charge les services web classiques et les nouveaux services web pour votre expérience prédictive. Vous pouvez choisir celui qui vous convient à partir de Data Factory. Pour obtenir les informations requises afin de créer le service lié ML Studio (classique), accédez à https://services.azureml.net, où tous vos (nouveaux) services web et les services web classiques sont répertoriés. Cliquez sur le service web auquel vous voulez accéder, puis cliquez sur la page Consommer. Copiez la clé primaire de la propriété apiKey, puis les requêtes de lots de la propriété mlEndpoint.

Services web ML Studio (classiques)

Activité Batch Execution ML Studio (classique)

L’extrait de code JSON suivant définit une activité d’exécution par lot ML Studio (classique). La définition de l’activité comporte une référence au service lié ML Studio (classique) que vous avez créé précédemment.

{
    "name": "AzureMLExecutionActivityTemplate",
    "description": "description",
    "type": "AzureMLBatchExecution",
    "linkedServiceName": {
        "referenceName": "AzureMLLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "webServiceInputs": {
            "<web service input name 1>": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService1",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"path1"
            },
            "<web service input name 2>": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService1",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"path2"
            }
        },
        "webServiceOutputs": {
            "<web service output name 1>": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService2",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"path3"
            },
            "<web service output name 2>": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService2",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"path4"
            }
        },
        "globalParameters": {
            "<Parameter 1 Name>": "<parameter value>",
            "<parameter 2 name>": "<parameter 2 value>"
        }
    }
}
Propriété Description Obligatoire
name Nom de l’activité dans le pipeline Oui
description Texte décrivant l’activité. Non
type Pour l'activité U-SQL de Data Lake Analytics, le type d'activité est AzureMLBatchExecution. Oui
linkedServiceName Services liés au service lié ML Studio (classique) Pour en savoir plus sur ce service lié, consultez l’article Services liés de calcul. Oui
webServiceInputs Paires clé/valeur, caractérisant les noms des entrées du service web ML Studio (classique). La clé doit correspondre aux paramètres d’entrée définis dans le service web ML Studio (classique) publié. La valeur est une paire de propriétés FilePath de services liés de stockage Azure spécifiant les emplacements d’objets blob d’entrée. Non
webServiceOutputs Paires clé/valeur caractérisant les noms des sorties du service web ML Studio (classique). La clé doit correspondre aux paramètres de sortie définis dans le service web ML (classique) publié. La valeur est une paire de propriétés FilePath de services liés de stockage Azure spécifiant les emplacements d’objets blob de sortie. Non
globalParameters Paires clé/valeur à passer au point de terminaison du service d’exécution par lot ML Studio (classique). Les clés doivent correspondre aux noms des paramètres de service web définis dans le service web ML Studio (classique) publié. Les valeurs sont passées dans la propriété GlobalParameters de la requête d’exécution par lot ML Studio (classique). Non

Scénario 1 : Expériences qui utilisent des entrées/sorties de service web qui font référence à des données dans Stockage Blob Azure

Dans ce scénario, le service web ML Studio (classique) effectue des prédictions à l’aide des données d’un fichier dans un stockage d’objets blob Azure et stocke les résultats des prédictions dans le stockage d’objets blob. Le code JSON suivant définit un pipeline Data Factory avec une activité AzureMLBatchExecution. Les données d’entrée et de sortie dans le stockage d’objets blob Azure sont référencées à l’aide d’une paire LinkedName/FilePath. Dans l’exemple, le service lié des entrées et des sorties est différent. Vous pouvez utiliser des services liés différents pour chacune de vos entrées/sorties pour que Data Factory puisse récupérer les bons fichiers et les envoyer au service web ML Studio (classique).

Important

Dans votre expérience ML Studio (classique), les ports et paramètres globaux de l’entrée et la sortie du service web ont des noms par défaut (« input1 », « input2 ») que vous pouvez personnaliser. Les noms que vous utilisez pour les paramètres globalParameters, webServiceOutputs et webServiceInputs doivent correspondre exactement aux noms utilisés dans les expériences. Vous pouvez afficher la charge utile de l’exemple de requête sur la page d’aide relative à l’exécution par lots pour votre point de terminaison ML Studio (classique) afin de vérifier le mappage attendu.

{
    "name": "AzureMLExecutionActivityTemplate",
    "description": "description",
    "type": "AzureMLBatchExecution",
    "linkedServiceName": {
        "referenceName": "AzureMLLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "webServiceInputs": {
            "input1": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService1",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"amltest/input/in1.csv"
            },
            "input2": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService1",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"amltest/input/in2.csv"
            }
        },
        "webServiceOutputs": {
            "outputName1": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService2",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"amltest2/output/out1.csv"
            },
            "outputName2": {
                "LinkedServiceName":{
                    "referenceName": "AzureStorageLinkedService2",
                    "type": "LinkedServiceReference"
                },
                "FilePath":"amltest2/output/out2.csv"
            }
        }
    }
}

Scénario 2 : Expériences qui utilisent des modules lecteur/enregistreur pour faire référence à des données dans différents stockages

Un autre scénario courant lors de la création d’expériences ML Studio (classique) consiste à utiliser des modules de données d’importation et de données de sortie. Le module de données d’importation permet de charger des données dans une expérience, tandis que le module de données de sortie sert à enregistrer les données issues de cette expérience. Pour plus d’informations sur les modules de données d’importation et de données de sortie, consultez les rubriques Données d’importation et Données de sortie sur MSDN Library.

Quand vous utilisez les modules de données d’importation et de données de sortie, il est conseillé d’utiliser un paramètre de service web pour chaque propriété de ces modules. Ces paramètres web permettent de configurer les valeurs pendant l’exécution. Par exemple, vous pouvez créer une expérience avec un module d’importation de données qui utilise une base de données Azure SQL Database : XXX.database.windows.net. Une fois le service web déployé, vous pouvez autoriser les consommateurs du service web à spécifier un autre serveur SQL logique appelé YYY.database.windows.net. Vous pouvez utiliser un paramètre de service web pour permettre à cette valeur d’être configurée.

Notes

L’entrée et la sortie du service web diffèrent des paramètres de service web. Dans le premier scénario, vous avez vu comment une entrée et une sortie peuvent être spécifiées pour un service web ML Studio (classique). Dans ce scénario, vous passez pour un service web des paramètres qui correspondent aux propriétés des modules de données d’importation/de sortie.

Examinons un scénario d’utilisation de paramètres de service web. Vous avez déployé un service web ML Studio (classique) qui utilise un module lecteur pour lire les données de l’une des sources de données prises en charge par ML Studio (classique) (par exemple : Azure SQL Database). Après l’exécution par lots, les résultats sont écrits à l’aide d’un module enregistreur (Azure SQL Database). Aucune entrée ou sortie de service web n’est définie dans les expériences. Dans ce cas, nous vous recommandons de configurer les paramètres de service web appropriés pour les modules lecteur et enregistreur. Cela permet la configuration des modules lecteur/enregistreur quand vous utilisez l’activité AzureMLBatchExecution. Spécifiez les paramètres de service web dans la section globalParameters du code JSON de l’activité comme suit.

"typeProperties": {
    "globalParameters": {
        "Database server name": "<myserver>.database.windows.net",
        "Database name": "<database>",
        "Server user account name": "<user name>",
        "Server user account password": "<password>"
    }
}

Notes

Les paramètres de service web respectent la casse ; veillez donc à ce que les noms que vous indiquez dans le script JSON de l'activité correspondent à ceux exposés par le service web.

Une fois que vous avez fini la reformation, mettez à jour le service web de notation (expérience prédictive exposée comme un service web) avec le modèle qui vient d’être formé à l’aide de l’Activité des ressources de mise à jour ML Studio (classique) . Consultez l’article Mise à jour des modèles à l’aide de l’activité des ressources de mise à jour pour plus d’informations.

Étapes suivantes

Consultez les articles suivants qui expliquent comment transformer des données par d’autres moyens :