En esta página se explica cómo entrenar un modelo de clasificación o regresión a partir de un conjunto de datos tabulares con el flujo de trabajo tabular de AutoML integral.
Antes de empezar
Antes de entrenar un modelo, haz lo siguiente:
- Preparar los datos de entrenamiento
- Crea un conjunto de datos de Vertex AI.
Habilita las siguientes APIs: Vertex AI, Dataflow, Compute Engine y Cloud Storage.
Asegúrate de que las cuentas de servicio de tu proyecto tengan los roles necesarios asignados. Para ver las cuentas de servicio y sus roles asociados, ve a la página Gestión de identidades y accesos y marca la casilla "Incluir asignaciones de roles proporcionadas por Google".
Si recibes un error relacionado con las cuotas al ejecutar el flujo de trabajo tabular de AutoML de extremo a extremo, 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.
Obtener el URI del resultado anterior del ajuste de hiperparámetros
Si ya has completado un flujo de trabajo de AutoML de principio a fin, usa 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-tabular-cv-trainer-2.
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-tabular-stage-1-tuner"
)
stage_1_tuning_result_artifact_uri = (
stage_1_tuner_task.outputs["tuning_result_output"].artifacts[0].uri
)
Preparar un modelo
Google Cloud consola
Para entrenar un modelo con 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 Galería de plantillas.
En la tarjeta AutoML para clasificación o regresión tabular, haz clic en Crear ejecución.
En la página Detalles de la ejecución, configure los siguientes ajustes:
- Introduce un nombre para la ejecución de la canalización.
- Opcional: Si quieres definir la cuenta de servicio de Vertex AI Pipelines o la cuenta de servicio de trabajador de Dataflow, abre Opciones avanzadas. Más información sobre las cuentas de servicio
- Haz clic en Continuar.
En la página Configuración de tiempo de ejecución, configure los ajustes de la siguiente manera:
-
Introduce un segmento de Cloud Storage o una carpeta del segmento que quieras usar como directorio de salida raíz. Este directorio se usará para guardar archivos intermedios, como el conjunto de datos materializado y el modelo. No olvides limpiar el directorio una vez que se haya completado el entrenamiento y se hayan copiado el modelo y otros artefactos importantes en otro segmento de Cloud Storage. También puedes definir un tiempo de vida (TTL) para el segmento de Cloud Storage.
Los segmentos de tu proyecto se muestran en la sección Cloud Storage de la Google Cloud consola.
- Haz clic en Continuar.
-
En la página Método de entrenamiento, configure los ajustes de la siguiente manera:
- Selecciona el nombre del conjunto de datos que quieras usar para entrenar tu modelo.
- Selecciona la columna de destino. La columna de destino es el valor que predecirá el modelo. Más información sobre los requisitos de la columna de destino
- Introduce el nombre visible del nuevo modelo.
- Opcional: Para elegir cómo dividir los datos entre los conjuntos de entrenamiento, prueba y validación, abre las opciones avanzadas. Puedes elegir entre las siguientes opciones de división de datos:
- Aleatorio (predeterminado): Vertex AI selecciona aleatoriamente las filas asociadas a cada uno de los conjuntos de datos. De forma predeterminada, Vertex AI selecciona el 80% de las filas de datos para el conjunto de entrenamiento, el 10% para el conjunto de validación y el 10% para el conjunto de prueba. Define el porcentaje de filas de datos que quieres que se asocien a cada uno de los conjuntos de datos.
- Manual: Vertex AI selecciona las filas de datos de cada conjunto de datos en función de los valores de una columna de división de datos. Indica el nombre de la columna de división de datos.
- Cronológico: Vertex AI divide los datos en función de la marca de tiempo de una columna de tiempo. Indica el nombre de la columna de tiempo. También puedes definir el porcentaje de filas de datos que quieres asociar al conjunto de entrenamiento, al conjunto de validación y al conjunto de prueba.
- Estratificada: Vertex AI selecciona aleatoriamente las filas asociadas a cada uno de los conjuntos de datos, pero conserva la distribución de los valores de la columna de destino. Indica el nombre de la columna de destino. También puedes definir el porcentaje de filas de datos que quieres asociar a los conjuntos de entrenamiento, validación y prueba.
- Opcional: Puedes ejecutar la canalización sin la búsqueda de arquitectura. Si eliges Omitir búsqueda de arquitectura, se te pedirá que proporciones un conjunto de hiperparámetros de una ejecución de canalización anterior en la página Opciones de entrenamiento.
- Haz clic en Continuar.
En la página Opciones de formación, configure lo siguiente:
- Opcional: 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.
- Revisa las transformaciones seleccionadas para las funciones incluidas, así como si se permiten datos no válidos, y haz los cambios necesarios. Consulta más información sobre las transformaciones y los datos no válidos.
- Si has decidido omitir la búsqueda de arquitectura en la página Método de entrenamiento, proporciona la ruta al resultado del ajuste de hiperparámetros de una ejecución anterior de la canalización.
- Opcional: Si quieres especificar la columna de peso, abre las Opciones avanzadas y haz tu selección. Más información sobre las columnas de peso
- Opcional: Si quieres cambiar el objetivo de optimización predeterminado, abre las opciones avanzadas y haz tu selección. Más información sobre los objetivos de optimización
- Opcional: Si decide realizar la búsqueda de arquitectura en la página Método de entrenamiento, puede especificar el número de pruebas paralelas. Abre las opciones avanzadas e introduce el valor.
- Opcional: Puedes proporcionar valores fijos para un subconjunto de los hiperparámetros.
Vertex AI busca los valores óptimos de los hiperparámetros restantes que no se han fijado.
Esta opción es una buena elección si tiene una preferencia clara por el tipo de modelo. Puedes elegir entre redes neuronales y árboles de refuerzo para el tipo de modelo. Abre Opciones avanzadas
y proporciona una anulación de especificación de estudio en formato JSON.
Por ejemplo, si quiere definir el tipo de modelo como Redes neuronales (RN), introduzca lo siguiente:
[ { "parameter_id": "model_type", "categorical_value_spec": { "values": ["nn"] } } ]
- Haz clic en Continuar.
En la página Computación y precios, configure lo siguiente:
- Introduce el número máximo de horas que quieres que se entrene el modelo. Consulta más información sobre los precios.
- Opcional: En la sección Configuración de cálculo, puede configurar los tipos de máquina y el número de máquinas de cada fase del flujo de trabajo. Esta opción es adecuada si tienes un conjunto de datos grande y quieres optimizar el hardware de la máquina en consecuencia.
Haz clic en Enviar.
API: Python
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.
La siguiente función define la canalización y los valores de los parámetros. Los datos de entrenamiento pueden ser un archivo CSV en Cloud Storage o una tabla de BigQuery.
template_path, parameter_values = automl_tabular_utils.get_automl_tabular_pipeline_and_parameters(...)
A continuación, se muestra un subconjunto de parámetros de get_automl_tabular_pipeline_and_parameters
:
Nombre del parámetro | Tipo | Definición |
---|---|---|
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. El trabajo de Dataflow se puede configurar 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. |
prediction_type |
Cadena | Elige classification para entrenar un modelo de clasificación o regression para entrenar un modelo de regresión. |
optimization_objective |
Cadena | Si entrenas un modelo de clasificación binaria, el objetivo predeterminado es AUC ROC. Si estás entrenando un modelo de regresión, el objetivo predeterminado es RMSE. Si quieres que tu modelo tenga otro objetivo de optimización, elige una de las opciones de Objetivos de optimización para modelos de clasificación o regresión. |
enable_probabilistic_inference |
Booleano | Si entrenas un modelo de regresión y le asignas el valor true , Vertex AI modeliza la distribución de probabilidad de la inferencia. 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. |
quantiles |
Lista[float] | Cuantiles que se van a usar para la inferencia probabilística. Un cuantil indica la probabilidad de que un objetivo sea inferior a un valor determinado. Proporciona una lista de hasta cinco números únicos entre 0 y 1 (sin incluir estos números). |
Opciones de personalización del flujo de trabajo
Puedes personalizar el flujo de trabajo de AutoML de extremo a extremo 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:
- Anular el espacio de búsqueda
- Configurar el hardware
- Destilar el modelo
- Saltar búsqueda de arquitectura
Anular el espacio de búsqueda
El siguiente parámetro get_automl_tabular_pipeline_and_parameters
te permite proporcionar valores fijos para un subconjunto de los hiperparámetros.
Vertex AI busca los valores óptimos de los hiperparámetros restantes que no se han fijado. Utilice este parámetro si quiere elegir entre redes neuronales y árboles de refuerzo para el tipo de modelo.
Nombre del parámetro | Tipo | Definición |
---|---|---|
study_spec_parameters_override |
List[Dict[String, Any]] | (Opcional) Subconjunto personalizado de hiperparámetros. Este parámetro configura el componente automl-tabular-stage-1-tuner de la canalización. |
En el siguiente código se muestra cómo definir el tipo de modelo en Redes Neuronales (NN):
study_spec_parameters_override = [
{
"parameter_id": "model_type",
"categorical_value_spec": {
"values": ["nn"] # The default value is ["nn", "boosted_trees"], this reduces the search space
}
}
]
Configurar el hardware
Los siguientes parámetros de get_automl_tabular_pipeline_and_parameters
le permiten configurar los tipos de máquinas y el número de máquinas para el entrenamiento.
Esta opción es adecuada si tiene un conjunto de datos grande y quiere 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-tabular-stage-1-tuner de la canalización. |
cv_trainer_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-tabular-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
}
}
]
Destilar el modelo
El parámetro get_automl_tabular_pipeline_and_parameters
te permite crear una versión más pequeña del modelo de conjunto. Un modelo más pequeño reduce la latencia y el coste de la inferencia.
Nombre del parámetro | Tipo | Definición |
---|---|---|
run_distillation |
Booleano | Si TRUE , crea una versión más pequeña del modelo de conjunto. |
Saltar la búsqueda de arquitectura
El siguiente parámetro get_automl_tabular_pipeline_and_parameters
te permite ejecutar la canalización sin la búsqueda de arquitectura y 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. |
Objetivos de optimización para modelos de clasificación o regresión
Cuando entrenas un modelo, Vertex AI selecciona un objetivo de optimización predeterminado en función del tipo de modelo y del tipo de datos que se utilice en la columna de destino.
Los modelos de clasificación son los más adecuados para lo siguiente:Objetivo de optimización | Valor de la API | Usa este objetivo si quieres... |
---|---|---|
Área por debajo de la curva de ROC | maximize-au-roc |
Maximiza el área por debajo de la curva de característica operativa del receptor (ROC). Distingue entre clases. Valor predeterminado de la clasificación binaria. |
Pérdida logarítmica | minimize-log-loss |
Se mantienen las probabilidades de inferencia lo más precisas posible. Es el único objetivo admitido para la clasificación multiclase. |
Área por debajo de la curva de PR | maximize-au-prc |
Maximiza el área por debajo de la curva de precisión-recuperación. Optimiza los resultados de las inferencias de la clase menos común. |
Precisión en la recuperación | maximize-precision-at-recall |
Optimiza la precisión con un valor de recuperación específico. |
Recuperación con precisión | maximize-recall-at-precision |
Optimiza la recuperación con un valor de precisión específico. |
Objetivo de optimización | Valor de la API | Usa este objetivo si quieres... |
---|---|---|
RMSE | minimize-rmse |
Minimizar la raíz cuadrada del error cuadrático medio (RMSE). Captura los valores más extremos de forma precisa. Valor predeterminado. |
MAE | minimize-mae |
Minimizar el error absoluto medio (MAE). Se ven los valores extremos como valores atípicos que tienen un impacto menor en el modelo. |
RMSLE | minimize-rmsle |
Minimiza el error logarítmico cuadrático medio de la raíz (RMSLE). Penaliza los errores según el tamaño relativo en lugar del valor absoluto. Resulta muy útil cuando tanto los valores predichos como los disponibles pueden ser de gran tamaño. |
Siguientes pasos
- Consulta información sobre las inferencias online de los modelos de clasificación y regresión.
- Consulta información sobre las inferencias por lotes de los modelos de clasificación y regresión.
- Consulta información sobre los precios del entrenamiento de modelos.