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 Google Cloud consola o la API de Vertex AI.
Entrenar un modelo de AutoML
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.
Haz clic en Entrenar un modelo nuevo.
En el método de entrenamiento, selecciona
AutoML.En la sección Choose where to use the model (Elige dónde usar el modelo), selecciona la ubicación del host del modelo:
Cloud (Nube), Edge (Periferia) o Vertex AI Vision.Haz clic en Continuar.
Introduzca un nombre para el modelo.
Si quieres definir manualmente cómo se dividen los datos de entrenamiento, despliega Opciones avanzadas y selecciona una opción de división de datos. Más información
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
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: región en la que se encuentra el conjunto de datos y se crea el modelo. Por ejemplo,
us-central1
. - PROJECT: tu ID de proyecto.
- TRAININGPIPELINE_DISPLAYNAME: obligatorio. Nombre visible del recurso TrainingPipeline.
- DATASET_ID: número de ID del conjunto de datos que se va a usar para el entrenamiento.
fractionSplit
: opcional. Una de las varias opciones de uso de aprendizaje automático splitposibles para tus datos. EnfractionSplit
, los valores deben sumar 1. Por ejemplo:-
{"trainingFraction": "0.7","validationFraction": "0.15","testFraction": "0.15"}
-
- MODEL_DISPLAYNAME*: nombre visible del modelo subido (creado) por TrainingPipeline.
- MODEL_DESCRIPTION*: descripción del modelo.
- modelToUpload.labels*: cualquier conjunto de pares clave-valor para organizar tus modelos. Por ejemplo:
- "env": "prod"
- "tier": "backend"
- MODELTYPE†: Tipo de modelo alojado en Cloud que se va a entrenar. Las opciones
son:
CLOUD_1
: un modelo que se adapta mejor para usarse en Google Cloud y que no se puede exportar. En comparación con los modelos CLOUD_HIGH_ACCURACY_1 y CLOUD_LOW_LATENCY_1 anteriores, se espera que tenga una mayor calidad de predicción y una menor latencia.CLOUD_HIGH_ACCURACY_1
: un modelo que se adapta mejor para usarse en Google Cloud y que no se puede exportar. Se espera que este modelo tenga una latencia mayor, pero también debería tener una calidad de predicción superior a la de otros modelos en la nube.CLOUD_LOW_LATENCY_1
: un modelo que se adapta mejor para usarse en Google Cloud y que no se puede exportar. Se espera que este modelo tenga una latencia baja, pero puede que tenga una calidad de predicción inferior a la de otros modelos en la nube.
- NODE_HOUR_BUDGET†: El coste de formación real será igual o inferior a este valor. En el caso de los modelos de nube, el presupuesto debe ser de entre 20.000 y 900.000 milésimas de horas de nodo (ambos incluidos). El valor predeterminado es 216.000,que representa un día en tiempo real, suponiendo que se usen 9 nodos.
- PROJECT_NUMBER: el número de proyecto generado automáticamente de tu proyecto
* | La descripción del archivo de esquema que especifiques en trainingTaskDefinition describe el uso de este campo. |
† | El archivo de esquema que especifiques 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, así como el elemento TRAININGPIPELINE_ID.
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las Node.js instrucciones de configuración de la guía de inicio rápido de Vertex AI con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de Vertex AI.
Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
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
Puedes controlar cómo se divide tu conjunto de 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 tus datos. El objeto Split
se puede incluir en el objeto InputConfig
como uno de los varios tipos de objetos, cada uno de los cuales proporciona una forma diferente de dividir los datos de entrenamiento. Solo puedes seleccionar un método.
-
FractionSplit
:- TRAINING_FRACTION: la fracción de los datos de entrenamiento que se va a usar en el conjunto de entrenamiento.
- VALIDATION_FRACTION: la fracción de los datos de entrenamiento que se va a usar en el conjunto de validación. No se usa para los datos de vídeo.
- TEST_FRACTION: la fracción de los datos de entrenamiento que se va a usar en el conjunto de pruebas.
Si se especifica alguna de las fracciones, deben especificarse todas. La suma de las fracciones debe ser 1,0. Los valores predeterminados de las fracciones varían en función del tipo de datos. Más información
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION },
-
FilterSplit
: - TRAINING_FILTER: los elementos de datos que coincidan con este filtro se usarán en el conjunto de entrenamiento.
- VALIDATION_FILTER: los elementos de datos que coinciden con este filtro se usan en el conjunto de validación. Debe ser "-" para los datos de vídeo.
- TEST_FILTER: los elementos de datos que coinciden con este filtro se usan en el conjunto de prueba.
Estos filtros se pueden usar con la etiqueta ml_use
o con cualquier etiqueta que aplique a sus datos. Consulte más información sobre cómo usar la etiqueta ml-use y otras etiquetas para filtrar sus datos.
En el siguiente ejemplo se muestra cómo usar el objeto filterSplit
con la etiqueta ml_use
y 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" }