Exécuter des points de terminaison de traitement par lots à partir d’Azure Data Factory
S’APPLIQUE À :Extension Azure CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)
Les Big Data nécessitent un service pouvant orchestrer et opérationnaliser les processus qui permettent d’affiner les données brutes de ces gigantesques magasins pour les transformer en insights métier exploitables. Azure Data Factory est un service cloud géré créé pour ces projets complexes d’extraction, de transformation et de chargement (ETL), d’extraction, de chargement et de transformation (ELT) et d’intégration des données.
Azure Data Factory permet la création de pipelines qui peuvent orchestrer plusieurs transformations de données et les gérer en tant qu’unité unique. Les points de terminaison par lots sont un excellent candidat pour devenir une étape dans un tel flux de travail de traitement. Dans cet exemple, découvrez comment utiliser des points de terminaison par lots dans des activités Azure Data Factory en vous appuyant sur l’activité Appel Web et l’API REST.
Prérequis
Cet exemple suppose que vous disposez d’un modèle correctement déployé en tant que point de terminaison par lots. En particulier, nous utilisons le classifieur de condition cardiaque créé dans le tutoriel Utilisation de modèles MLflow dans les déploiements par lots.
Ressource Azure Data Factory créée et configurée. Si vous n’avez pas encore créé votre fabrique de données, suivez les étapes de démarrage rapide : Créer une fabrique de données à l’aide du Portail Azure et Azure Data Factory Studio pour en créer une.
Après la création, accédez à la fabrique de données dans le Portail Azure :
Sélectionnez Ouvrir dans la mosaïque Ouvrir Azure Data Factory Studio pour lancer l’application d’intégration de données dans un onglet distinct.
Authentification sur des points de terminaison par lots
Azure Data Factory peut appeler les API REST des points de terminaison par lots à l’aide de l’activité Appel web. Les points de terminaison par lots prennent en charge Microsoft Entra ID pour l’autorisation et, par conséquent, la requête adressée aux API nécessite une gestion d’authentification appropriée.
Vous pouvez utiliser un principal de service ou une identité managée pour l’authentification auprès de points de terminaison par lots. Nous vous recommandons d’utiliser une identité managée car elle simplifie l’utilisation des secrets.
Vous pouvez utiliser une identité managée Azure Data Factory pour communiquer avec les points de terminaison par lots. Dans ce cas, vous devez uniquement vous assurer que votre ressource Azure Data Factory a été déployée avec une identité managée.
Si vous n’avez pas de ressource Azure Data Factory ou si elle a déjà été déployée sans identité managée, suivez les étapes suivantes pour la créer : Identité managée pour Azure Data Factory.
Avertissement
Notez qu’une fois déployée, l’identité de ressource ne peut pas être modifiée dans Azure Data Factory. Une fois la ressource créée, vous devez la recréer si vous devez modifier l’identité associée.
Une fois le déploiement effectué, accordez à votre espace de travail Azure Machine Learning l’accès à l’identité managée de la ressource que vous avez créée, comme expliqué dans Octroyer l’accès. Dans cet exemple, le principal de service nécessite :
- Autorisation dans l’espace de travail pour lire les déploiements par lots et effectuer des actions dessus.
- Autorisations de lecture/écriture dans les magasins de données.
- Autorisations de lecture dans un emplacement cloud (compte de stockage) indiqué en tant qu’entrée de données.
À propos du pipeline
Nous allons créer un pipeline dans Azure Data Factory qui peut appeler un point de terminaison par lots donné sur certaines données. Le pipeline communique avec les points de terminaison par lots Azure Machine Learning à l’aide de REST. Si vous souhaitez obtenir plus d'information sur l'utilisation de l'API REST des points de terminaison de lot, consultez Créer des travaux et des données d'entrée pour des points de terminaison de lot.
Le pipeline se présente comme suit :
Elle est composée des activités suivantes :
- Exécuter Batch-Endpoint : il s’agit d’une activité web qui utilise l’URI de point de terminaison par lots pour l’appeler. Elle transmet l’URI de données d’entrée où se trouvent les données et le fichier de sortie attendu.
- Attendre la fin du travail : il s’agit d’une activité de boucle qui vérifie l’état du travail créé et attend son achèvement, avec l’état Terminé ou Ayant échoué. Cette activité, à son tour, utilise les activités suivantes :
- Vérifier l’état : il s’agit d’une activité web qui interroge l’état de la ressource de travail retournée en réponse à l’activité Exécuter Batch-Endpoint.
- Attendre : il s’agit d’une activité d’attente qui contrôle la fréquence d’interrogation de l’état du travail. Nous définissons une valeur par défaut de 120 (2 minutes).
Le pipeline nécessite que les paramètres suivants soient configurés :
Paramètre | Description | Exemple de valeur |
---|---|---|
endpoint_uri |
URI de scoring du point de terminaison | https://<endpoint_name>.<region>.inference.ml.azure.com/jobs |
poll_interval |
Nombre de secondes d’attente avant de vérifier l’état d’achèvement du travail. La valeur par défaut est 120 . |
120 |
endpoint_input_uri |
Données d’entrée du point de terminaison. Plusieurs types d’entrée de données sont pris en charge. Vérifiez que l’identité de gestion que vous utilisez pour exécuter le travail a accès à l’emplacement sous-jacent. Ou, si vous utilisez des magasins de données, vérifiez que les informations d’identification y sont indiquées. | azureml://datastores/.../paths/.../data/ |
endpoint_input_type |
Type des données d’entrée que vous fournissez. Actuellement, les points de terminaison de lot prennent en charge les dossiers (UriFolder ) et fichiers (UriFile ). La valeur par défaut est UriFolder . |
UriFolder |
endpoint_output_uri |
Fichier de données de sortie du point de terminaison. Il doit s’agir d’un chemin d’accès à un fichier de sortie dans un magasin de données attaché à l’espace de travail Machine Learning. Aucun autre type d’URI n’est pris en charge. Vous pouvez utiliser le magasin de données Azure Machine Learning par défaut, nommé workspaceblobstore . |
azureml://datastores/workspaceblobstore/paths/batch/predictions.csv |
Avertissement
N’oubliez pas que endpoint_output_uri
doit être le chemin d’accès à un fichier qui n’existe pas encore. Sinon, le travail échoue avec l’erreur le chemin d’accès existe déjà.
Étapes
Pour créer ce pipeline dans votre instance Azure Data Factory existante et appeler des points de terminaison, procédez comme suit :
Vérifiez que le calcul sur lequel le point de terminaison de lot s’exécute dispose des autorisations nécessaires pour monter les données qu’Azure Data Factory fournit en tant qu’entrée. Notez que l’accès est toujours accordé par l’identité qui appelle le point de terminaison (dans ce cas, Azure Data Factory). Toutefois, le calcul sur lequel le point de terminaison de lot s’exécute doit avoir l’autorisation de monter le compte de stockage fourni par votre instance Azure Data Factory. Pour plus d’informations, consultez Accès aux services de stockage.
Ouvrez Azure Data Factory Studio et sous Ressources Factory, cliquez sur le signe plus.
Sélectionnez Pipeline>Importer à partir du modèle de pipeline
Vous êtes alors invité à sélectionner un fichier
zip
. Utilisez le modèle suivant si vous utilisez des identités managées ou le modèle suivant si vous utilisez un principal de service.Un aperçu du pipeline s’affiche dans le portail. Cliquez sur Utiliser ce modèle.
Le pipeline est créé pour vous avec le nom Run-BatchEndpoint.
Configurez les paramètres du déploiement par lots que vous utilisez :
Avertissement
Vérifiez que votre point de terminaison par lots a un déploiement par défaut configuré avant de soumettre un travail à celui-ci. Le pipeline créé appelle le point de terminaison et, par conséquent, un déploiement par défaut doit être créé et configuré.
Conseil
Pour une meilleure réutilisation, utilisez le pipeline créé en tant que modèle et appelez-le à partir d’autres pipelines Azure Data Factory en tirant parti de l’activité d’exécution du pipeline. Dans ce cas, ne configurez pas les paramètres dans le pipeline interne, mais passez-les en tant que paramètres à partir du pipeline externe, comme illustré dans l’image suivante :
- Votre pipeline est prêt à être utilisé.
Limites
Lorsque vous appelez des déploiements par lots Azure Machine Learning, tenez compte des limitations suivantes :
Entrées de données
- Seuls les magasins de données Azure Machine Learning ou les comptes de stockage Azure (Stockage Blob Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2) sont pris en charge en tant qu’entrées. Si vos données d’entrée se trouvent dans une autre source, utilisez l’activité de copie Azure Data Factory avant l’exécution du travail par lots pour réceptionner les données dans un magasin compatible.
- Les travaux de point de terminaison par lots n’explorent pas les dossiers imbriqués et ne peuvent donc pas utiliser les structures de dossiers imbriquées. Si vos données sont distribuées dans plusieurs dossiers, notez que vous devrez aplatir la structure.
- Assurez-vous que votre script de scoring fourni dans le déploiement peut gérer les données car il alimentera le travail. Si le modèle est MLflow, lisez la limitation en termes de type de fichier pris en charge pour l’instant à la page Utilisation de modèles MLflow dans les déploiements par lots.
Sorties de données
- Seuls les magasins de données Azure Machine Learning inscrits sont pris en charge pour le moment. Nous vous recommandons d’inscrire le compte de stockage que votre instance Azure Data Factory utilise comme magasin de données dans Azure Machine Learning. De cette façon, vous pourrez réécrire dans le même compte de stockage à partir duquel vous lisez.
- Seuls les comptes Stockage Blob Azure sont pris en charge pour les sorties. Par exemple, Azure Data Lake Storage Gen2 n’est pas pris en charge comme sortie dans les travaux de déploiement par lots. Si vous devez générer les données au niveau d’un autre emplacement/récepteur, utilisez l’activité de copie Azure Data Factory après l’exécution du travail par lots.