En esta página, se muestra cómo entrenar un modelo de previsión a partir de un conjunto de datos tabular mediante la consola de Google Cloud o la API de Vertex AI.
Antes de comenzar
Antes de entrenar un modelo de previsión, debes completar lo siguiente:
Entrenar un modelo
Consola de Google Cloud
En la sección Vertex AI de la consola de Google Cloud, ve a la página Conjuntos de datos.
Haz clic en el nombre del conjunto de datos que deseas usar para entrenar tu modelo a fin de abrir su página de detalles.
Si tu tipo de datos usa conjuntos de anotaciones, selecciona el conjunto de anotaciones que deseas usar para este modelo.
Haga clic en Entrenar un modelo nuevo.
Selecciona Otros.
En la página Método de entrenamiento, configura lo siguiente:
Selecciona el método de entrenamiento de modelos. Para obtener más información, consulta Métodos de entrenamiento de modelos.
Haz clic en Continuar.
En la página Detalles del modelo, configura lo siguiente:
Ingresa el nombre visible de tu modelo nuevo.
Selecciona la columna objetivo.
La columna objetivo es el valor que el modelo predecirá. Obtén más información sobre los requisitos de las columnas de destino.
Si no configuraste las columnas Identificador de la serie y Marca de tiempo en el conjunto de datos, selecciónalas ahora.
Selecciona el Nivel de detalle de los datos. Selecciona
Daily
si deseas usar el modelado de efectos de días festivos. Obtén información sobre cómo elegir el nivel de detalle de los datos.Opcional: En el menú desplegable Regiones de festividades, elige una o más regiones geográficas para habilitar el modelado de efectos de festividades. Durante el entrenamiento, Vertex AI crea atributos categóricos para las festividades dentro del modelo en función de la fecha en la columna de marca de tiempo y las regiones geográficas especificadas. Puedes seleccionar esta opción solo cuando el nivel de detalle de los datos se establece en
Daily
. De forma predeterminada, el modelado de efectos de festividades está inhabilitado. Para obtener información acerca de las regiones geográficas que se usan para el modelado de efectos de festividades, consulta Regiones de festividades.Ingresa la ventana de contexto y el horizonte de previsión.
El horizonte de previsión determina hasta qué punto del futuro el modelo predice el valor objetivo de cada fila de datos de predicción. El horizonte de previsión se especifica en unidades de nivel de detalle de datos.
La ventana de contexto establece la extensión del período que el modelo consulta durante el entrenamiento (y para las previsiones). En otras palabras, para cada dato de entrenamiento, la ventana de contexto determina la extensión del período en el que el modelo busca patrones predictivos. La ventana de contexto se especifica en unidades de nivel de detalle de datos.
Si deseas exportar tu conjunto de datos de prueba a BigQuery, marca Exportar conjunto de datos de prueba a BigQuery y proporciona el nombre de la tabla.
Si deseas controlar manualmente la división de tus datos o configurar la ventana de previsión, abre las Opciones avanzadas.
La división de datos predeterminada es cronológica, con los porcentajes estándar 80/10/10. Si deseas especificar de forma manual qué filas se asignan a qué división, selecciona Manual y especifica la columna de división de datos.
Obtén más información sobre las divisiones de datos.
Selecciona una estrategia de ventana progresiva para la generación de ventanas de previsión. La estrategia predeterminada es Recuento.
- Recuento: Establece el valor para la cantidad máxima de ventanas en el cuadro de texto proporcionado.
- Segmento: establece el valor de la longitud del segmento en el cuadro de texto proporcionado.
- Columna: Selecciona el nombre de la columna adecuado en el menú desplegable proporcionado.
Para obtener más información, consulta Estrategias de ventana progresiva.
Haz clic en Continuar.
En la página Opciones de entrenamiento, configura lo siguiente:
Si aún no lo hiciste, haz clic en Generar estadísticas.
La generación de estadísticas propaga los menús desplegables de Transformación.
Revisa la lista de columnas y excluye las columnas del entrenamiento que no se deberían usar para entrenar el modelo.
Si usas una columna de división de datos, esta debe incluirse.
Revisa las transformaciones seleccionadas para los atributos incluidos y realiza las actualizaciones necesarias.
Las filas que contienen datos que no son válidos para la transformación seleccionada se excluyen del entrenamiento. Obtén más información sobre las transformaciones.
Para cada columna que incluiste en el entrenamiento, especifica el Tipo de atributo para indicar cómo se relaciona ese atributo con su serie temporal y si está disponible en el momento de la previsión. Obtén más información sobre el tipo y la disponibilidad de los atributos.
Si deseas especificar una columna de ponderación, cambiar tu objetivo de optimización del valor predeterminado o habilitar la previsión jerárquica, abre Opciones avanzadas.
Opcional. Si deseas especificar una columna de ponderación, selecciónala en la lista desplegable. Obtén más información sobre las columnas de ponderación.
Opcional. Si deseas seleccionar el objetivo de optimización, selecciónalo de la lista. Obtén más información sobre los objetivos de optimización.
Opcional. Si deseas usar la previsión jerárquica, selecciona Habilitar la previsión jerárquica. Puedes elegir entre tres opciones de agrupación:
No grouping
Group by columns
Group all
También puedes optar por establecer los siguientes pesos de pérdida agregada:
Group total weight
Este campo solo se puede configurar si seleccionas la opciónGroup by columns
oGroup all
.Temporal total weight
.Group temporal total weight
Este campo solo se puede configurar si seleccionas la opciónGroup by columns
oGroup all
.
Obtén más información sobre la predicción jerárquica.
Haz clic en Continuar.
En la página Procesamiento y precios, realiza la configuración de la siguiente manera:
Ingresa el número máximo de horas para las que deseas que se entrene el modelo. Esta configuración te ayuda a limitar los costos de entrenamiento. El tiempo real transcurrido puede ser más largo que este valor, ya que hay otras operaciones involucradas en la creación de un modelo nuevo.
El tiempo de entrenamiento sugerido se relaciona con el tamaño del horizonte de previsión y los datos de entrenamiento. En la siguiente tabla, se muestran algunas ejecuciones de entrenamiento de previsión de muestra y el intervalo de tiempo de entrenamiento necesario para entrenar un modelo de alta calidad.
Filas Características Horizonte de previsión Tiempo de entrenamiento 12 millones 10 6 De 3 a 6 horas 20 millones 50 13 De 6 a 12 horas 16 millones 30 365 De 24 a 48 horas Para obtener información sobre los precios de entrenamiento, consulta la página de precios.
Haga clic en Comenzar entrenamiento.
El entrenamiento de modelos puede tardar muchas horas, según el tamaño y la complejidad de tus datos y tu presupuesto de entrenamiento, si especificaste uno. Puedes cerrar esta pestaña y regresar a ella más tarde. Recibirás un correo electrónico cuando tu modelo haya finalizado el entrenamiento.
API
Selecciona una pestaña para tu idioma o entorno:
REST
Usa el comando trainingPipelines.create para entrenar un modelo.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: Tu región.
- PROJECT: El ID del proyecto.
- TRAINING_PIPELINE_DISPLAY_NAME: El nombre visible de la canalización de entrenamiento creada para esta operación.
-
TRAINING_TASK_DEFINITION: Es el método de entrenamiento de modelos.
- Codificador denso de la serie temporal (TiDE)
gs://google-cloud-aiplatform/schema/trainingjob/definition/time_series_dense_encoder_forecasting_1.0.0.yaml
- Transformador de fusión temporal (TFT)
gs://google-cloud-aiplatform/schema/trainingjob/definition/temporal_fusion_transformer_time_series_forecasting_1.0.0.yaml
- AutoML (L2L)
gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_forecasting_1.0.0.yaml
- Seq2Seq+
gs://google-cloud-aiplatform/schema/trainingjob/definition/seq2seq_plus_time_series_forecasting_1.0.0.yaml
- Codificador denso de la serie temporal (TiDE)
- TARGET_COLUMN: La columna (valor) que deseas que prediga este modelo.
- TIME_COLUMN: La columna de tiempo. Obtén más información.
- TIME_SERIES_IDENTIFIER_COLUMN: La columna de identificador de serie temporal. Obtén más información.
- WEIGHT_COLUMN: la columna de ponderación (opcional). Obtén más información.
- TRAINING_BUDGET: la cantidad máxima de tiempo que deseas que se entrene el modelo, en milihoras de procesamiento de nodos (1,000 milihoras de procesamiento de nodos equivalen a una hora de procesamiento de nodos).
-
GRANULARITY_UNIT: La unidad que se usará para el nivel de detalle de tus datos de entrenamiento y el horizonte de previsión y la ventana contextual. Puede ser
minute
,hour
,day
,week
,month
oyear
. Seleccionaday
si deseas usar el modelado de efectos de festividades. Obtén información sobre cómo elegir el nivel de detalle de los datos. - GRANULARITY_QUANTITY: La cantidad de unidades de nivel de detalle que conforman el intervalo entre las observaciones en los datos de entrenamiento Debe ser la misma para todas las unidades, excepto los minutos, que pueden ser 1, 5, 10, 15 o 30. Obtén información sobre cómo elegir el nivel de detalle de los datos.
- GROUP_COLUMNS: Nombres de columnas en tu tabla de entrada de entrenamiento que identifican la agrupación para el nivel de jerarquía. Las columnas deben ser `time_series_attributes_columns`. Más información.
- GROUP_TOTAL_WEIGHT: Peso de la pérdida agregada del grupo en relación con la pérdida individual. Se inhabilita si se establece en “0.0” o si no se establece. Si no se configura la columna de grupo, todas las series temporales se tratarán como parte del mismo grupo y se agregarán a todas las series temporales. Obtén más información.
- TEMPORAL_TOTAL_WEIGHT: Peso del tiempo agregado de pérdida relacionado con la pérdida individual. Se inhabilita si se establece en “0.0” o si no se establece. Obtén más información.
- GROUP_TEMPORAL_TOTAL_WEIGHT: Peso de la pérdida total (grupo x tiempo) relativa a la pérdida individual. Se inhabilita si se establece en “0.0” o si no se establece. Si no se configura la columna de grupo, todas las series temporales se tratarán como parte del mismo grupo y se agregarán a todas las series temporales. Obtén más información.
-
HOLIDAY_REGIONS: Puedes seleccionar una o más regiones geográficas para habilitar
el modelado de efectos de festividades (opcional). Durante el entrenamiento, Vertex AI crea atributos
categóricos para las festividades dentro del modelo según la fecha de TIME_COLUMN y las regiones
geográficas especificadas. Para habilitarlo, configura GRANULARITY_UNIT en
day
y especifica una o más regiones en el campo HOLIDAY_REGIONS. De forma predeterminada, el modelado de efectos de festividades está inhabilitado. Para obtener más información, consulta Regiones de festividades. - FORECAST_HORIZON: El horizonte de previsión determina hasta qué punto del futuro el modelo predice el valor objetivo de cada fila de datos de predicción. El horizonte de previsión se especifica en unidades de nivel de detalle de los datos (GRANULARITY_UNIT). Más información.
- CONTEXT_WINDOW: La ventana de contexto establece la extensión del período que el modelo consulta durante el entrenamiento (y para las previsiones). En otras palabras, para cada dato de entrenamiento, la ventana de contexto determina la extensión del período en el que el modelo busca patrones predictivos. La ventana de contexto se especifica en unidades de datos detallados (GRANULARITY_UNIT). Más información.
- OPTIMIZATION_OBJECTIVE: De forma predeterminada, Vertex AI minimiza la raíz cuadrada del error cuadrático medio (RMSE). Si deseas un objetivo de optimización diferente para tu modelo de previsión, elige una de las opciones en Objetivos de optimización para los modelos de previsión. Si eliges minimizar la pérdida cuantil, también debes especificar un valor para QUANTILES.
-
PROBABILISTIC_INFERENCE: (Opcional) Si está configurado como
true
, Vertex AI modela la distribución de probabilidad de la previsión. La inferencia probabilística puede mejorar la calidad del modelo; para ello, se manejan los datos ruidosos y la cuantificación de la incertidumbre. Si se especifican QUANTILES, Vertex AI también muestra los cuantiles de la distribución de probabilidad. La inferencia probabilística solo es compatible conTime series Dense Encoder (TiDE)
and the
AutoML (L2L)
training methods. It is incompatible with hierarchical forecasting and theminimize-quantile-loss
optimization objective. -
QUANTILES: Quantiles to use for the
minimize-quantile-loss
optimization objective and probabilistic inference. Provide a list of up to five unique numbers between0
and1
, exclusive. - TIME_SERIES_ATTRIBUTE_COL: The name or names of the columns that are time series attributes. Learn more.
- AVAILABLE_AT_FORECAST_COL: The name or names of the covariate columns whose value is known at forecast time. Learn more.
- UNAVAILABLE_AT_FORECAST_COL: The name or names of the covariate columns whose value is unknown at forecast time. Learn more.
- TRANSFORMATION_TYPE: The transformation type is provided for each column used to train the model. Learn more.
- COLUMN_NAME: The name of the column with the specified transformation type. Every column used to train the model must be specified.
- MODEL_DISPLAY_NAME: Display name for the newly trained model.
- DATASET_ID: ID for the training Dataset.
-
You can provide a
Split
object to control your data split. For information about controlling data split, see Control the data split using REST. -
You can provide a
windowConfig
object to configure a rolling window strategy for forecast window generation. For further information, see Configure the rolling window strategy using REST. - PROJECT_NUMBER: Your project's automatically generated project number
HTTP method and URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Request JSON body:
{
"displayName": "TRAINING_PIPELINE_DISPLAY_NAME",
"trainingTaskDefinition": "TRAINING_TASK_DEFINITION",
"trainingTaskInputs": {
"targetColumn": "TARGET_COLUMN",
"timeColumn": "TIME_COLUMN",
"timeSeriesIdentifierColumn": "TIME_SERIES_IDENTIFIER_COLUMN",
"weightColumn": "WEIGHT_COLUMN",
"trainBudgetMilliNodeHours": TRAINING_BUDGET,
"dataGranularity": {"unit": "GRANULARITY_UNIT", "quantity": GRANULARITY_QUANTITY},
"hierarchyConfig": {"groupColumns": GROUP_COLUMNS, "groupTotalWeight": GROUP_TOTAL_WEIGHT, "temporalTotalWeight": TEMPORAL_TOTAL_WEIGHT, "groupTemporalTotalWeight": GROUP_TEMPORAL_TOTAL_WEIGHT}
"holidayRegions" : ["HOLIDAY_REGIONS_1", "HOLIDAY_REGIONS_2", ...]
"forecast_horizon": FORECAST_HORIZON,
"context_window": CONTEXT_WINDOW,
"optimizationObjective": "OPTIMIZATION_OBJECTIVE",
"quantiles": "QUANTILES",
"enableProbabilisticInference": "PROBABILISTIC_INFERENCE",
"time_series_attribute_columns": ["TIME_SERIES_ATTRIBUTE_COL_1", "TIME_SERIES_ATTRIBUTE_COL_2", ...]
"available_at_forecast_columns": ["AVAILABLE_AT_FORECAST_COL_1", "AVAILABLE_AT_FORECAST_COL_2", ...]
"unavailable_at_forecast_columns": ["UNAVAILABLE_AT_FORECAST_COL_1", "UNAVAILABLE_AT_FORECAST_COL_2", ...]
"transformations": [
{"TRANSFORMATION_TYPE_1": {"column_name" : "COLUMN_NAME_1"} },
{"TRANSFORMATION_TYPE_2": {"column_name" : "COLUMN_NAME_2"} },
...
},
"modelToUpload": {"displayName": "MODEL_DISPLAY_NAME"},
"inputDataConfig": {
"datasetId": "DATASET_ID",
}
}
To send your request, expand one of these options:
You should receive a JSON response similar to the following:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/trainingPipelines/TRAINING_PIPELINE_ID",
"displayName": "myModelName",
"trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_tabular_1.0.0.yaml",
"modelToUpload": {
"displayName": "myModelName"
},
"state": "PIPELINE_STATE_PENDING",
"createTime": "2020-08-18T01:22:57.479336Z",
"updateTime": "2020-08-18T01:22:57.479336Z"
}
Python
To learn how to install or update the Vertex AI SDK for Python, see Install the Vertex AI SDK for Python.
For more information, see the
Python API reference documentation.
Python
To learn how to install or update the Vertex AI SDK for Python, see Install the Vertex AI SDK for Python.
For more information, see the
Python API reference documentation.
Python
To learn how to install or update the Vertex AI SDK for Python, see Install the Vertex AI SDK for Python.
For more information, see the
Python API reference documentation.
Python
To learn how to install or update the Vertex AI SDK for Python, see Install the Vertex AI SDK for Python.
For more information, see the
Python API reference documentation.
Control the data split using REST
You can control how your training data is split between the training,
validation, and test sets. Use a split column to manually specify the data
split for each row and provide it as part of a PredefinedSplit
Split
object in the
inputDataConfig
of the JSON request.
DATA_SPLIT_COLUMN is the column containing the data split values
(TRAIN
, VALIDATION
, TEST
).
"predefinedSplit": {
"key": DATA_SPLIT_COLUMN
},
Learn more about data splits.
Configure the rolling window strategy using REST
You can provide a windowConfig
object to configure a rolling window strategy for
forecast window generation. The default strategy is maxCount
.
To use the maxCount
option, add the following to trainingTaskInputs
of
the JSON request. MAX_COUNT_VALUE refers to the maximum number
of windows.
"windowConfig": {
"maxCount": MAX_COUNT_VALUE
},
```
To use the strideLength
option, add the following to trainingTaskInputs
of the JSON request. STRIDE_LENGTH_VALUE refers to the value of
the stride length.
"windowConfig": {
"strideLength": STRIDE_LENGTH_VALUE
},
```
To use the column
option, add the following to trainingTaskInputs
of
the JSON request. COLUMN_NAME refers to the name of the column
with True
or False
values.
"windowConfig": {
"column": "COLUMN_NAME"
},
```
To learn more, see Rolling window strategies.
What's next