ai-center
2020.10
false
AI Center
Automation CloudAutomation SuiteStandalone
Last updated 6 juin 2024

Pipelines complets

Un pipeline complet est utilisé pour former un nouveau modèle d'apprentissage automatique et évaluer les performances de ce nouveau modèle, le tout en une seule fois. De plus, une étape de prétraitement est exécutée avant l'entraînement, ce qui permet la manipulation des données/l'entraînement d'un modèle d'apprentissage automatique entraîné.

Pour utiliser ce pipeline, le package doit contenir du code pour traiter les données, entraîner, évaluer et enregistrer un modèle (les fonctions process_data(), train (), evaluate() et save() dans le fichier train.py). Ce code, avec un ensemble de données ou un sous-dossier dans un ensemble de données, et éventuellement un ensemble d'évaluation, produisent une nouvelle version de package, un score (le retour de la fonction evaluate() pour la nouvelle version du modèle) et toutes les sorties arbitraires que l'utilisateur souhaite conserver en plus du score.

Création de pipelines complets

Créez un nouveau pipeline complet comme décrit ici. Assurez-vous de fournir les informations spécifiques au pipeline complet suivantes :

  • Dans le champ Type de pipeline (Pipeline type), sélectionnez Exécution de pipeline complet (Full Pipeline run).
  • Dans le champ Choisir un ensemble de données d'entrée (Choose input dataset), sélectionnez un ensemble de données ou un dossier à partir duquel vous souhaitez importer des données pour un entraînement complet. Tous les fichiers de cet ensemble de données/dossier doivent être disponibles localement pendant le runtime du pipeline sur le chemin stocké dans la variable data_directory.
  • Facultativement, dans le champ Choisir un ensemble de données d'évaluation (Choose evaluation dataset), sélectionnez un ensemble de données ou un dossier à partir duquel vous souhaitez importer des données pour évaluation. Tous les fichiers de cet ensemble de données/dossier doivent être disponibles localement pendant le runtime du pipeline sur le chemin stocké dans la variable test_data_directory. Si aucun dossier n'est sélectionné, il est prévu que votre pipeline écrive quelque chose dans la variable test_data_directory de répertoire dans la fonction process_data. Si vous ne sélectionnez pas de dossier et que votre process_data n'écrit pas dans test_data_directory, le répertoire transféré vers la fonction d'évaluation sera vide.
  • Dans la section Entrer les paramètres (Enter parameters), entrez toutes les variables d'environnement définies et utilisées par votre pipeline, le cas échéant. Les variables d'environnement sont :
    • training_data_directory, avec la valeur par défaut dataset/training : définit l'emplacement où les données d'entraînement sont accessibles localement pour le pipeline. Ce répertoire sert d'entrée à la fonction train(). La plupart des utilisateurs n'auront jamais à le remplacer via l'interface utilisateur et peuvent simplement écrire des données dans os.environ['training_data_directory'] dans la fonction process_data et peuvent simplement s'attendre à ce que l'argument data_directory dans train(self, data_directory soit appelé avec os.environ['training_data_directory'].
    • test_data_directory avec la valeur par défaut dataset/test : définit l'emplacement où les données de test sont accessibles localement pour le pipeline. Ce répertoire sert d'entrée à la fonction evaluate(). La plupart des utilisateurs n'auront jamais à le remplacer via l'interface utilisateur et peuvent simplement écrire des données dans os.environ['test_data_directory'] dans la fonction process_data et peuvent simplement s'attendre à ce que l'argument data_directory dans evaluate(self, data_directory soit appelé avec os.environ['test_data_directory'].
    • artifacts_directory, avec des artefacts de valeur par défaut : cela définit le chemin d'accès à un répertoire qui sera conservé en tant que données auxiliaires liées à ce pipeline. La plupart des utilisateurs, voire la totalité, n'auront jamais besoin de le remplacer via l'interface utilisateur. Tout peut être enregistré pendant l'exécution du pipeline, y compris les images, les fichiers PDF et les sous-dossiers. Concrètement, toutes les données que votre code écrit dans le répertoire spécifié par le chemin os.environ['artifacts_directory'] seront téléchargées à la fin de l'exécution du pipeline et seront visibles à partir de la page Détails du pipeline (Pipeline details).
    • save_training_data, avec la valeur par défaut true : s'il est défini sur true, le training_data_directory sera téléchargé à la fin de l'exécution du pipeline en tant que sortie du pipeline sous le répertoire training_data_directory.
    • save_test_data, avec la valeur par défaut true : s'il est défini sur true, le test_data_directory sera téléchargé à la fin de l'exécution du pipeline en tant que sortie du pipeline sous le répertoire test_data_directory.

Sélection explicite des données d'évaluation

Regardez la vidéo suivante pour découvrir comment créer un pipeline complet avec le package nouvellement formé version 1.1. Assurez-vous de sélectionner le même ensemble de données (dans notre exemple, tutorialdataset) à la fois comme ensemble de données d'entrée et comme ensemble de données d'évaluation.



Sans sélection explicite des données d'évaluation

Regardez la vidéo suivante pour découvrir comment créer un pipeline complet avec le package nouvellement formé version 1.1. Sélectionnez l'ensemble de données d'entrée, mais laissez l'ensemble de données d'évaluation non sélectionné.



Résultats d'une exécution d'un pipeline complet

Remarque : l'exécution du pipeline peut prendre un certain temps. Revenez-y après un certain temps pour voir son état.
Une fois le pipeline exécuté, sur la page Pipelines, l'état du pipeline passait sur Réussite (Successful). La page Détails du pipeline (Pipeline Details) affiche les fichiers et dossiers arbitraires liés à l'exécution du pipeline.


  • La fonction train() est entraînée sur train.csv, et non sur le contenu inchangé du dossier de données (example1.txt, et example2.txt). Le process_data peut être utilisé pour diviser dynamiquement les données en fonction de tous les paramètres définis par l'utilisateur.
  • Le premier pipeline complet exécute des évaluations sur un répertoire avec example1.txt, example2.txt, et test.csv. Le deuxième pipeline complet exécute des évaluations sur un répertoire avec uniquement test.csv. C'est la différence retrouvée lorsque l'on ne sélectionne pas explicitement un ensemble d'évaluation lors de la création de la deuxième exécution du pipeline complet. De cette façon, vous pouvez obtenir des évaluations sur les nouvelles données des robots UiPath, ainsi que diviser dynamiquement les données déjà présentes dans votre projet.
  • Chaque composant individuel peut écrire des artefacts arbitraires dans le cadre d'un pipeline (histogrammes, journaux Tensorboard, tracés de distribution, etc.).
  • Le fichier zip du paquet ML est la nouvelle version du package générée automatiquement par le pipeline d'entraînement.
  • Le dossier Artifacts, visible uniquement s'il n'est pas vide, est le dossier regroupant tous les artefacts générés par le pipeline, et il est enregistré sous le dossier artifacts_directory.
  • Le dossier Training, visible uniquement si save_training_data a été défini sur true, est une copie du dossier training_data_directory.
  • Le dossier Test, visible uniquement si save_training_data a été défini sur true, est une copie du dossier test_data_directory.

Analogie conceptuelle pour construire vos propres pipelines complets

Voici une exécution conceptuellement analogue d'un pipeline complet sur un package, par exemple la version 1.1, la sortie d'un pipeline d'entraînement sur la version 1.0.

Attention : ceci est un exemple simplifié. Son objectif est d'illustrer comment les ensembles de données et les packages interagissent dans un pipeline complet. Les étapes sont simplement conceptuelles et ne représentent pas le fonctionnement de la plate-forme.
  1. Copiez la version 1.1 du package dans ~/mlpackage.
  2. Créez un répertoire appelé ./dataset.
  3. Copiez le contenu de l'ensemble de données d'entrée dans ./dataset.
  4. Si l'utilisateur a défini quelque chose dans le champ Choisir l'ensemble de données d'évaluation (Choose evaluation dataset), copiez cet ensemble de données d'évaluation et placez-le dans ./dataset/test.
  5. Définissez les variables d'environnement training_data_directory=./dataset/training et test_data_directory=./dataset/test.
  6. Exécutez le code python suivant :
    from train import Main 
    m = Main() 
    m.process_data('./dataset') 
    m.evaluate(os.environ['test_data_directory']) 
    m.train(os.environ['training_data_directory']) 
    m.evaluate(os.environ['test_data_directory'])from train import Main 
    m = Main() 
    m.process_data('./dataset') 
    m.evaluate(os.environ['test_data_directory']) 
    m.train(os.environ['training_data_directory']) 
    m.evaluate(os.environ['test_data_directory'])
  7. Conservez le contenu du ~/mlpackage en tant que package version 1.2. Conservez les artefacts s'ils sont écrits, les données d'instantané si save_data est défini sur true.
    Remarque : L'existence des variables d'environnement training_data_directory et test_data_directory signifie que process_data peut utiliser ces variables pour fractionner les données de manière dynamique.

Sorties du pipeline

Le fichier _results.json contient un résumé de l'exécution du pipeline, exposant toutes les entrées/sorties et les temps d'exécution pour un pipeline complet.
{
    "parameters": {
        "pipeline": "< Pipeline_name >",
        "inputs": {
            "package": "<Package_name>",
            "version": "<version_number>",
      "input_data": "<storage_directory>",       
            "evaluation_data": "<storage_directory>/None",
            "gpu": "True/False"
        },
        "env": {
            "key": "value",
            ...
        }
    },
    "run_summary": {
     "execution_time": <time>, #in seconds 
     "start_at": <timestamp>, #in seconds 
     "end_at": <timestamp>, #in seconds 
     "outputs": {
        "previous_score": <previous_score>, #float
        "current_score": <current_score>, #float
        "training_data": "<training_storage_directory>/None", 
        "test_data": "<test_storage_directory>/None",
        "artifacts_data": "<artifacts_storage_directory>",
        "package": "<Package_name>",
        "version": "<new_version>"  
        }
    }
}{
    "parameters": {
        "pipeline": "< Pipeline_name >",
        "inputs": {
            "package": "<Package_name>",
            "version": "<version_number>",
      "input_data": "<storage_directory>",       
            "evaluation_data": "<storage_directory>/None",
            "gpu": "True/False"
        },
        "env": {
            "key": "value",
            ...
        }
    },
    "run_summary": {
     "execution_time": <time>, #in seconds 
     "start_at": <timestamp>, #in seconds 
     "end_at": <timestamp>, #in seconds 
     "outputs": {
        "previous_score": <previous_score>, #float
        "current_score": <current_score>, #float
        "training_data": "<training_storage_directory>/None", 
        "test_data": "<test_storage_directory>/None",
        "artifacts_data": "<artifacts_storage_directory>",
        "package": "<Package_name>",
        "version": "<new_version>"  
        }
    }
}

Gouvernance du modèle

Comme dans les autres types de pipelines, les données d'entraînement et d'évaluation peuvent être conservées dans un instantané si vous définissez les paramètres save_training_data = true et save_test_data = true.

Cette page vous a-t-elle été utile ?

Obtenez l'aide dont vous avez besoin
Formation RPA - Cours d'automatisation
Forum de la communauté UiPath
Uipath Logo White
Confiance et sécurité
© 2005-2024 UiPath Tous droits réservés.