Saiba nesta página como treinar um modelo de reconhecimento de ação do AutoML em um conjunto de dados de vídeo usando o console do Google Cloud ou a API Vertex AI.
Treinar um modelo do AutoML
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.
Digite o nome de exibição do novo 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 Continuar.
Selecione o método de treinamento do modelo.
- A
AutoML
é uma boa escolha para vários casos de uso. Seq2seq+
é uma boa opção para experimentação. O algoritmo provavelmente terá uma convergência mais rápida do que oAutoML
, porque a arquitetura dele é mais simples e usa um espaço de pesquisa menor. Nossos experimentos descobriram que o Seq2Seq+ tem um bom desempenho com um orçamento pequeno e com conjuntos de dados menores do que 1 GB.
- A
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.
Alguns minutos após o início do treinamento, é possível verificar a estimativa de hora do nó de treinamento a partir das informações de propriedade do modelo. Se você cancelar o treinamento, não haverá cobrança sobre o produto atual.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT: o ID do projeto.
- LOCATION: região em que o conjunto de dados está localizado e o modelo é criado. Por exemplo,
us-central1
. - TRAINING_PIPELINE_DISPLAY_NAME: obrigatório. Um nome de exibição para o TrainingPipeline.
- DATASET_ID: ID do conjunto de dados de treinamento;
-
TRAINING_FRACTION, TEST_FRACTION: o objeto
fractionSplit
é opcional; É usada para controlar a divisão de dados. Para mais informações sobre como controlar a divisão de dados, consulte Sobre divisões de dados para modelos do AutoML. Por exemplo:{"trainingFraction": "0.8","validationFraction": "0","testFraction": "0.2"}
- MODEL_DISPLAY_NAME: nome de exibição do modelo treinado.
- MODEL_DESCRIPTION: uma descrição para o modelo.
- MODEL_LABELS: qualquer conjunto de pares de chave-valor para organizar os modelos. Por exemplo:
- "env": "prod"
- "tier": "backend"
- EDGE_MODEL_TYPE:
MOBILE_VERSATILE_1
: uso geral
- PROJECT_NUMBER: o número do projeto gerado automaticamente
Método HTTP e URL:
POST https://LOCATION -aiplatform.googleapis.com/beta1/projects/PROJECT /locations/LOCATION /trainingPipelines
Corpo JSON da solicitação:
{ "displayName": "TRAINING_PIPELINE_DISPLAY_NAME ", "inputDataConfig": { "datasetId": "DATASET_ID ", "fractionSplit": { "trainingFraction": "TRAINING_FRACTION ", "validationFraction": "0", "testFraction": "TEST_FRACTION " } }, "modelToUpload": { "displayName": "MODEL_DISPLAY_NAME ", "description": "MODEL_DESCRIPTION ", "labels": { "KEY ": "VALUE " } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_video_object_tracking_1.0.0.yaml", "trainingTaskInputs": { "modelType": ["EDGE_MODEL_TYPE "], } }
Para enviar a solicitação, escolha uma destas opções:
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/beta1/projects/PROJECT /locations/LOCATION /trainingPipelines"
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/beta1/projects/PROJECT /locations/LOCATION /trainingPipelines" | Select-Object -Expand Content
A resposta contém informações sobre especificações, bem como o TRAININGPIPELINE_ID.
Resposta
{ "name": "projects/PROJECT_NUMBER /locations/LOCATION /trainingPipelines/TRAININGPIPELINE_ID ", "displayName": "TRAININGPIPELINE_DISPLAYNAME ", "inputDataConfig": { "datasetId": "DATASET_ID ", "fractionSplit": { "trainingFraction": 0.8, "validationFraction": 0, "testFraction": 0.2 } }, "trainingTaskDefinition":OBJECTIVE , "trainingTaskInputs": { "modelType": "EDGE_MODEL_TYPE ", }, "modelToUpload": { "displayName": "MODEL_DISPLAY_NAME ", "labels": { "KEY1 ": "VALUE1 ", "KEY2 ": "VALUE2 " } }, "state": "PIPELINE_STATE_PENDING", "createTime": "2020-07-14T17:16:55.098953Z", "updateTime": "2020-07-14T17:16:55.098953Z" }
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.
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Saiba mais na documentação de referência da API SDK da Vertex AI para 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" }