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 :
- Préparer les données d'entraînement
- Créer un ensemble de données Vertex AI
Activer les API suivantes : Vertex AI, Dataflow, Compute Engine et Cloud Storage
Assurez-vous que les rôles nécessaires sont attribués aux comptes de service de votre projet. (Pour afficher les comptes de service et les rôles qui leur sont associés, accédez à la page IAM et cochez la case "Inclure les attributions de rôles fournies par Google".)
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 :
Dans la section Vertex AI de la console Google Cloud , accédez à la page Pipelines.
Sélectionnez l'onglet Exécutions.
Sélectionnez l'exécution du pipeline que vous souhaitez utiliser.
Sélectionnez Développer les artefacts.
Cliquez sur le composant exit-handler-1.
Cliquez sur le composant stage_1_tuning_result_artifact_uri_empty.
Recherchez le composant automl-tabular-cv-trainer-2.
Cliquez sur l'artefact tuning_result_output associé.
Sélectionnez l'onglet Informations sur le nœud.
Copiez l'URI à utiliser à l'étape Entraîner un modèle.
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 :
Dans la section Vertex AI de la console Google Cloud , accédez à la page Pipelines.
Sélectionnez l'onglet Galerie de modèles.
Dans la fiche AutoML pour la classification/régression tabulaire, cliquez sur Créer une exécution.
Sur la page Détails de l'exécution, effectuez la configuration suivante :
- Saisissez un nom d'exécution de pipeline.
- 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
- Cliquez sur Continuer.
Sur la page Configuration de l'environnement d'exécution, effectuez la configuration suivante :
-
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 .
- Cliquez sur Continuer.
-
Sur la page Méthode d'entraînement, effectuez la configuration suivante :
- Sélectionnez le nom de l'ensemble de données avec lequel vous souhaitez entraîner le modèle.
- 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
- Saisissez le nom à afficher pour votre nouveau modèle.
- 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.
- 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.
- Cliquez sur Continuer.
Sur la page Options d'entraînement, effectuez la configuration suivante :
- Facultatif : Cliquez sur Générer des statistiques. La génération de statistiques remplit les menus déroulants Transformation.
- Examinez votre liste de colonnes et excluez de l'entraînement toutes celles qui ne doivent pas être servir à entraîner le modèle.
- 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
- 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.
- 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
- 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
- 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.
- 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"] } } ]
- Cliquez sur Continuer.
Sur la page Options de calcul et tarifs, effectuez la configuration suivante :
- Saisissez la durée maximale (en heures) d'entraînement du modèle. En savoir plus sur la tarification
- 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.
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. |
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
- Découvrez les inférences en ligne pour les modèles de classification et de régression.
- Découvrez les inférences par lot pour les modèles de classification et de régression.
- Découvrez les tarifs de l'entraînement de modèle.