En esta página se explica cómo entrenar un modelo de previsión a partir de un conjunto de datos tabulares con el flujo de trabajo tabular para la previsión.
Para obtener información sobre las cuentas de servicio que usa este flujo de trabajo, consulta Cuentas de servicio para flujos de trabajo tabulares.
Si recibes un error de cuota al ejecutar el flujo de trabajo tabular para la previsión, es posible que tengas que solicitar una cuota más alta. Para obtener más información, consulta Gestionar cuotas de flujos de trabajo tabulares.
El flujo de trabajo tabular para la previsión no admite la exportación de modelos.
APIs de flujo de trabajo
Este flujo de trabajo usa las siguientes APIs:
- Vertex AI
- Dataflow
- Compute Engine
- Cloud Storage
Obtener el URI del resultado anterior del ajuste de hiperparámetros
Si ya has completado un flujo de trabajo tabular para una previsión, puedes usar el resultado de la optimización de hiperparámetros de la ejecución anterior para ahorrar tiempo y recursos de entrenamiento. Para encontrar el resultado anterior del ajuste de hiperparámetros, usa la consola Google Cloud o cárgalo de forma programática con la API.
Google Cloud consola
Para encontrar el URI del resultado del ajuste de hiperparámetros mediante la consola Google Cloud , sigue estos pasos:
En la Google Cloud consola, en la sección Vertex AI, ve a la página Pipelines.
Selecciona la pestaña Ejecuciones.
Selecciona la ejecución de la canalización que quieras usar.
Selecciona Expand Artifacts (Ampliar artefactos).
Haz clic en el componente exit-handler-1.
Haz clic en el componente stage_1_tuning_result_artifact_uri_empty.
Busca el componente automl-forecasting-stage-1-tuner.
Haz clic en el artefacto asociado tuning_result_output.
Selecciona la pestaña Información del nodo.
Copia el URI para usarlo en el paso Entrenar un modelo.
API: Python
El siguiente código de ejemplo muestra cómo cargar el resultado del ajuste de hiperparámetros mediante la API. La variable job
hace referencia a la ejecución anterior de la canalización de entrenamiento del modelo.
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
)
Preparar un modelo
En el siguiente código de ejemplo se muestra cómo ejecutar una canalización de entrenamiento de modelos:
job = aiplatform.PipelineJob(
...
template_path=template_path,
parameter_values=parameter_values,
...
)
job.run(service_account=SERVICE_ACCOUNT)
El parámetro opcional service_account
de job.run()
te permite definir la cuenta de servicio de Vertex AI Pipelines como la que elijas.
Vertex AI admite los siguientes métodos para entrenar tu modelo:
Codificador denso de series temporales (TiDE). Para usar este método de entrenamiento de modelos, define tu canalización y los valores de los parámetros con la siguiente función:
template_path, parameter_values = automl_forecasting_utils.get_time_series_dense_encoder_forecasting_pipeline_and_parameters(...)
Temporal Fusion Transformer (TFT). Para usar este método de entrenamiento de modelos, define tu canalización y los valores de los parámetros con la siguiente función:
template_path, parameter_values = automl_forecasting_utils.get_temporal_fusion_transformer_forecasting_pipeline_and_parameters(...)
AutoML (L2L). Para usar este método de entrenamiento de modelos, define tu canalización y los valores de los parámetros con la siguiente función:
template_path, parameter_values = automl_forecasting_utils.get_learn_to_learn_forecasting_pipeline_and_parameters(...)
Seq2Seq+. Para usar este método de entrenamiento de modelos, define tu flujo de trabajo y los valores de los parámetros con la siguiente función:
template_path, parameter_values = automl_forecasting_utils.get_sequence_to_sequence_forecasting_pipeline_and_parameters(...)
Para obtener más información, consulta Métodos de entrenamiento de modelos.
Los datos de entrenamiento pueden ser un archivo CSV en Cloud Storage o una tabla en BigQuery.
A continuación, se muestra un subconjunto de los parámetros de entrenamiento de modelos:
Nombre del parámetro | Tipo | Definición |
---|---|---|
optimization_objective |
Cadena | De forma predeterminada, Vertex AI minimiza la raíz cuadrada del error cuadrático medio (RMSE). Si quieres que tu modelo de previsión tenga otro objetivo de optimización, elige una de las opciones de la sección Objetivos de optimización de los modelos de previsión. Si elige minimizar la pérdida de cuantiles, también debe especificar un valor para quantiles . |
enable_probabilistic_inference |
Booleano | Si se define como true , Vertex AI modeliza la distribución de probabilidad de la previsión. La inferencia probabilística puede mejorar la calidad de los modelos al gestionar datos con ruido y cuantificar la incertidumbre. Si se especifican quantiles , Vertex AI también devuelve los cuantiles de la distribución. La inferencia probabilística solo es compatible con los métodos de entrenamiento Time series Dense Encoder (TiDE) y AutoML (L2L). La inferencia probabilística no es compatible con el objetivo de optimización minimize-quantile-loss . |
quantiles |
Lista[float] | Cuantiles que se van a usar para el minimize-quantile-loss objetivo de optimización y la inferencia probabilística. Proporciona una lista de hasta cinco números únicos entre 0 y 1 (sin incluir estos números). |
time_column |
Cadena | La columna de tiempo. Para obtener más información, consulta los requisitos de la estructura de datos. |
time_series_identifier_columns |
Lista[str] | Las columnas de identificador de la serie temporal. Para obtener más información, consulta los requisitos de la estructura de datos. |
weight_column |
Cadena | (Opcional) La columna de peso. Para obtener más información, consulta Añadir pesos a los datos de entrenamiento. |
time_series_attribute_columns |
Lista[str] | (Opcional) Nombre o nombres de las columnas que son atributos de serie temporal. Para obtener más información, consulta Tipos de funciones y disponibilidad en la previsión. |
available_at_forecast_columns |
Lista[str] | Opcional. Nombre o nombres de las columnas de covariables cuyo valor se conoce en el momento de la previsión. Para obtener más información, consulta Tipos de funciones y disponibilidad en la previsión. |
unavailable_at_forecast_columns |
Lista[str] | (Opcional) Nombre o nombres de las columnas de covariables cuyo valor se desconoce en el momento de la previsión. Para obtener más información, consulta Tipos de funciones y disponibilidad en la previsión. |
forecast_horizon |
Entero | (Opcional) El horizonte de previsión determina hasta qué punto en el futuro el modelo prevé el valor objetivo de cada fila de datos de inferencia. Para obtener más información, consulta Horizonte de previsión, ventana de contexto y ventana de previsión. |
context_window |
Entero | (Opcional) La ventana de contexto define cuánto tiempo atrás se remonta el modelo durante el entrenamiento (y para las previsiones). Es decir, en cada punto de datos de entrenamiento, la ventana de contexto determina cuánto tiempo atrás busca el modelo patrones predictivos. Para obtener más información, consulta Horizonte de previsión, ventana de contexto y ventana de previsión. |
window_max_count |
Entero | Opcional: Vertex AI genera ventanas de previsión a partir de los datos de entrada mediante una estrategia de ventana móvil. La estrategia predeterminada es Recuento. El valor predeterminado del número máximo de ventanas es 100,000,000 . Defina este parámetro para proporcionar un valor personalizado para el número máximo de ventanas. Para obtener más información, consulta Estrategias de ventana de acumulación. |
window_stride_length |
Entero | Opcional: Vertex AI genera ventanas de previsión a partir de los datos de entrada mediante una estrategia de ventana móvil. Para seleccionar la estrategia Pasos, asigna a este parámetro el valor de la longitud de los pasos. Para obtener más información, consulta Estrategias de ventana de acumulación. |
window_predefined_column |
Cadena | Opcional: Vertex AI genera ventanas de previsión a partir de los datos de entrada mediante una estrategia de ventana móvil. Para seleccionar la estrategia Columna, asigna a este parámetro el nombre de la columna con valores True o False . Para obtener más información, consulta Estrategias de ventana de acumulación. |
holiday_regions |
Lista[str] | (Opcional) Puede seleccionar una o varias regiones geográficas para habilitar la modelización del efecto de las festividades. Durante el entrenamiento, Vertex AI crea funciones categóricas de festivos en el modelo en función de la fecha de time_column y las regiones geográficas especificadas. De forma predeterminada, la modelización de efectos festivos está inhabilitada. Para obtener más información, consulta Regiones festivas. |
predefined_split_key |
Cadena | (Opcional) De forma predeterminada, Vertex AI usa un algoritmo de división cronológica para separar los datos de previsión en tres divisiones de datos. Si quiere controlar qué filas de datos de entrenamiento se usan en cada división, proporcione el nombre de la columna que contiene los valores de división de datos (TRAIN , VALIDATION y TEST ). Para obtener más información, consulte Divisiones de datos para las previsiones. |
training_fraction |
Flotante | (Opcional) De forma predeterminada, Vertex AI usa un algoritmo de división cronológica para separar los datos de previsión en tres divisiones de datos. El 80% de los datos se asigna al conjunto de entrenamiento, el 10% se asigna a la división de validación y el 10% se asigna a la división de prueba. Defina este parámetro si quiere personalizar la fracción de los datos que se asigna al conjunto de entrenamiento. Para obtener más información, consulta el artículo sobre divisiones de datos para las previsiones. |
validation_fraction |
Flotante | (Opcional) De forma predeterminada, Vertex AI usa un algoritmo de división cronológica para separar los datos de previsión en tres divisiones de datos. El 80% de los datos se asigna al conjunto de entrenamiento, el 10% se asigna a la división de validación y el 10% se asigna a la división de prueba. Defina este parámetro si quiere personalizar la fracción de los datos que se asigna al conjunto de validación. Para obtener más información, consulta el artículo sobre divisiones de datos para las previsiones. |
test_fraction |
Flotante | (Opcional) De forma predeterminada, Vertex AI usa un algoritmo de división cronológica para separar los datos de previsión en tres divisiones de datos. El 80% de los datos se asigna al conjunto de entrenamiento, el 10% se asigna a la división de validación y el 10% se asigna a la división de prueba. Defina este parámetro si quiere personalizar la fracción de los datos que se asigna al conjunto de prueba. Para obtener más información, consulta el artículo sobre divisiones de datos para las previsiones. |
data_source_csv_filenames |
Cadena | Un URI de un archivo CSV almacenado en Cloud Storage. |
data_source_bigquery_table_path |
Cadena | URI de una tabla de BigQuery. |
dataflow_service_account |
Cadena | (Opcional) Cuenta de servicio personalizada para ejecutar trabajos de Dataflow. Puedes configurar el trabajo de Dataflow para que use IPs privadas y una subred de VPC específica. Este parámetro anula la cuenta de servicio de trabajador de Dataflow predeterminada. |
run_evaluation |
Booleano | Si se define como True , Vertex AI evalúa el modelo combinado en la división de prueba. |
evaluated_examples_bigquery_path |
Cadena | Ruta del conjunto de datos de BigQuery utilizado durante la evaluación del modelo. El conjunto de datos sirve como destino de los ejemplos predichos. Si run_evaluation tiene el valor True , debe definir el valor del parámetro con el siguiente formato: bq://[PROJECT].[DATASET] . |
Transformaciones
Puedes proporcionar una asignación de diccionario de resoluciones automáticas o de tipo a columnas de características. Los tipos admitidos son: automático, numérico, categórico, texto y marca de tiempo.
Nombre del parámetro | Tipo | Definición |
---|---|---|
transformations |
Dict[str, List[str]] | Asignación de diccionario de resoluciones automáticas o de tipo |
El siguiente código proporciona una función auxiliar para rellenar el parámetro transformations
. También muestra cómo puedes usar esta función para aplicar transformaciones automáticas a un conjunto de columnas definidas por una 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)
Para obtener más información sobre las transformaciones, consulta Tipos de datos y transformaciones.
Opciones de personalización del flujo de trabajo
Puedes personalizar el flujo de trabajo tabular para hacer previsiones definiendo los valores de los argumentos que se transfieren durante la definición de la canalización. Puedes personalizar tu flujo de trabajo de las siguientes formas:
- Configurar el hardware
- Saltar búsqueda de arquitectura
Configurar el hardware
El siguiente parámetro de entrenamiento de modelos le permite configurar los tipos de máquina y el número de máquinas para el entrenamiento. Esta opción es adecuada si tienes un conjunto de datos grande y quieres optimizar el hardware de la máquina en consecuencia.
Nombre del parámetro | Tipo | Definición |
---|---|---|
stage_1_tuner_worker_pool_specs_override |
Dict[String, Any] | (Opcional) Configuración personalizada de los tipos de máquina y el número de máquinas para el entrenamiento. Este parámetro configura el componente automl-forecasting-stage-1-tuner de la canalización. |
En el siguiente código se muestra cómo definir el tipo de máquina n1-standard-8
para el nodo principal de TensorFlow y el tipo de máquina n1-standard-4
para el nodo de evaluador de 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
}
}
]
Saltar la búsqueda de arquitectura
El siguiente parámetro de entrenamiento de modelos te permite ejecutar la canalización sin la búsqueda de arquitectura y, en su lugar, proporcionar un conjunto de hiperparámetros de una ejecución anterior de la canalización.
Nombre del parámetro | Tipo | Definición |
---|---|---|
stage_1_tuning_result_artifact_uri |
Cadena | (Opcional) URI del resultado del ajuste de hiperparámetros de una ejecución de la canalización anterior. |
Siguientes pasos
- Consulta información sobre las inferencias por lotes de los modelos de previsión.
- Consulta información sobre los precios del entrenamiento de modelos.