En esta página se muestra cómo entrenar un modelo de previsión a partir de un conjunto de datos tabular mediante la Google Cloud consola o la API de Vertex AI.
Antes de empezar
Antes de entrenar un modelo de previsión, haz lo siguiente:
Preparar un modelo
Google Cloud consola
En la Google Cloud consola, en la sección Vertex AI, vaya a la página Conjuntos de datos.
Haga clic en el nombre del conjunto de datos que quiera usar para entrenar su modelo y abra su página de detalles.
Si tu tipo de datos usa conjuntos de anotaciones, selecciona el que quieras usar en este modelo.
Haz clic en Entrenar un modelo nuevo.
Selecciona Otro.
En la página Método de entrenamiento, configure lo siguiente:
Selecciona el método de entrenamiento del modelo. Para obtener más información, consulta Métodos de entrenamiento de modelos.
Haz clic en Continuar.
En la página Detalles del modelo, configure lo siguiente:
Introduce el nombre visible del nuevo modelo.
Selecciona la columna de destino.
La columna de destino es el valor que pronosticará el modelo. Más información sobre los requisitos de la columna de destino
Si no has definido las columnas Identificador de serie y Marca de tiempo en tu conjunto de datos, selecciónalas ahora.
Selecciona la granularidad de los datos. Selecciona
Daily
si quieres usar el modelo de efectos de festivos. Consulta cómo elegir la granularidad de los datos.Opcional: En el desplegable Regiones festivas, elige una o varias regiones geográficas para habilitar la modelización de los efectos de los días festivos. Durante el entrenamiento, Vertex AI crea funciones categóricas de festivos en el modelo en función de la fecha de la columna Timestamp y las regiones geográficas especificadas. Solo puedes seleccionar esta opción cuando Granularidad de los datos esté definida como
Daily
. De forma predeterminada, la modelización de efectos festivos está inhabilitada. Para obtener información sobre las regiones geográficas que se usan para modelizar el efecto de las fiestas, consulta Regiones de fiestas.Introduce los valores de Ventana de contexto y Horizonte de previsión.
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. El Horizonte de previsión se especifica en unidades de Granularidad de los datos.
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. La ventana de contexto se especifica en unidades de granularidad de los datos.
Si quiere exportar su conjunto de datos de prueba a BigQuery, marque Export test dataset to BigQuery (Exportar conjunto de datos de prueba a BigQuery) e indique el nombre de la tabla.
Si quieres controlar manualmente la división de los datos o configurar el periodo 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 quieres especificar manualmente qué filas se asignan a cada división, selecciona Manual y especifica la columna de división de datos.
Consulta más información sobre las divisiones de datos.
Selecciona una estrategia de ventana móvil para la generación de la ventana de previsión. La estrategia predeterminada es Recuento.
- Recuento: define el valor del número máximo de ventanas en el cuadro de texto proporcionado.
- Zancada: define el valor de la longitud de la zancada en el cuadro de texto correspondiente.
- Columna: seleccione el nombre de columna adecuado en el menú desplegable.
Para obtener más información, consulta Estrategias de ventana de acumulación.
Haz clic en Continuar.
En la página Opciones de entrenamiento, configure lo siguiente:
Si aún no lo has hecho, haz clic en Generar estadísticas.
Al generar estadísticas, se rellenan los menús desplegables de Transformación.
Revisa la lista de columnas y excluye del entrenamiento las que no deban usarse para entrenar el modelo.
Si usas una columna de división de datos, debe incluirse.
Revisa las transformaciones seleccionadas para las funciones incluidas y haz los cambios necesarios.
Las filas que contienen datos no válidos para la transformación seleccionada se excluyen del entrenamiento. Más información sobre las transformaciones
En cada columna que haya incluido para el entrenamiento, especifique el Tipo de característica para indicar cómo se relaciona esa característica con su serie temporal y si está disponible en el momento de la previsión. Más información sobre el tipo y la disponibilidad de las funciones
Si quieres especificar una columna de ponderación, cambiar el objetivo de optimización predeterminado o habilitar la previsión jerárquica, abre Opciones avanzadas.
Opcional. Si quiere especificar una columna de peso, selecciónela en la lista desplegable. Más información sobre las columnas de peso
Opcional. Si quieres seleccionar el objetivo de optimización, elígelo de la lista. Más información sobre los objetivos de optimización
Opcional. Si quieres usar la previsión jerárquica, selecciona Habilitar previsión jerárquica. Puedes elegir entre tres opciones de agrupación:
No grouping
Group by columns
Group all
También puede definir los siguientes pesos de pérdida agregados:
Group total weight
. Este campo solo se puede definir si selecciona la opciónGroup by columns
oGroup all
.Temporal total weight
.Group temporal total weight
. Este campo solo se puede definir si selecciona la opciónGroup by columns
oGroup all
.
Haz clic en Continuar.
En la página Compute and pricing (Computación y precios), configure lo siguiente:
Introduce el número máximo de horas que quieres que se entrene el modelo. Este ajuste te ayuda a limitar los costes de entrenamiento. El tiempo transcurrido real puede ser superior a este valor, ya que hay otras operaciones implicadas en la creación de un modelo.
El tiempo de entrenamiento sugerido está relacionado con el tamaño del horizonte de previsión y los datos de entrenamiento. En la siguiente tabla se muestran algunos ejemplos de ejecuciones de entrenamiento de previsión y el intervalo de tiempo de entrenamiento necesario para entrenar un modelo de alta calidad.
Filas Funciones Horizonte de previsión Tiempo de entrenamiento 12 millones 10 6 3-6 horas 20 millones 50 13 De 6 a 12 horas 16 millones 30 365 24 - 48 horas Para obtener información sobre los precios de entrenamiento, consulta la página de precios.
Haz clic en Start Training (Iniciar entrenamiento).
El entrenamiento del modelo puede llevar muchas horas, en función del tamaño y la complejidad de los datos, así como del presupuesto de entrenamiento, si has especificado uno. Puedes cerrar esta pestaña y volver a ella más adelante. Recibirás un correo cuando tu modelo haya terminado de entrenarse.
API
Selecciona la pestaña correspondiente a tu idioma o entorno:
REST
Para entrenar un modelo, usa el comando trainingPipelines.create.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: tu región.
- PROJECT: tu ID de proyecto.
- TRAINING_PIPELINE_DISPLAY_NAME: nombre visible del flujo de procesamiento de entrenamiento creado para esta operación.
-
TRAINING_TASK_DEFINITION: el método de entrenamiento del modelo.
- Codificador denso de series temporales (TiDE)
gs://google-cloud-aiplatform/schema/trainingjob/definition/time_series_dense_encoder_forecasting_1.0.0.yaml
- Transformer 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 series temporales (TiDE)
- TARGET_COLUMN: la columna (valor) que quieres que prediga este modelo.
- TIME_COLUMN: la columna de tiempo. Más información
- TIME_SERIES_IDENTIFIER_COLUMN: columna identificadora de la serie temporal. Más información
- WEIGHT_COLUMN: (opcional) la columna de peso. Más información
- TRAINING_BUDGET: la cantidad máxima de tiempo que quieres que se entrene el modelo, en milésimas de horas de nodo (1000 milésimas de horas de nodo equivalen a una hora de nodo).
-
GRANULARITY_UNIT: unidad que se va a usar para la granularidad de los datos de entrenamiento, el horizonte de previsión y la ventana de contexto. Puede ser
minute
,hour
,day
,week
,month
oyear
. Seleccioneday
si quiere usar el modelo de efectos de festivos. Consulta cómo elegir la granularidad de los datos. - GRANULARITY_QUANTITY: número de unidades de granularidad que componen el intervalo entre las observaciones de los datos de entrenamiento. Debe ser 1 en todas las unidades, excepto en los minutos, que pueden ser 1, 5, 10, 15 o 30. Consulta cómo elegir la granularidad de los datos.
- GROUP_COLUMNS: Nombres de las columnas de la tabla de entrada de entrenamiento que identifican la agrupación del nivel de jerarquía. Las columnas deben ser `time_series_attribute_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 le asigna el valor `0.0` o no se le asigna ningún valor. Si no se define la columna de grupo, todas las series temporales se tratarán como parte del mismo grupo y se agregarán en todas las series temporales. Más información
- TEMPORAL_TOTAL_WEIGHT: peso de la pérdida agregada en el tiempo en relación con la pérdida individual. Se inhabilita si se le asigna el valor `0.0` o no se le asigna ningún valor. Más información
- GROUP_TEMPORAL_TOTAL_WEIGHT: peso de la pérdida agregada total (grupo x tiempo) en relación con la pérdida individual. Se inhabilita si se le asigna el valor `0.0` o no se le asigna ningún valor. Si no se define la columna de grupo, todas las series temporales se tratarán como parte del mismo grupo y se agregarán en todas las series temporales. Más información
-
HOLIDAY_REGIONS: (Opcional) Puede seleccionar una o varias regiones geográficas para habilitar la creación de modelos de efectos de festivos. 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. Para habilitarlo, asigna el valor
day
a GRANULARITY_UNIT y especifica una o varias regiones en el campo HOLIDAY_REGIONS. De forma predeterminada, la modelización de efectos festivos está inhabilitada. Para obtener más información, consulta Regiones festivas. - FORECAST_HORIZON: El horizonte de previsión determina hasta qué punto en el futuro el modelo pronostica el valor objetivo de cada fila de datos de inferencia. El horizonte de previsión se especifica en unidades de granularidad de los datos (GRANULARITY_UNIT). Más información
- CONTEXT_WINDOW: La ventana de contexto define hasta qué punto 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. La ventana de contexto se especifica en unidades de granularidad de datos (GRANULARITY_UNIT). Más información
- OPTIMIZATION_OBJECTIVE: De forma predeterminada, Vertex AI minimiza el 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 Objetivos de optimización de modelos de previsión. Si elige minimizar la pérdida de cuantiles, también debe especificar un valor para QUANTILES.
-
PROBABILISTIC_INFERENCE: (Opcional) 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 del modelo al gestionar datos con ruido y cuantificar la incertidumbre. Si se especifican QUANTILES, Vertex AI también devuelve los cuantiles de la distribución de probabilidad. La inferencia probabilística solo es compatible con los métodos de entrenamientoTime series Dense Encoder (TiDE)
yAutoML (L2L)
. No es compatible con la previsión jerárquica ni con el objetivo de optimizaciónminimize-quantile-loss
. -
QUANTILES: cuantiles que se van a usar para la optimización
minimize-quantile-loss
objetivo y la inferencia probabilística. Proporciona una lista de hasta cinco números únicos entre0
y1
, sin incluir estos dos números. - TIME_SERIES_ATTRIBUTE_COL: los nombres de las columnas que son atributos de serie temporal. Más información
- AVAILABLE_AT_FORECAST_COL: nombre o nombres de las columnas de covariables cuyo valor se conoce en el momento de la previsión. Más información
- UNAVAILABLE_AT_FORECAST_COL: nombre o nombres de las columnas de covariables cuyo valor se desconoce en el momento de la previsión. Más información
- TRANSFORMATION_TYPE: se indica el tipo de transformación de cada columna usada para entrenar el modelo. Más información
- COLUMN_NAME: nombre de la columna con el tipo de transformación especificado. Se debe especificar cada columna que se use para entrenar el modelo.
- MODEL_DISPLAY_NAME: nombre visible del modelo recién entrenado.
- DATASET_ID: ID del conjunto de datos de entrenamiento.
-
Puedes proporcionar un objeto
Split
para controlar la división de los datos. Para obtener información sobre cómo controlar la división de datos, consulta Controlar la división de datos mediante REST. -
Puede proporcionar un objeto
windowConfig
para configurar una estrategia de ventana de tiempo para la generación de ventanas de previsión. Para obtener más información, consulta el artículo sobre cómo configurar la estrategia de ventana móvil mediante REST. - PROJECT_NUMBER: el número de proyecto generado automáticamente de tu proyecto
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Cuerpo JSON de la solicitud:
{ "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", } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "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
Para saber cómo instalar o actualizar el SDK de Vertex AI para Python, consulta Instalar el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API Python.
Controlar la división de datos mediante REST
Tú controlas cómo se dividen tus datos de entrenamiento entre los conjuntos de entrenamiento, validación y prueba. Usa una columna de división para especificar manualmente la división de datos de cada fila y proporciónala como parte de un objeto PredefinedSplit
Split
en el inputDataConfig
de la solicitud JSON.
DATA_SPLIT_COLUMN es la columna que contiene los valores divididos de los datos (TRAIN
, VALIDATION
y TEST
).
"predefinedSplit": {
"key": DATA_SPLIT_COLUMN
},
Más información sobre las divisiones de datos
Configurar la estrategia de ventana de acumulación mediante REST
Proporciona un objeto windowConfig
para configurar una estrategia de ventana móvil para la generación de ventanas de previsión. La estrategia predeterminada es maxCount
.
Para usar la opción
maxCount
, añade lo siguiente atrainingTaskInputs
de la solicitud JSON. MAX_COUNT_VALUE hace referencia al número máximo de ventanas."windowConfig": { "maxCount": MAX_COUNT_VALUE }, ```
Para usar la opción
strideLength
, añade lo siguiente atrainingTaskInputs
de la solicitud JSON. STRIDE_LENGTH_VALUE hace referencia al valor de la longitud de zancada."windowConfig": { "strideLength": STRIDE_LENGTH_VALUE }, ```
Para usar la opción
column
, añade lo siguiente atrainingTaskInputs
de la solicitud JSON. COLUMN_NAME hace referencia al nombre de la columna con valoresTrue
oFalse
."windowConfig": { "column": "COLUMN_NAME" }, ```
Para obtener más información, consulta Estrategias de ventana de acumulación.