- Notes de publication
- Avant de commencer
- Démarrage
- Installation d'Automation Suite
- Migration et mise à niveau
- Projets
- Jeux de données
- Paquets ML
- Pipelines
- Compétences ML
- Journaux ML
- Document Understanding dans AI Center
- Comment
- Guide de dépannage de base
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é.
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é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 variabletest_data_directory
de répertoire dans la fonctionprocess_data
. Si vous ne sélectionnez pas de dossier et que votreprocess_data
n'écrit pas danstest_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 fonctiontrain()
. La plupart des utilisateurs n'auront jamais à le remplacer via l'interface utilisateur et peuvent simplement écrire des données dansos.environ['training_data_directory']
dans la fonctionprocess_data
et peuvent simplement s'attendre à ce que l'argument data_directory danstrain(self, data_directory
soit appelé avecos.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 fonctionevaluate()
. La plupart des utilisateurs n'auront jamais à le remplacer via l'interface utilisateur et peuvent simplement écrire des données dansos.environ['test_data_directory']
dans la fonctionprocess_data
et peuvent simplement s'attendre à ce que l'argument data_directory dansevaluate(self, data_directory
soit appelé avecos.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 cheminos.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, letraining_data_directory
sera téléchargé à la fin de l'exécution du pipeline en tant que sortie du pipeline sous le répertoiretraining_data_directory
.save_test_data
, avec la valeur par défaut true : s'il est défini sur true, letest_data_directory
sera téléchargé à la fin de l'exécution du pipeline en tant que sortie du pipeline sous le répertoiretest_data_directory
.
Selon votre choix de sélectionner ou non un ensemble de données d'évaluation, vous pouvez créer des pipelines complets comme suit :
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.
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é.
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). Leprocess_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 dossiertraining_data_directory
. - Le dossier Test, visible uniquement si
save_training_data
a été défini sur true, est une copie du dossiertest_data_directory
.
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.
- Copiez la version 1.1 du package dans
~/mlpackage
. - Créez un répertoire appelé
./dataset
. - Copiez le contenu de l'ensemble de données d'entrée dans
./dataset
. - 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
. - Définissez les variables d'environnement
training_data_directory=./dataset/training
ettest_data_directory=./dataset/test
. - 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']) - Conservez le contenu du
~/mlpackage
en tant que package version 1.2. Conservez les artefacts s'ils sont écrits, les données d'instantané sisave_data
est défini sur true.Remarque : L'existence des variables d'environnementtraining_data_directory
ettest_data_directory
signifie queprocess_data
peut utiliser ces variables pour fractionner les données de manière dynamique.
_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>"
}
}
}