Entraîner un modèle avec AutoML de bout en bout

Cette page explique comment entraîner un modèle de classification ou de régression à partir d'un ensemble de données tabulaire avec le workflow tabulaire pour AutoML de bout en bout.

Avant de commencer

Avant d'entraîner un modèle, procédez comme suit :

Si vous recevez une erreur liée aux quotas lorsque vous exécutez le workflow tabulaire pour AutoML de bout en bout, vous devrez peut-être demander un quota plus élevé. Pour en savoir plus, consultez Gérer les quotas des workflows tabulaires.

Obtenir l'URI du résultat du précédent réglage des hyperparamètres

Si vous avez déjà effectué une exécution de workflow AutoML de bout en bout, utilisez le résultat du réglage d'hyperparamètres de l'exécution précédente pour économiser le temps et les ressources d'entraînement. Trouvez le résultat du précédent réglage des hyperparamètres en utilisant la console Google Cloud ou en le chargeant de manière programmatique avec l'API.

Console Google Cloud

Pour rechercher l'URI du résultat du réglage des hyperparamètres à l'aide de la console Google Cloud , procédez comme suit :

  1. Dans la section Vertex AI de la console Google Cloud , accédez à la page Pipelines.

    Accéder à la page "Pipelines"

  2. Sélectionnez l'onglet Exécutions.

  3. Sélectionnez l'exécution du pipeline que vous souhaitez utiliser.

  4. Sélectionnez Développer les artefacts.

  5. Cliquez sur le composant exit-handler-1.

  6. Cliquez sur le composant stage_1_tuning_result_artifact_uri_empty.

  7. Recherchez le composant automl-tabular-cv-trainer-2.

  8. Cliquez sur l'artefact tuning_result_output associé.

  9. Sélectionnez l'onglet Informations sur le nœud.

  10. Copiez l'URI à utiliser à l'étape Entraîner un modèle.

Résultat de la recherche d'architecture

API : Python

L'exemple de code suivant montre comment charger le résultat du réglage des hyperparamètres à l'aide de l'API. La variable job fait référence à l'exécution précédente du pipeline d'entraînement de modèle.


def get_task_detail(
  task_details: List[Dict[str, Any]], task_name: str
) -> List[Dict[str, Any]]:
  for task_detail in task_details:
      if task_detail.task_name == task_name:
          return task_detail

pipeline_task_details = job.gca_resource.job_detail.task_details

stage_1_tuner_task = get_task_detail(
    pipeline_task_details, "automl-tabular-stage-1-tuner"
)
stage_1_tuning_result_artifact_uri = (
    stage_1_tuner_task.outputs["tuning_result_output"].artifacts[0].uri
)

Entraîner un modèle

Console Google Cloud

Pour entraîner un modèle à l'aide de la console Google Cloud , procédez comme suit :

  1. Dans la section Vertex AI de la console Google Cloud , accédez à la page Pipelines.

    Accéder à la page "Pipelines"

  2. Sélectionnez l'onglet Galerie de modèles.

  3. Dans la fiche AutoML pour la classification/régression tabulaire, cliquez sur Créer une exécution.

  4. Sur la page Détails de l'exécution, effectuez la configuration suivante :

    1. Saisissez un nom d'exécution de pipeline.
    2. Facultatif : Si vous souhaitez définir le compte de service Vertex AI Pipelines ou le compte de service du nœud de calcul Dataflow, ouvrez les options avancées. En savoir plus sur les comptes de service
    3. Cliquez sur Continuer.

  5. Sur la page Configuration de l'environnement d'exécution, effectuez la configuration suivante :

    1. Saisissez un bucket Cloud Storage ou un dossier du bucket à utiliser comme répertoire de sortie racine. Ce répertoire sera utilisé pour enregistrer les fichiers intermédiaires, tels que l'ensemble de données matérialisé et le modèle. N'oubliez pas de nettoyer le répertoire une fois l'entraînement terminé et le modèle et d'autres artefacts importants copiés vers un autre bucket Cloud Storage. Vous pouvez également définir une valeur TTL (Time To Live) pour le bucket Cloud Storage.

      Les buckets de votre projet sont listés dans la section Cloud Storage de la console Google Cloud .

      Accéder à la page "Buckets"

    2. Cliquez sur Continuer.

  6. Sur la page Méthode d'entraînement, effectuez la configuration suivante :

    1. Sélectionnez le nom de l'ensemble de données avec lequel vous souhaitez entraîner le modèle.
    2. Sélectionnez votre colonne cible. La colonne cible correspond à la valeur prédite par le modèle. En savoir plus sur les exigences concernant la colonne cible
    3. Saisissez le nom à afficher pour votre nouveau modèle.
    4. Facultatif : Pour choisir comment répartir les données entre les ensembles d'entraînement, de test et de validation, ouvrez les options avancées. Vous avez le choix entre les options de répartition des données suivantes :
      • Aléatoire (par défaut) : Vertex AI sélectionne de manière aléatoire les lignes associées à chacun des ensembles de données. Par défaut, Vertex AI sélectionne 80 % des lignes de données pour l'ensemble d'entraînement, 10 % pour l'ensemble de validation et 10 % pour l'ensemble de test. Définissez le pourcentage de lignes de données que vous souhaitez associer à chacun des ensembles de données.
      • Manuelle : Vertex AI sélectionne des lignes de données pour chacun des ensembles de données en fonction des valeurs d'une colonne de répartition des données. Indiquez le nom de la colonne de répartition des données.
      • Chronologique : Vertex AI répartit les données en fonction du code temporel dans une colonne de date/heure. Indiquez le nom de la colonne de date/heure. Vous pouvez également définir le pourcentage de lignes de données que vous souhaitez associer à l'ensemble d'entraînement, à l'ensemble de validation et à l'ensemble de test.
      • Stratifiée : Vertex AI sélectionne de manière aléatoire les lignes associées à chacun des ensembles de données, mais conserve la distribution des valeurs de la colonne cible. Indiquez le nom de la colonne cible. Vous pouvez également définir le pourcentage de lignes de données que vous souhaitez associer à l'ensemble d'entraînement, à l'ensemble de validation et à l'ensemble de test.
      En savoir plus sur les répartitions de données
    5. Facultatif : Vous pouvez exécuter le pipeline sans la recherche d'architecture. Si vous choisissez l'option Ignorer la recherche d'architecture, vous êtes invité à fournir un ensemble d'hyperparamètres issus d'une précédente exécution du pipeline sur la page Options d'entraînement.
    6. Cliquez sur Continuer.

  7. Sur la page Options d'entraînement, effectuez la configuration suivante :

    1. Facultatif : Cliquez sur Générer des statistiques. La génération de statistiques remplit les menus déroulants Transformation.
    2. Examinez votre liste de colonnes et excluez de l'entraînement toutes celles qui ne doivent pas être servir à entraîner le modèle.
    3. Examinez les transformations sélectionnées pour les caractéristiques incluses et vérifiez si les données non valides sont autorisées. Effectuez ensuite les modifications requises. En savoir plus sur les transformations et les données non valides
    4. Si vous avez choisi d'ignorer la recherche d'architecture sur la page Méthode d'entraînement, indiquez le chemin d'accès au résultat du réglage des hyperparamètres d'une précédente exécution du pipeline.
    5. Facultatif : Si vous souhaitez spécifier la colonne de pondération, ouvrez les options avancées et effectuez votre sélection. En savoir plus sur les colonnes de pondération
    6. Facultatif : Si vous souhaitez modifier l'objectif d'optimisation par défaut, ouvrez les options avancées et effectuez votre sélection. En savoir plus sur les objectifs d'optimisation
    7. Facultatif : Si vous choisissez d'effectuer la recherche d'architecture sur la page Méthode d'entraînement, vous pouvez spécifier le nombre d'essais parallèles. Ouvrez les options avancées et saisissez votre valeur.
    8. Facultatif : Vous pouvez fournir des valeurs fixes pour un sous-ensemble des hyperparamètres. Vertex AI recherche les valeurs optimales pour les hyperparamètres non fixes restants. Cette option est idéale si vous avez une préférence forte concernant le type de modèle. Vous pouvez choisir entre les réseaux de neurones et les arbres de décision à boosting pour le type de modèle. Ouvrez les options avancées et fournissez un remplacement de spécification d'étude au format JSON.

      Par exemple, si vous souhaitez définir le type de modèle sur les réseaux de neurones, saisissez la commande suivante :

      [
        {
          "parameter_id": "model_type",
          "categorical_value_spec": {
            "values": ["nn"]
          }
        }
      ]
      

    9. Cliquez sur Continuer.

  8. Sur la page Options de calcul et tarifs, effectuez la configuration suivante :

    1. Saisissez la durée maximale (en heures) d'entraînement du modèle. En savoir plus sur la tarification
    2. Facultatif : Dans la section Paramètres de calcul, vous pouvez configurer les types de machines et le nombre de machines pour chaque étape du workflow. Cette option est idéale si vous disposez d'un ensemble de données volumineux et que vous souhaitez optimiser le matériel de la machine en conséquence.

  9. Cliquez sur Envoyer.

API : Python

L'exemple de code suivant montre comment exécuter un pipeline d'entraînement de modèle :

job = aiplatform.PipelineJob(
    ...
    template_path=template_path,
    parameter_values=parameter_values,
    ...
)
job.run(service_account=SERVICE_ACCOUNT)

Le paramètre facultatif service_account dans job.run() vous permet de définir le compte de service Vertex AI Pipelines sur le compte de votre choix.

Le pipeline et les valeurs des paramètres sont définis par la fonction suivante. Les données d'entraînement peuvent être un fichier CSV dans Cloud Storage ou une table dans BigQuery.

template_path, parameter_values = automl_tabular_utils.get_automl_tabular_pipeline_and_parameters(...)

Voici un sous-ensemble de paramètres get_automl_tabular_pipeline_and_parameters :

Nom du paramètre Type Définition
data_source_csv_filenames Chaîne URI d'un fichier CSV stocké dans Cloud Storage.
data_source_bigquery_table_path Chaîne URI d'une table BigQuery.
dataflow_service_account Chaîne (Facultatif) Compte de service personnalisé permettant d'exécuter des jobs Dataflow. Le job Dataflow peut être configuré pour utiliser des adresses IP privées et un sous-réseau VPC spécifique. Ce paramètre sert de valeur de remplacement pour le compte de service de nœud de calcul Dataflow par défaut.
prediction_type Chaîne Choisissez classification pour entraîner un modèle de classification ou regression pour entraîner un modèle de régression.
optimization_objective Chaîne Si vous entraînez un modèle de classification binaire, l'objectif par défaut est l'AUC ROC. Si vous entraînez un modèle de régression, l'objectif par défaut est la RMSE. Si vous souhaitez définir un autre objectif d'optimisation pour votre modèle, choisissez l'une des options indiquées dans Objectifs d'optimisation pour les modèles de classification ou de régression.
enable_probabilistic_inference Booléen Si vous entraînez un modèle de régression et que vous définissez cette valeur sur true, Vertex AI modélise la distribution de probabilité de l'inférence. L'inférence probabiliste peut améliorer la qualité du modèle en gérant les données comportant du bruit et en quantifiant l'incertitude. Si des quantiles sont spécifiés, Vertex AI renvoie également les quantiles de la distribution.
quantiles Liste[float] Quantiles à utiliser pour l'inférence probabiliste. Un quantile indique la probabilité qu'une cible soit inférieure à une valeur donnée. Fournissez une liste de cinq nombres uniques au maximum, compris entre 0 et 1 (non inclus).

Options de personnalisation du workflow

Vous pouvez personnaliser le workflow AutoML de bout en bout en définissant les valeurs d'argument transmises lors de la définition du pipeline. Vous pouvez personnaliser votre workflow de différentes manières :

  • Forcer l'espace de recherche
  • Configurer le matériel
  • Distiller le modèle
  • Ignorer la recherche d'architecture

Forcer l'espace de recherche

Le paramètre get_automl_tabular_pipeline_and_parameters suivant permet de fournir des valeurs fixes pour un sous-ensemble des hyperparamètres. Vertex AI recherche les valeurs optimales pour les hyperparamètres non fixes restants. Utilisez ce paramètre si vous souhaitez choisir entre les réseaux de neurones et les arbres de décision à boosting pour le type de modèle.

Nom du paramètre Type Définition
study_spec_parameters_override Liste[Dict[String, Any]] (Facultatif) Sous-ensemble personnalisé d'hyperparamètres. Ce paramètre configure le composant automl-tabular-stage-1-tuner du pipeline.

Le code suivant montre comment définir le type de modèle sur les réseaux de neurones :

study_spec_parameters_override = [
  {
    "parameter_id": "model_type",
    "categorical_value_spec": {
      "values": ["nn"] # The default value is ["nn", "boosted_trees"], this reduces the search space
    }
  }
]

Configurer le matériel

Les paramètres get_automl_tabular_pipeline_and_parameters suivants permettent de configurer les types et le nombre de machines pour l'entraînement. Cette option est idéale si vous disposez d'un ensemble de données volumineux et que vous souhaitez optimiser le matériel de la machine en conséquence.

Nom du paramètre Type Définition
stage_1_tuner_worker_pool_specs_override Dict[String, Any] (Facultatif) Configuration personnalisée des types et du nombre de machines pour l'entraînement. Ce paramètre configure le composant automl-tabular-stage-1-tuner du pipeline.
cv_trainer_worker_pool_specs_override Dict[String, Any] (Facultatif) Configuration personnalisée des types et du nombre de machines pour l'entraînement. Ce paramètre configure le composant automl-tabular-stage-1-tuner du pipeline.

Le code suivant montre comment définir le type de machine n1-standard-8 pour le nœud principal TensorFlow et le type de machine n1-standard-4 pour le nœud d'évaluateur TensorFlow :

worker_pool_specs_override = [
  {"machine_spec": {"machine_type": "n1-standard-8"}}, # override for TF chief node
  {},  # override for TF worker node, since it's not used, leave it empty
  {},  # override for TF ps node, since it's not used, leave it empty
  {
    "machine_spec": {
        "machine_type": "n1-standard-4" # override for TF evaluator node
    }
  }
]

Distiller le modèle

Le paramètre get_automl_tabular_pipeline_and_parameters suivant permet de créer une version plus petite du modèle de groupe. Un modèle plus petit réduit la latence et les coûts liés à l'inférence.

Nom du paramètre Type Définition
run_distillation Booléen Si la valeur est TRUE, ce paramètre crée une version plus petite du modèle de groupe.

Ignorer la recherche d'architecture

Le paramètre get_automl_tabular_pipeline_and_parameters suivant permet d'exécuter le pipeline sans la recherche d'architecture et de fournir un ensemble d'hyperparamètres issus d'une précédente exécution du pipeline.

Nom du paramètre Type Définition
stage_1_tuning_result_artifact_uri Chaîne (Facultatif) URI du résultat du réglage des hyperparamètres issu d'une précédente exécution du pipeline.

Objectifs d'optimisation pour les modèles de classification ou de régression

Lorsque vous entraînez un modèle, Vertex AI sélectionne un objectif d'optimisation par défaut en fonction du type de modèle et du type de données utilisé pour la colonne cible.

Les modèles de classification sont les mieux adaptés pour les objectifs suivants :
Objectif d'optimisation Valeur de l'API Utilisez cet objectif si vous voulez...
AUC ROC maximize-au-roc Maximiser l'aire sous la courbe ROC (Receiver Operating Characteristic). Distingue les classes. Valeur par défaut pour la classification binaire.
Perte logistique minimize-log-loss Maintenir les probabilités d'inférence aussi précises que possible. Seul objectif compatible pour la classification à classes multiples.
AUC PR maximize-au-prc Maximiser l'aire sous la courbe de précision/rappel. Optimise les résultats des inférences pour la classe minoritaire.
Précision pour la valeur de rappel maximize-precision-at-recall Optimiser la précision à une valeur de rappel spécifique.
Rappel pour la valeur de précision maximize-recall-at-precision Optimiser le rappel à une valeur de précision spécifique.
Les modèles de régression sont les mieux adaptés pour les objectifs suivants :
Objectif d'optimisation Valeur de l'API Utilisez cet objectif si vous voulez…
RMSE minimize-rmse Minimiser la racine carrée de l'erreur quadratique moyenne (RMSE). Capturer les valeurs les plus extrêmes avec précision. Valeur par défaut.
EAM minimize-mae Minimiser l'erreur absolue moyenne (EAM). Affiche les valeurs extrêmes comme des anomalies ayant moins d'incidence sur le modèle.
RMSLE minimize-rmsle Minimiser la racine carrée de l'erreur logarithmique quadratique moyenne (RMSLE). Pénalise l'erreur sur la taille relative plutôt que sur la valeur absolue. Utile lorsque les valeurs prédites et réelles peuvent être très élevées.

Étapes suivantes