Cette page explique comment entraîner un modèle de prévision à partir d'un ensemble de données tabulaire avec le workflow tabulaire pour les prévisions.
Pour en savoir plus sur les comptes de service utilisés par ce workflow, consultez Comptes de service pour les workflows tabulaires.
Si vous recevez une erreur de quota lors de l'exécution du workflow tabulaire pour les prévisions, vous devrez peut-être demander un quota plus élevé. Pour en savoir plus, consultez Gérer les quotas des workflows tabulaires.
Le workflow tabulaire pour les prévisions n'est pas compatible avec l'exportation de modèles.
API du workflow
Ce workflow utilise les API suivantes :
- Vertex AI
- Dataflow
- Compute Engine
- Cloud Storage
Obtenir l'URI du résultat du précédent réglage des hyperparamètres
Si vous avez déjà exécuté un workflow tabulaire pour les prévisions, vous pouvez utiliser le résultat du réglage des hyperparamètres de l'exécution précédente pour économiser du temps et des 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-forecasting-stage-1-tuner.
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-forecasting-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
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.
Vertex AI accepte les méthodes d'entraînement de modèle suivantes :
Encodeur dense de séries temporelles (TiDE). Pour utiliser cette méthode d'entraînement de modèle, définissez les valeurs de pipeline et de paramètre à l'aide de la fonction suivante :
template_path, parameter_values = automl_forecasting_utils.get_time_series_dense_encoder_forecasting_pipeline_and_parameters(...)
Transformateur de fusion temporelle (TFT). Pour utiliser cette méthode d'entraînement de modèle, définissez les valeurs de pipeline et de paramètre à l'aide de la fonction suivante :
template_path, parameter_values = automl_forecasting_utils.get_temporal_fusion_transformer_forecasting_pipeline_and_parameters(...)
AutoML (L2L). Pour utiliser cette méthode d'entraînement de modèle, définissez les valeurs de pipeline et de paramètre à l'aide de la fonction suivante :
template_path, parameter_values = automl_forecasting_utils.get_learn_to_learn_forecasting_pipeline_and_parameters(...)
Seq2Seq+. Pour utiliser cette méthode d'entraînement de modèle, définissez les valeurs de pipeline et de paramètre à l'aide de la fonction suivante :
template_path, parameter_values = automl_forecasting_utils.get_sequence_to_sequence_forecasting_pipeline_and_parameters(...)
Pour en savoir plus, consultez Méthodes d'entraînement des modèles.
Les données d'entraînement peuvent être un fichier CSV dans Cloud Storage ou une table dans BigQuery.
Voici un sous-ensemble de paramètres d'entraînement de modèle :
Nom du paramètre | Type | Définition |
---|---|---|
optimization_objective |
Chaîne | Par défaut, Vertex AI minimise la racine carrée de l'erreur quadratique moyenne (RMSE). Si vous souhaitez définir un autre objectif d'optimisation pour votre modèle de prévision, choisissez l'une des options indiquées dan Objectifs d'optimisation pour les modèles de prévision. Si vous choisissez de minimiser la perte de quantiles, vous devez également spécifier une valeur pour quantiles . |
enable_probabilistic_inference |
Booléen | Si la valeur est true , Vertex AI modélise la distribution des probabilités de la prévision. 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. L'inférence probabiliste n'est compatible qu'avec les méthodes d'entraînement Encodeur dense de séries temporelles (TiDE) et AutoML (L2L). Elle n'est pas compatible avec l'objectif d'optimisation minimize-quantile-loss . |
quantiles |
Liste[float] | Quantiles à utiliser pour l'objectif d'optimisation minimize-quantile-loss et l'inférence probabiliste. Fournissez une liste de cinq nombres uniques au maximum, compris entre 0 et 1 (non inclus). |
time_column |
Chaîne | Colonne de date/heure. Pour en savoir plus, consultez Exigences concernant la structure des données. |
time_series_identifier_columns |
Liste[str] | Colonnes d'identifiant de série temporelle. Pour en savoir plus, consultez Exigences concernant la structure des données. |
weight_column |
Chaîne | (Facultatif) Colonne de pondération. Pour en savoir plus, consultez Ajouter des pondérations aux données d'entraînement. |
time_series_attribute_columns |
Liste[str] | (Facultatif) Nom de la ou des colonnes qui sont des attributs de série temporelle. Pour en savoir plus, consultez Type de fonctionnalité et disponibilité au moment de la prévision. |
available_at_forecast_columns |
Liste[str] | (Facultatif) Nom de la ou des colonnes de covariable dont la valeur est connue au moment de la prévision. Pour en savoir plus, consultez Type de fonctionnalité et disponibilité au moment de la prévision. |
unavailable_at_forecast_columns |
Liste[str] | (Facultatif) Nom de la ou des colonnes de covariable dont la valeur est inconnue au moment de la prévision. Pour en savoir plus, consultez Type de fonctionnalité et disponibilité au moment de la prévision. |
forecast_horizon |
Integer | (Facultatif) L'horizon de prévision détermine jusqu'à quand le modèle prévoit la valeur cible pour chaque ligne de données d'inférence. Pour en savoir plus, consultez Horizon de prévision, fenêtre de contexte et période de prévision. |
context_window |
Entier | (Facultatif) La fenêtre de contexte définit jusqu'où le modèle remonte dans le temps lors de l'entraînement (et des prévisions). En d'autres termes, pour chaque point de données d'entraînement, la fenêtre de contexte détermine jusqu'à quelle période le modèle recherche des schémas prédictifs. Pour en savoir plus, consultez Horizon de prévision, fenêtre de contexte et période de prévision. |
window_max_count |
Entier | (Facultatif) Vertex AI génère des fenêtres de prévision à partir des données d'entrée à l'aide d'une stratégie de fenêtre glissante. La stratégie par défaut est Nombre. Par défaut, le nombre maximal de fenêtres est de 100,000,000 . Définissez ce paramètre pour personnaliser la valeur du nombre maximal de fenêtres. Pour en savoir plus, consultez Stratégies de fenêtre glissante. |
window_stride_length |
Entier | (Facultatif) Vertex AI génère des fenêtres de prévision à partir des données d'entrée à l'aide d'une stratégie de fenêtre glissante. Pour sélectionner la stratégie Pas, définissez ce paramètre sur la valeur de la longueur de pas. Pour en savoir plus, consultez Stratégies de fenêtre glissante. |
window_predefined_column |
Chaîne | (Facultatif) Vertex AI génère des fenêtres de prévision à partir des données d'entrée à l'aide d'une stratégie de fenêtre glissante. Pour sélectionner la stratégie Colonne, définissez ce paramètre sur le nom de la colonne avec des valeurs True ou False . Pour en savoir plus, consultez Stratégies de fenêtre glissante. |
holiday_regions |
Liste[str] | (Facultatif) Vous pouvez sélectionner une ou plusieurs régions géographiques pour activer la modélisation des effets liés aux jours fériés. Pendant l'entraînement, Vertex AI crée des caractéristiques catégorielles de jours fériés dans le modèle en fonction de la date de time_column et des régions géographiques spécifiées. Par défaut, la modélisation des effets liés aux jours fériés est désactivée. Pour en savoir plus, consultez Jours fériés par région. |
predefined_split_key |
Chaîne | (Facultatif) Par défaut, Vertex AI utilise un algorithme de répartition chronologique pour séparer vos données de prévision en trois parties. Si vous souhaitez contrôler les lignes de données d'entraînement utilisées par la répartition, indiquez le nom de la colonne contenant les valeurs de répartition des données (TRAIN , VALIDATION , TEST ). Pour en savoir plus, consultez Répartition des données pour la prévision. |
training_fraction |
Float | (Facultatif) Par défaut, Vertex AI utilise un algorithme de répartition chronologique pour séparer vos données de prévision en trois parties. 80 % des données sont attribuées à l'ensemble d'entraînement, 10 % à l'ensemble de validation et 10 % à l'ensemble de test. Définissez ce paramètre si vous souhaitez personnaliser la fraction des données attribuée à l'ensemble d'entraînement. Pour en savoir plus, consultez Répartition des données pour la prévision. |
validation_fraction |
Float | (Facultatif) Par défaut, Vertex AI utilise un algorithme de répartition chronologique pour séparer vos données de prévision en trois parties. 80 % des données sont attribuées à l'ensemble d'entraînement, 10 % à l'ensemble de validation et 10 % à l'ensemble de test. Définissez ce paramètre si vous souhaitez personnaliser la fraction des données attribuée à l'ensemble de validation. Pour en savoir plus, consultez Répartition des données pour la prévision. |
test_fraction |
Float | (Facultatif) Par défaut, Vertex AI utilise un algorithme de répartition chronologique pour séparer vos données de prévision en trois parties. 80 % des données sont attribuées à l'ensemble d'entraînement, 10 % à l'ensemble de validation et 10 % à l'ensemble de test. Définissez ce paramètre si vous souhaitez personnaliser la fraction des données attribuée à l'ensemble de test. Pour en savoir plus, consultez Répartition des données pour la prévision. |
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. Vous pouvez configurer le job Dataflow pour qu'il utilise 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. |
run_evaluation |
Booléen | Si ce paramètre est défini sur True , Vertex AI évalue le modèle assemblé sur la division de test. |
evaluated_examples_bigquery_path |
Chaîne | Chemin d'accès à l'ensemble de données BigQuery utilisé lors de l'évaluation du modèle. L'ensemble de données sert de destination pour les exemples prédits. Vous devez définir la valeur du paramètre si run_evaluation est défini sur True et doit être au format suivant : bq://[PROJECT].[DATASET] . |
Transformations
Vous pouvez fournir un mappage de dictionnaire de résolutions automatiques ou par type avec des colonnes de caractéristiques. Les types compatibles sont "auto", "numeric", "categorical", "text" et "timestamp".
Nom du paramètre | Type | Définition |
---|---|---|
transformations |
Dict[str, List[str]] | Mappage de dictionnaire avec des résolutions automatiques ou par type |
Le code suivant fournit une fonction d'assistance pour renseigner le paramètre transformations
. Il montre également comment utiliser cette fonction pour appliquer des transformations automatiques à un ensemble de colonnes défini par une variable features
.
def generate_transformation(
auto_column_names: Optional[List[str]]=None,
numeric_column_names: Optional[List[str]]=None,
categorical_column_names: Optional[List[str]]=None,
text_column_names: Optional[List[str]]=None,
timestamp_column_names: Optional[List[str]]=None,
) -> List[Dict[str, Any]]:
if auto_column_names is None:
auto_column_names = []
if numeric_column_names is None:
numeric_column_names = []
if categorical_column_names is None:
categorical_column_names = []
if text_column_names is None:
text_column_names = []
if timestamp_column_names is None:
timestamp_column_names = []
return {
"auto": auto_column_names,
"numeric": numeric_column_names,
"categorical": categorical_column_names,
"text": text_column_names,
"timestamp": timestamp_column_names,
}
transformations = generate_transformation(auto_column_names=features)
Pour en savoir plus sur les transformations, consultez Types de données et transformations.
Options de personnalisation du workflow
Vous pouvez personnaliser le workflow tabulaire pour les prévisions 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 :
- Configurer le matériel
- Ignorer la recherche d'architecture
Configurer le matériel
Le paramètre d'entraînement de modèle suivant permet 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-forecasting-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
}
}
]
Ignorer la recherche d'architecture
Le paramètre d'entraînement de modèle 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. |
Étapes suivantes
- Découvrez les inférences par lot pour les modèles de prévision.
- Découvrez les tarifs de l'entraînement de modèle.