À propos des divisions de données pour les modèles AutoML

Cette page explique comment Vertex AI utilise les ensembles d'entraînement, de validation et de test de vos données pour entraîner un modèle AutoML et comment contrôler la manière dont vos données sont réparties entre ces trois ensembles. AutoML utilise la répartition de données différemment en fonction du type de données des données d'entraînement.

Cette page décrit les répartitions de données pour les données de types image, texte et vidéo. Pour en savoir plus sur les répartitions de données tabulaires, consultez la page Répartitions de données pour les données tabulaires.

Image

Pour les ensembles de données d'images, AutoML utilise l'ensemble d'entraînement pour entraîner le modèle, et l'ensemble de validation pour valider les résultats renvoyés par le modèle pendant l'entraînement. Une fois l'entraînement terminé, AutoML utilise l'ensemble de test pour fournir les métriques d'évaluation finales.

Texte

Pour les ensembles de données textuelles, les ensembles d'entraînement et de validation permettent de tester différentes combinaisons d'options de prétraitement, d'architecture et d'hyperparamètres. Ces essais génèrent des modèles entraînés qui sont ensuite évalués sur l'ensemble de données de validation afin d'en déterminer la qualité et d'orienter l'exploration d'autres combinaisons d'options.

Lorsque des essais supplémentaires ne permettent plus d'améliorer la qualité, cette version du modèle est considérée comme le modèle entraîné final le plus performant. Ensuite, Vertex AI entraîne deux autres modèles, en utilisant les paramètres et l'architecture déterminés lors de la phase de réglage en parallèle :

  1. Un modèle entraîné avec vos ensembles d'entraînement et de validation

    Vertex AI génère les métriques d'évaluation du modèle sur ce modèle, à l'aide de votre ensemble de données de test. À ce stade du processus, il s'agit de la première fois que l'ensemble de données de test est utilisé. Cette approche permet de s'assurer que les métriques d'évaluation finales reflètent de manière impartiale les performances du modèle entraîné final en production.

  2. Un modèle entraîné avec vos ensembles d'entraînement, de validation et de test

    Ce modèle est celui que vous utilisez pour demander des prédictions.

Vidéo

Pour les ensembles de données vidéo, AutoML utilise l'ensemble d'entraînement pour entraîner le modèle, puis utilise l'ensemble de test pour fournir les métriques d'évaluation finales. L'ensemble de validation n'est pas utilisé pour les ensembles de données vidéo.

Vous pouvez laisser Vertex AI répartir vos données automatiquement. Vos données sont réparties de manière aléatoire dans les trois ensembles par pourcentage. Il s'agit de la méthode la plus simple pour répartir vos données. Cette méthode fonctionne dans la plupart des cas.

Ensemble Texte Image Vidéo
Entraînement 80 80 80
Validation 10 10 N/A
Test 10 10 20

Pour utiliser la répartition des données par défaut, acceptez la valeur par défaut dans la console Google Cloud ou laissez le champ division vide pour l'API.

Si vous souhaitez contrôler la manière dont vos données sont réparties dans des ensembles, vous disposez des options suivantes :

Vous ne choisissez qu'une de ces options ; vous faites votre choix lorsque vous entraînez le modèle. Certaines de ces options nécessitent de modifier les données d'entraînement (par exemple, l'étiquette ml_use). L'inclusion de données ou d'étiquettes pour les options de répartition des données ne vous oblige pas à les utiliser. Vous pouvez toujours choisir une autre option lorsque vous entraînez votre modèle.

Répartition manuelle pour les données non structurées

La répartition manuelle est également appelée "répartition prédéfinie".

Pour utiliser votre étiquette ml_use afin de contrôler votre répartition des données, vous devez avoir défini l'étiquette ml_use sur vos données.

Définir une valeur pour le libellé "ml_use"

Vous pouvez définir l'étiquette ml_use pour les données vision, vidéo et texte au moment de l'importation des données (par élément de données ou pour l'ensemble du fichier d'importation) ou après l'importation via Google Cloud Console.

Définir "ml_use" sur des éléments de données individuels lors de l'importation

Vous pouvez définir l'étiquette ml_use sur chaque élément de données en incluant une valeur pour le champ aiplatform.googleapis.com/ml_use dans vos données JSON Lines, ou en définissant la valeur de la première colonne du fichier CSV. Pour en savoir plus, consultez la section spécifique à la préparation des données pour votre type de données.

Si l'un de vos éléments de données est répété dans vos données (si la même vidéo, la même image ou le même extrait de texte apparaît plusieurs fois dans votre fichier d'importation), Vertex AI utilise la valeur ml_use pour le premier élément de données qu'il rencontre, et ignore toutes les valeurs ml_use suivantes. Le premier élément rencontré n'est pas nécessairement celui qui est le plus proche du début du fichier d'importation.

Définir "ml_use" pour l'ensemble des fichiers d'importation

Si vos données peuvent être triées dans différents fichiers d'importation par valeur ml_use, vous pouvez définir la valeur ml_use pour l'ensemble du fichier d'importation à l'aide du menu déroulant par fichier lorsque vous importez des fichiers à l'aide de la console Google Cloud ou en utilisant le champ de mappage dataItemLabels dans la méthode datasets.import.

Si vous définissez ml_use pour un fichier d'importation et que ce fichier contient également des valeurs ml_use, les valeurs ml_use du fichier sont prioritaires sur la valeur à l'échelle du fichier.

Définir "ml_use" après importation

Après avoir importé vos données, vous pouvez définir ou mettre à jour la valeur ml_use de certains éléments de données dans la console Google Cloud en sélectionnant un ou plusieurs éléments dans la liste, puis en utilisant le menu déroulant Attribuer l'utilisation de ML.

Si vous réimportez un fichier de données, même si les valeurs ml_use ont changé, la valeur ml_use n'est pas mise à jour. Vous ne pouvez pas mettre à jour les valeurs ml_use après l'importation à l'aide de l'API Vertex AI.

Utiliser l'étiquette "ml_use"

Lorsque vous entraînez votre modèle, vous spécifiez Manuel (Avancé) pour la répartition des données dans la console Google Cloud. Si vous effectuez l'entraînement à l'aide de l'API Vertex AI, vous utilisez l'objet FilterSplit en spécifiant labels.aiplatform.googleapis.com/ml_use=training pour le filtre d'entraînement, labels.aiplatform.googleapis.com/ml_use=validation pour le filtre de validation et labels.aiplatform.googleapis.com/ml_use=test pour le filtre de test. Exemple :

model = job.run(
dataset=dataset,
model_display_name=_name,
training_filter_split="labels.aiplatform.googleapis.com/ml_use=training",
validation_filter_split="labels.aiplatform.googleapis.com/ml_use=validation",
test_filter_split="labels.aiplatform.googleapis.com/ml_use=test")

Tous les éléments de données ayant une valeur ml_use sont attribués à l'ensemble spécifié. Les éléments de données pour lesquels ml_use n'est pas défini sont exclus du processus d'entraînement.

Répartition des filtres de données

Vous pouvez utiliser d'autres étiquettes (en plus de "ml-use") et d'autres champs pour répartir vos données à l'aide de l'objet FilterSplit dans l'API Vertex AI. Par exemple, vous pouvez définir trainingFilter sur labels.flower=rose, validationFilter sur labels.flower=daisy et testFilter sur labels.flower=dahlia. Avec ce paramétrage, toutes les données portant l'étiquette rose sont ajoutées à l'ensemble d'entraînement, toutes les données portant l'étiquette daisy à l'ensemble de validation et toutes les données portant l'étiquette dahlia à l'ensemble de test.

Si vous effectuez un filtrage sur plusieurs champs, un élément de données peut correspondre à plusieurs filtres. Dans ce cas, l'ensemble d'entraînement est prioritaire, suivi de l'ensemble de validation, suivi de l'ensemble de test. En d'autres termes, un élément n'est placé dans l'ensemble de test que s'il correspond au filtre de l'ensemble de test, mais ne correspond pas aux filtres d'entraînement ni de validation. Si un élément ne correspond à aucun filtre pour aucun des ensembles, il est exclu de l'entraînement.

N'utilisez pas de catégories pour votre répartition des données en fonction des prédictions du modèle. Chacun de vos ensembles doit refléter la plage de données utilisée par le modèle pour effectuer des prédictions. (Par exemple, n'utilisez pas les filtres décrits précédemment pour un modèle supposé classer des images par type de fleur.)

Si vous ne souhaitez pas qu'un filtre corresponde à des éléments, définissez-le sur "-" (signe moins).

Répartition mathématique

La division mathématique est également appelée "répartition par fraction".

Par défaut, vos données sont réparties de manière aléatoire dans les ensembles en fonction des pourcentages par défaut de votre type de données. Vous pouvez modifier les pourcentages comme vous le souhaitez, à condition que la somme de leurs valeurs soit égale à 100 (pour l'API Vertex AI, vous utilisez des fractions dont le total doit être égal à 1,0).

Pour modifier les pourcentages (fractions), utilisez l'objet FractionSplit pour définir vos fractions. Pour les types de données d'image, de texte et de vidéo, vous pouvez également utiliser la console Google Cloud pour mettre à jour vos pourcentages de répartition lorsque vous entraînez votre modèle.