Nesta página, mostramos como treinar um modelo de detecção de objetos do AutoML com base em um conjunto de dados de imagem usando o console do Google Cloud ou a API Vertex AI.
Treinar um modelo do AutoML
Console do Google Cloud
No Console do Google Cloud, na seção da Vertex AI, acesse a página Conjuntos de dados.
Clique no nome do conjunto de dados que você quer usar para treinar seu modelo para abrir a página de detalhes.
Clique em Treinar novo modelo.
Para o método de treinamento, selecione o
AutoML.Na seção Escolha onde usar o modelo, escolha o local do host do modelo:
Cloud, Edge ou Vertex AI Vision.Clique em Continuar.
Dê um nome para o modelo.
Se você quiser definir manualmente como os dados de treinamento são divididos, expanda as Opções avançadas e selecione uma opção de divisão de dados. Saiba mais.
Clique em Iniciar treinamento.
O treinamento do modelo pode levar muitas horas dependendo do tamanho e da complexidade dos dados, além do orçamento de treinamento, se você tiver especificado um. Você pode fechar essa guia e voltar a ela mais tarde. Você receberá um e-mail quando o treinamento do seu modelo for concluído.
API
Selecione a guia abaixo para seu idioma ou ambiente:
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: região em que o conjunto de dados está localizado e o modelo é criado. Por exemplo,
us-central1
. - PROJECT: o ID do projeto.
- TRAININGPIPELINE_DISPLAYNAME: obrigatório. Um nome de exibição do trainingPipeline.
- DATASET_ID: o número do ID do conjunto de dados a ser usado para treinamento.
fractionSplit
: opcional. Um dos vários modelos de ML possíveis pode usar opções de divisão para os dados. ParafractionSplit
, os valores precisam somar 1. Por exemplo:-
{"trainingFraction": "0.7","validationFraction": "0.15","testFraction": "0.15"}
-
- MODEL_DISPLAYNAME*: um nome de exibição do modelo enviado (criado) pelo TrainingPipeline.
- MODEL_DESCRIPTION*: uma descrição para o modelo.
- modelToUpload.labels*: qualquer conjunto de pares de chave-valor para organizar seus modelos. Por exemplo:
- "env": "prod"
- "tier": "backend"
- MODELTYPE†: o tipo de modelo hospedado na nuvem a ser treinado. As opções
são:
CLOUD_1
: um modelo mais adequado para ser usado no Google Cloud e que não pode ser exportado. Em comparação com os modelos CLOUD_HIGH_ACCURACY_1 e CLOUD_LOW_LATENCY_1 acima, a previsão é de qualidade de previsão mais alta e latência mais baixa.CLOUD_HIGH_ACCURACY_1
: um modelo mais adequado para ser usado no Google Cloud e que não pode ser exportado. Espera-se que este modelo tenha uma latência maior, mas também tenha uma qualidade de previsão maior do que outros modelos de nuvem.CLOUD_LOW_LATENCY_1
: um modelo mais adequado para ser usado no Google Cloud e que não pode ser exportado. Espera-se que este modelo tenha baixa latência, mas pode ter uma qualidade de previsão menor do que outros modelos de nuvem.
- NODE_HOUR_BUDGET†: o custo de treinamento real será igual ou menor que este valor. Para modelos de nuvem, o orçamento precisa ser de 20.000 a 900 mil horas de nó (inclusive). O valor padrão é 216.000, o que representa um dia em tempo decorrido, desde que nove nós sejam usados.
- PROJECT_NUMBER: o número do projeto gerado automaticamente
* | A descrição do arquivo de esquema que você especifica em trainingTaskDefinition descreve o uso deste campo. |
† | O arquivo de esquema especificado em trainingTaskDefinition declara e descreve esse campo. |
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
Corpo JSON da solicitação:
{ "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 a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
A resposta contém informações sobre especificações, bem como o TRAININGPIPELINE_ID.
Java
Antes de testar esse exemplo, siga as instruções de configuração para Java no Guia de início rápido da Vertex AI sobre como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar essa amostra, siga as instruções de configuração para Node.js Guia de início rápido da Vertex AI: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Controlar a divisão de dados usando REST
É possível controlar como os dados de treinamento são divididos entre os conjuntos de
treinamento, validação e teste. Ao usar a API Vertex AI, use o Split
objeto para determinar a divisão de dados. O objeto Split
pode ser incluído no objeto InputConfig
como um dos vários tipos de objeto, cada um fornecendo uma maneira diferente de
dividir os dados de treinamento. É possível selecionar apenas um método.
-
FractionSplit
:- TRAINING_FRACTION: a fração dos dados de treinamento a ser usada para o conjunto de treinamento.
- VALIDATION_FRACTION: a fração dos dados de treinamento a ser usada para o conjunto de validação. Não usada para dados de vídeo.
- TEST_FRACTION: a fração dos dados de treinamento a ser usada para o conjunto de teste.
Se alguma das frações for especificada, tudo deverá ser especificado. As frações precisam ser adicionadas a 1,0. Os valores padrão das frações variam de acordo com o tipo de dados. Saiba mais.
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION },
-
FilterSplit
: - TRAINING_FILTER: itens de dados que correspondem a esse filtro são usados no conjunto de treinamento.
- VALIDATION_FILTER: os itens de dados que correspondem a esse filtro são usados no conjunto de validação. Precisa ser "-" para dados de vídeo.
- TEST_FILTER: os itens de dados que correspondem a esse filtro são usados no conjunto de teste.
Esses filtros podem ser usados com o rótulo ml_use
ou com qualquer rótulo aplicado aos seus dados. Saiba mais sobre como usar
o rótulo ml-use label
e outros rótulos
para filtrar os dados.
O exemplo a seguir mostra como usar o objeto
filterSplit
com o rótulo ml_use
, com o conjunto de validação
incluído:
"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" }