Acerca de las divisiones de datos para los modelos de AutoML

En esta página, se describe cómo Vertex AI usa los conjuntos de entrenamiento, validación y prueba de tus datos para entrenar un modelo de AutoML, y cómo puedes controlar la forma en que se dividen tus datos entre estos tres conjuntos. AutoML usa divisiones de datos de manera diferente, según el tipo de datos de entrenamiento.

En esta página, se describen las divisiones de datos para los datos de imagen, texto y video. Si quieres obtener información sobre las divisiones de datos para los datos tabulares, consulta Divisiones de datos para datos tabulares.

Imagen

En el caso de los conjuntos de datos de imágenes, AutoML usa el conjunto de entrenamiento para entrenar el modelo y el conjunto de validación a fin de validar los resultados que el modelo genera durante el entrenamiento. Cuando finaliza el entrenamiento, AutoML usa el conjunto de prueba para proporcionar las métricas de la evaluación final.

Texto

En los conjuntos de datos de texto, los conjuntos de datos de entrenamiento y validación se usan para probar diferentes combinaciones de opciones de procesamiento previo, arquitectura e hiperparámetro. Estas pruebas dan como resultado modelos entrenados que luego se evalúan en el conjunto de validación de calidad y guían la exploración de combinaciones de opciones adicionales.

Cuando la realización de más pruebas ya no genera mejoras en la calidad, esa versión del modelo se considera el modelo final, con mejor rendimiento y más entrenado. A continuación, Vertex IA entrena dos modelos más mediante los parámetros y la arquitectura determinados en la fase de ajuste paralelo:

  1. Un modelo entrenado con tus conjuntos de entrenamiento y validación.

    Vertex AI genera las métricas de evaluación del modelo en este modelo con tu conjunto de prueba. Esta es la primera vez en el proceso que se usa el conjunto de prueba. Este enfoque garantiza que las métricas finales de evaluación sean un reflejo imparcial de lo bien que funcionará el modelo final entrenado en la producción.

  2. Un modelo entrenado con tus conjuntos de entrenamiento, validación y prueba.

    Este modelo es el que usas para solicitar predicciones.

Video

En el caso de los conjuntos de datos de video, AutoML usa el conjunto de entrenamiento para entrenar el modelo y, luego, usa el conjunto de prueba a fin de proporcionar las métricas de la evaluación final. El conjunto de validación no se usa para los conjuntos de datos de video.

Puedes permitir que Vertex AI divida tus datos de forma automática. Tus datos se dividen al azar en los tres conjuntos a través del porcentaje. Esta es la forma más fácil de dividir los datos y funciona bien en la mayoría de los casos.

Establecer Texto Imagen Video
Capacitación 80 80 80
Validación 10 10 N/A
Prueba 10 10 20

Para usar la división de datos predeterminada, acepta el valor predeterminado en la consola de Google Cloud o deja el campo División vacío para la API.

Si quieres controlar cómo se dividen tus datos en conjuntos, tienes las siguientes opciones:

Elige solo una de estas opciones; haces la elección cuando entrenas el modelo. Algunas de estas opciones requieren que se realicen cambios en los datos de entrenamiento (por ejemplo, la etiqueta ml_use). Incluir datos o etiquetas para las opciones de división de datos no requiere el uso de estas opciones. Aún puedes elegir otra opción cuando entrenas tu modelo.

División manual para datos no estructurados

La división manual también se conoce como “división predefinida”.

Para usar la etiqueta ml_use a fin de controlar la división de datos, debes configurar la etiqueta ml_use en tus datos.

Configura un valor para la etiqueta ml_use

Puedes establecer la etiqueta ml_use para los datos de visión, video y texto en el momento de la importación de datos (por elemento de datos o para todo el archivo de importación) o después de la importación de datos mediante Google Cloud Console.

Establece ml_use en elementos de datos individuales en el momento de la importación

Puedes configurar la etiqueta ml_use en cada elemento de datos si incluyes un valor para el campo aiplatform.googleapis.com/ml_use en tus datos de líneas JSONL o estableces el valor de la primera columna del archivo CSV. Consulta la información sobre cómo preparar datos para tu tipo de datos a fin de obtener más detalles.

Si alguno de tus elementos de datos se repite en tus datos (si el mismo fragmento de video, imagen o de texto aparece varias veces en tu archivo de importación), Vertex AI usa el valor ml_use para el primer elemento de datos que encuentre y, luego, ignora los valores ml_use posteriores. El primer elemento encontrado no es necesariamente el elemento más cercano al principio del archivo de carga.

Configura ml_use para archivos de carga completos

Si tus datos se pueden ordenar en diferentes archivos de carga según el valor de ml_use, puedes establecer el valor de ml_use para todo el archivo de carga mediante el menú desplegable por archivo cuando subes archivos mediante la consola de Google Cloud o mediante el campo del mapa dataItemLabels en el método datasets.import.

Si configuras ml_use para un archivo de carga, y este también contiene valores ml_use, los valores ml_use del archivo tienen prioridad por sobre el valor del archivo completo.

Configura ml_use después de la importación

Después de subir los datos, puedes configurar o actualizar el valor ml_use para los elementos de datos específicos en la consola de Google Cloud. Para ello, selecciona uno o más elementos en la vista de lista y usa la función Asignar uso del AA.

Si vuelves a subir un archivo de datos, incluso si los valores ml_use cambiaron, no se actualizará el valor ml_use. No puedes actualizar los valores ml_use después de la importación mediante el uso de la API de Vertex AI.

Usa la etiqueta ml_use

Cuando entrenes tu modelo, especifica Manual (Avanzado) para la división de datos en la consola de Google Cloud. Si entrenas con la API de Vertex IA, usas el objeto FilterSplit, que especifica labels.aiplatform.googleapis.com/ml_use=training para el filtro de entrenamiento, labels.aiplatform.googleapis.com/ml_use=validation para el filtro de validación y labels.aiplatform.googleapis.com/ml_use=test para el filtro de prueba. Por ejemplo:

model = job.run(
dataset=dataset,
model_display_name=_name,
training_filter_split="labels.aiplatform.googleapis.com/ml_use=training",
validation_filter_split="labels.aiplatform.googleapis.com/ml_use=validation",
test_filter_split="labels.aiplatform.googleapis.com/ml_use=test")

Los elementos de datos con un valor ml_use se asignan al conjunto especificado. Los elementos de datos que no tengan el conjunto ml_use se excluirán del proceso de entrenamiento.

División de filtro de datos

Puedes usar otras etiquetas (además de ml-use) y otros campos para dividir tus datos mediante el objeto FilterDivide en la API de Vertex AI. Por ejemplo, puedes configurar trainingFilter como labels.flower=rose, validationFilter como labels.flower=daisy y testFilter como labels.flower=dahlia. Este parámetro de configuración haría que todos los datos etiquetados como rose se agreguen al conjunto de entrenamiento, que todos los datos etiquetados como daisy se agreguen al conjunto de validación y que todos los datos etiquetados como dahlia se agreguen al conjunto de prueba.

Si filtras datos en varios campos, un elemento de datos podría coincidir con más de un filtro. En este caso, el conjunto de entrenamiento tiene prioridad, seguido del conjunto de validación, seguido del conjunto de prueba. En otras palabras, un elemento se coloca en el conjunto de prueba solo si coincide con el filtro del conjunto de prueba, pero no coincide con los filtros de entrenamiento o validación. Si un elemento no coincide con los filtros de ninguno de los conjuntos, se excluye del entrenamiento.

No uses categorías para la división de datos relacionada con lo que predecirá el modelo; cada uno de tus conjuntos debe reflejar el rango de datos que usa el modelo para hacer predicciones. Por ejemplo, no uses los filtros descritos con anterioridad para un modelo que se espera que clasifique imágenes por tipo de flor.

Si no quieres que un filtro coincida con ningún elemento, configúralo como "-" (el signo menos).

División matemática

La división matemática también se conoce como "división de fracción".

De forma predeterminada, tus datos se dividen al azar en los conjuntos, según los porcentajes predeterminados para tu tipo de datos. Puedes cambiar los porcentajes a valores cualquiera que sumen hasta 100 (para la API de Vertex AI, debes usar fracciones que sumen hasta 1.0).

Para cambiar los porcentajes (fracciones), usa el objeto FractionSplit para definir tus fracciones. Para los tipos de datos de imagen, texto y video, también puedes usar la consola de Google Cloud a fin de actualizar los porcentajes de división cuando entrenas tu modelo.