En esta página, se muestra cómo entrenar un modelo de detección de objetos de AutoML a partir de un conjunto de datos de imágenes mediante la consola de Google Cloud o la API de Vertex AI.
Entrena un modelo de AutoML
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.
Haga clic en Entrenar un modelo nuevo.
Para el método de entrenamiento, selecciona
AutoML.En la sección Elige dónde usar el modelo, elige la ubicación del host del modelo:
Cloud, Edge o Vertex AI Vision.Haz clic en Continuar.
Ingresa un nombre para el modelo.
Si deseas configurar el forma en que se dividen los datos de entrenamiento, expande Opciones avanzadas y selecciona una opción de división de datos. Obtén más información.
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 la pestaña correspondiente a tu idioma o entorno:
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: Región en la que se encuentra el conjunto de datos y se crea el modelo. Por ejemplo,
us-central1
. - PROJECT: El ID del proyecto.
- TRAININGPIPELINE_DISPLAYNAME: Obligatorio. Un nombre visible para trainingPipeline.
- DATASET_ID: El número de ID del conjunto de datos que se usará para el entrenamiento.
fractionSplit
: Opcional Una de las diversas opciones del AA posibles usa opciones de división para tus datos. EnfractionSplit
, los valores deben sumar 1. Por ejemplo:-
{"trainingFraction": "0.7","validationFraction": "0.15","testFraction": "0.15"}
-
- MODEL_DISPLAYNAME*: Un nombre visible para el modelo subido (creado) por TrainingPipeline.
- MODEL_DESCRIPTION*: Es una descripción del modelo.
- modelToUpload.labels*: Cualquier conjunto de pares clave-valor para organizar tus modelos. Por ejemplo:
- "env": "prod"
- "nivel": "backend"
- MODELTYPE†: El tipo de modelo alojado en la nube que se entrenará. Las opciones son las siguientes:
CLOUD_1
: Es un modelo que se adapta mejor para su uso en Google Cloud y que no se puede exportar. En comparación con los modelos CLOUD_HIGH_ACCURACY_1 y CLOUD_LOW_LATENCY_1 de arriba, se espera que tenga una calidad de predicción más alta y una latencia más baja.CLOUD_HIGH_ACCURACY_1
: Es un modelo que se adapta mejor para su uso en Google Cloud y que no se puede exportar. Se espera que este modelo tenga una latencia más alta, pero también debe tener una calidad de predicción más alta que otros modelos de nube.CLOUD_LOW_LATENCY_1
: Es un modelo que se adapta mejor para su uso en Google Cloud y que no se puede exportar. Se espera que este modelo tenga una latencia baja, pero puede tener una calidad de predicción menor que otros modelos en la nube.
- NODE_HOUR_BUDGET†: El costo de entrenamiento real será igual o menor a este valor. Para los modelos de Cloud, el presupuesto debe ser de 20,000 a 900,000 milihoras de procesamiento de nodo (inclusive). El valor predeterminado es 216,000, que representa un día en el tiempo, lo que supone que se usan 9 nodos.
- PROJECT_NUMBER: El número de proyecto de tu proyecto generado de forma automática.
* | La descripción del archivo de esquema que especificas en trainingTaskDefinition describe el uso de este campo. |
† | El archivo de esquema que especificas en trainingTaskDefinition declara y describe este campo. |
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Cuerpo JSON de la solicitud:
{ "displayName": "TRAININGPIPELINE_DISPLAYNAME", "inputDataConfig": { "datasetId": "DATASET_ID", "fractionSplit": { "trainingFraction": "DECIMAL", "validationFraction": "DECIMAL", "testFraction": "DECIMAL" } }, "modelToUpload": { "displayName": "MODEL_DISPLAYNAME", "description": "MODEL_DESCRIPTION", "labels": { "KEY": "VALUE" } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_image_object_detection_1.0.0.yaml", "trainingTaskInputs": { "modelType": ["MODELTYPE"], "budgetMilliNodeHours": NODE_HOUR_BUDGET } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content
La respuesta contiene información sobre las especificaciones y los TRAININGPIPELINE_ID.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Java.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Node.js.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
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 de referencia de la API de 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. Cuando uses la API de Vertex AI, usa el objeto Split
para determinar la división de datos. El objeto Split
se puede incluir en el objeto InputConfig
como uno de varios tipos de objeto, cada uno de los cuales proporciona una forma diferente de dividir los datos de entrenamiento. Puedes seleccionar solo un método.
-
FractionSplit
:- TRAINING_FRACTION: La fracción de los datos de entrenamiento que se usarán para el conjunto de entrenamiento.
- VALIDATION_FRACTION: La fracción de los datos de entrenamiento que se usarán para el conjunto de validación. No se usa para datos de video.
- TEST_FRACTION: La fracción de los datos de entrenamiento que se usarán para el conjunto de prueba.
Si se especifican cualquiera de las fracciones, se deben especificar todas. Las fracciones deben sumar hasta 1.0. Los valores predeterminados para las fracciones difieren según tu tipo de datos. Obtén más información.
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION },
-
FilterSplit
: - TRAINING_FILTER: los elementos de datos que coinciden con este filtro se usan para el conjunto de entrenamiento.
- VALIDATION_FILTER: los elementos de datos que coinciden con este filtro se usan para el conjunto de validación. Debe ser “-” para los datos de video.
- TEST_FILTER: los elementos de datos que coinciden con este filtro se usan para el conjunto de prueba.
Estos filtros se pueden usar con la etiqueta ml_use
o con cualquier etiqueta que apliques a tus datos. Obtén más información sobre cómo usar la etiqueta de ml-use y otras etiquetas a fin de filtrar tus datos.
En el siguiente ejemplo, se muestra cómo usar el objeto filterSplit
con la etiqueta ml_use
, con el conjunto de validación incluido:
"filterSplit": { "trainingFilter": "labels.aiplatform.googleapis.com/ml_use=training", "validationFilter": "labels.aiplatform.googleapis.com/ml_use=validation", "testFilter": "labels.aiplatform.googleapis.com/ml_use=test" }