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 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 para usar en el objetivo de optimización de
minimize-quantile-loss
y la inferencia probabilística. Proporciona una lista de hasta cinco números únicos entre0
y1
, excluyentes. - TIME_SERIES_ATTRIBUTE_COL: El nombre o los nombres de las columnas que son atributos de serie temporal. Obtenga más información.
- AVAILABLE_AT_FORECAST_COL: El nombre o los nombres de las columnas de covarianza cuyo valor se conoce en el momento de la previsión. Obtenga más información.
- UNAVAILABLE_AT_FORECAST_COL: El nombre o los nombres de las columnas de variables cuyo valor es desconocido en el momento de la previsión. Obtenga más información.
- TRANSFORMATION_TYPE: El tipo de transformación se proporciona para cada columna que se usa a fin de entrenar el modelo. Obtén más información.
- COLUMN_NAME: El nombre de la columna con el tipo de transformación especificado. Se debe especificar cada columna que se usa 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 tu división de datos. Si deseas obtener información para controlar la división de datos, consulta Controla la división de datos mediante REST. -
Puedes proporcionar un objeto
windowConfig
para configurar una estrategia de ventana progresiva para la generación de ventanas de previsión. Para obtener más información, consulta Configura la estrategia de ventana progresiva mediante REST. - PROJECT_NUMBER: el número de proyecto de tu proyecto generado de forma automática.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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" }
SDK de Vertex AI para Python
Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación del SDK de Vertex AI de referencia de la API de Vertex para Python.
Controla la división de datos mediante REST
Puedes controlar cómo se dividen los datos de entrenamiento entre los conjuntos de entrenamiento, validación y prueba. Usa una columna dividida para especificar manualmente la división de datos de cada fila y proporcionarla como parte de un objeto Split
de PredefinedSplit
en la inputDataConfig
de la solicitud JSON.
DATA_SPLIT_COLUMN es la columna que contiene los valores de división de datos (TRAIN
, VALIDATION
y TEST
).
"predefinedSplit": {
"key": DATA_SPLIT_COLUMN
},
Obtén más información sobre las divisiones de datos.
Configura la estrategia de ventana progresiva mediante REST
Puedes proporcionar un objeto windowConfig
para configurar una estrategia de ventana progresiva para la generación de ventanas de previsión. La estrategia predeterminada es maxCount
.
Para usar la opción
maxCount
, agrega lo siguiente atrainingTaskInputs
de la solicitud JSON. MAX_COUNT_VALUE se refiere a la cantidad máxima de ventanas."windowConfig": { "maxCount": MAX_COUNT_VALUE }, ```
Para usar la opción
strideLength
, agrega lo siguiente atrainingTaskInputs
de la solicitud JSON. STRIDE_LENGTH_VALUE se refiere al valor de la longitud del paso."windowConfig": { "strideLength": STRIDE_LENGTH_VALUE }, ```
Para usar la opción
column
, agrega 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 progresiva.