Partage via


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

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.

  1. 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.

  2. 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.

  3. 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 :

    1. Autorisation dans l’espace de travail pour lire les déploiements par lots et effectuer des actions dessus.
    2. Autorisations de lecture/écriture dans les magasins de données.
    3. 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 :

Diagram that shows th high level structure of the pipeline we are creating.

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 :

  1. 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.

  2. Ouvrez Azure Data Factory Studio et sous Ressources Factory, cliquez sur le signe plus.

  3. Sélectionnez Pipeline>Importer à partir du modèle de pipeline

  4. 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.

  5. Un aperçu du pipeline s’affiche dans le portail. Cliquez sur Utiliser ce modèle.

  6. Le pipeline est créé pour vous avec le nom Run-BatchEndpoint.

  7. 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 :

Screenshot of the pipeline parameters expected for the resulting pipeline when invoked from another pipeline.

  1. 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.

Étapes suivantes