Sobre divisões de dados para modelos do AutoML

Nesta página, descrevemos como os conjuntos de treinamento, validação e teste da Vertex AI usam seus dados para treinar um modelo do AutoML e as maneiras de controlar como os dados são divididos entre esses três conjuntos. O AutoML usa divisões de dados de maneira diferente dependendo do tipo dos dados de treinamento.

Essa página descreve divisões de dados para dados de imagem, texto e vídeo. Para informações sobre divisões de dados tabulares, consulte Divisões de dados para dados tabulares.

Image

Para conjuntos de dados de imagem, o AutoML usa o conjunto de treinamento para treinar o modelo. O conjunto de validação é usado para validar os resultados que o modelo retorna durante o treinamento. Quando o treinamento é concluído, o AutoML usa o conjunto de teste para fornecer as métricas de avaliação finais.

Texto

Para conjuntos de dados de texto, os conjuntos de treinamento e validação são usados para testar diferentes combinações de pré-processamento, arquitetura e hiperparâmetros. Esses experimentos resultam em modelos treinados que são avaliados com o conjunto de validação para melhorar a qualidade e orientar a exploração de combinações de outras opções.

Quando os experimentos complementares não resultam mais em melhorias na qualidade, essa versão do modelo é considerada o modelo treinado final de melhor desempenho. Em seguida, a Vertex AI treina mais dois modelos usando os parâmetros e a arquitetura determinados na fase de ajustes paralelos:

  1. Um modelo treinado com os conjuntos de treinamento e validação.

    A Vertex AI gera as métricas de avaliação do modelo neste modelo usando o conjunto de teste. Essa é a primeira vez em que o conjunto de teste é usado durante o processo. Essa abordagem garante que as métricas de avaliação finais sejam um reflexo imparcial do desempenho do modelo treinado final na produção.

  2. Um modelo treinado com os conjuntos de treinamento, validação e teste.

    Esse modelo é aquele que você usa para solicitar previsões.

Vídeo

Para conjuntos de dados de vídeo, o AutoML usa o conjunto de treinamento para treinar o modelo e, em seguida, usa o conjunto de teste para fornecer as métricas de avaliação finais. O conjunto de validação não é usado para conjuntos de dados de vídeo.

É possível permitir que a Vertex AI divida seus dados automaticamente. Os dados são divididos aleatoriamente nos três conjuntos por porcentagem. Essa é a maneira mais fácil de dividir os dados e funciona bem na maioria dos casos.

Definido Texto Image Vídeo
Treinamento 80 80 80
Validação 10 10 N/A
Testar 10 10 20

Para usar a divisão de dados padrão, aceite o padrão no console do Cloud ou deixe o campo split vazio para a API.

Quando você quer controlar como seus dados são divididos em conjuntos, você tem as seguintes opções:

Você escolhe apenas uma destas opções. Você escolhe quando treinar seu modelo. Algumas dessas opções exigem alterações nos dados de treinamento (por exemplo, o rótulo ml_use). A inclusão de dados ou rótulos para opções de divisão de dados não exige usar essas opções. É possível ainda escolher outra opção ao treinar seu modelo.

Divisão manual para dados não estruturados

A divisão manual também é conhecida como "divisão predefinida".

Para usar o rótulo ml_use para controlar sua divisão de dados, você precisa definir o rótulo ml_use nos seus dados.

Defina um valor para o identificador ml_use

Defina o identificador ml_use para dados de visão, vídeo e texto no momento da importação de dados (por item de dados ou para todo o arquivo de importação) ou após a importação de dados usando o console do Google Cloud.

Como definir ml_use em itens de dados individuais no momento da importação

É possível definir o identificador ml_use em cada item de dados incluindo um valor para o campo aiplatform.googleapis.com/ml_use nos seus dados de linhas JSON ou definindo o valor da primeira coluna do arquivo CSV. Para mais detalhes, consulte as informações sobre como preparar dados para seu tipo de dados.

Se algum dos seus itens de dados for repetido nos dados (se o mesmo vídeo, imagem ou fragmento de texto aparecer várias vezes no arquivo de importação), a Vertex AI usará o valor ml_use para os primeiros itens de dados inseridos por ela e ignorará todos os valores ml_use subsequentes. O primeiro item encontrado não é necessariamente o item mais próximo do início do arquivo de upload.

Como definir ml_use para arquivos de upload inteiros

Se for possível classificar os dados em diferentes arquivos de upload por valor ml_use, defina o valor ml_use para todo o arquivo de upload usando o menu suspenso por arquivo ao fazer upload de arquivos pelo console do Google Cloud ou ao usar o campo de mapa dataItemLabels no método datasets.import.

Se você definir ml_use para um arquivo de upload e ele também contiver valores ml_use, os valores ml_use no arquivo terão precedência sobre o valor do arquivo.

Como definir ml_use após a importação

Depois de fazer upload dos dados, é possível definir ou atualizar o valor de ml_use para itens de dados específicos no console do Google Cloud. Basta selecionar um ou mais itens na visualização em lista e usar o menu suspenso Atribuir uso de ML.

Se você fizer upload de um arquivo de dados novamente, mesmo que os valores ml_use tenham sido alterados, ele não atualizará o valor ml_use. Não é possível atualizar os valores de ml_use após a importação usando a API Vertex AI.

Usar o identificador ml_use

Ao treinar o modelo, você especifica Manual (Avançado) para a divisão de dados no console do Google Cloud. Se você estiver treinando pela API Vertex AI, use o objeto FilterSplit, especificando labels.aiplatform.googleapis.com/ml_use=training como o filtro de treinamento, labels.aiplatform.googleapis.com/ml_use=validation como o filtro de validação e labels.aiplatform.googleapis.com/ml_use=test como o filtro de teste. Exemplo:

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")

Todos os itens de dados com um valor ml_use são atribuídos ao conjunto especificado. Os itens de dados que não têm ml_use definido são excluídos do processo de treinamento.

Divisão de filtro de dados

É possível usar outros rótulos (além de ml-use) e outros campos para dividir seus dados usando o objeto FilterSplit na API Vertex AI. Por exemplo, defina trainingFilter como labels.flower=rose, validationFilter como labels.flower=daisy e testFilter como labels.flower=dahlia. Essa configuração faria com que todos os dados rotulados como rose fossem adicionados ao conjunto de treinamento, todos os dados rotulados como daisy, adicionados ao conjunto de validação, e todos os dados rotulados como dahlia para o conjunto de testes.

Se você filtrar por vários campos, um item de dados poderá corresponder a mais de um filtro. Nesse caso, o conjunto de treinamento tem precedência, seguido pelo conjunto de validação, seguido pelo conjunto de testes. Em outras palavras, um item será colocado no conjunto de teste somente se corresponder ao filtro para o conjunto de teste, mas não para filtros de treinamento ou validação. Se um item não corresponder aos filtros de qualquer um dos conjuntos, ele será excluído do treinamento.

Não use categorias para a divisão de dados relacionadas às previsões que o modelo fará. Cada um dos conjuntos precisa refletir o intervalo de dados que o modelo usa para fazer previsões. Por exemplo, não use os filtros descritos anteriormente para um modelo que precisa classificar imagens por tipo de flor.

Se você não quiser que um filtro corresponda a nenhum item, defina-o como "-" (o sinal de menos).

Divisão matemática

A divisão matemática também é conhecida como "divisão fracionária".

Por padrão, os dados são divididos aleatoriamente nos conjuntos de acordo com as porcentagens padrão do seu tipo de dados. É possível alterar as porcentagens para quaisquer valores que totalizam 100 (para a API Vertex AI, use frações que totalizam 1,0).

Para alterar os percentuais (frações), use o objeto FractionSplit para definir as frações. Para tipos de dados de imagem, texto e vídeo, use também o console do Google Cloud para atualizar as porcentagens de divisão ao treinar o modelo.