Sobre divisões de dados para modelos do AutoML

Nesta página, descrevemos como os três conjuntos (treinamento, validação e teste) são usados quando você treina um modelo do AutoML e as maneiras de controlar como os dados sãovdivididos nos conjuntos dos modelos do AutoML.

Como o AutoML usa divisões de dados

O AutoML usa divisões de dados de maneira diferente dependendo do tipo dos dados de treinamento.

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.

Tabular

Para modelos tabulares, o processo de treinamento usa as seguintes etapas:

  1. Modelos de avaliação

    O conjunto de treinamento é usado para treinar modelos com diferentes combinações de pré-processamento, arquitetura e opções de hiperparâmetros. Esses modelos são avaliados no conjunto de validação para avaliar a qualidade, o que orienta a exploração de combinações de outras opções. Os melhores parâmetros e arquiteturas determinados na fase de ajuste paralelo são usados para treinar dois modelos do conjunto, conforme descrito abaixo.

  2. Avaliação do modelo

    O Vertex AI treina um modelo de avaliação usando os conjuntos de treinamento e validação como dados de treinamento. O Vertex AI gera as métricas de avaliação do modelo finais 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.

  3. Modelo de exibição

    Um modelo é treinado com os conjuntos de treinamento, validação e teste para maximizar a quantidade de dados de treinamento. Esse modelo é aquele que você usa para solicitar previsões.

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.

Opções de divisão de dados

Deixe a Vertex AI dividir seus dados automaticamente; em muitos casos, essa é a melhor abordagem. No entanto, se você quiser controlar como seus dados são divididos em conjuntos, existem algumas opções para fazer isso.

Você tem as seguintes opções para dividir seus dados:

Você escolhe apenas uma destas opções: você escolhe quando treina o modelo.

Algumas dessas opções exigem alterações nos dados de treinamento (por exemplo, o rótulo ml_use ou a coluna Data/hora). A inclusão de dados ou rótulos para opções de divisão de dados não exige que você use essas opções. É possível escolher outra opção ao treinar o modelo.

Como usar a divisão padrão

A Vertex AI executa automaticamente a divisão de dados para você. Os dados são divididos aleatoriamente nos três conjuntos por porcentagem, dependendo do tipo de dados. Essa é a maneira mais fácil de dividir os dados e funciona bem na maioria dos casos.

Set Texto Image Vídeo Tabular
Treinamento 80 80 80 80
Validação 10 10 N/A 10
Teste 10 10 20 10

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.

Como usar o rótulo ml_use

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. Consulte Como definir um valor para o rótulo ml_use.

Para os tipos de dados do AutoML diferentes de tabular, quando você treinar o modelo, especifique Manual (Avançado) para a divisão de dados no Console do Cloud. Se você estiver treinando usando a API Vertex AI, use o objeto FilterSplit, especificando aiplatform.googleapis.com/ml_use=training para o filtro de treinamento, aiplatform.googleapis.com/ml_use=validation para o filtro de validação e aiplatform.googleapis.com/ml_use=test para o filtro de teste.

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

Para o tipo de dados tabular, use a coluna de divisão de dados.

Como usar o 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 na divisão de dados relacionada ao que o modelo será prever; cada um dos conjuntos deve refletir o intervalo de dados que o modelo usará para fazer previsões. Por exemplo, você não deve usar 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 algum item, defina-o como "-" (o sinal de subtração).

O filtro de dados não é compatível com dados tabulares.

Alterar as porcentagens

Se você não escolher outra maneira de controlar a divisão de dados, eles serão divididos aleatoriamente nos conjuntos de acordo com as percentagens padrão para o tipo de dados. É possível alterar as porcentagens para quaisquer valores que totalizam até 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 Cloud para atualizar as porcentagens de divisão ao treinar o modelo.

Como usar uma coluna de tempo

Para dados de treinamento tabulares, se os dados dependem de tempo, é possível designar uma coluna como uma coluna Data/hora. A Vertex AI usa a coluna Data/hora para dividir seus dados, com as primeiras linhas usadas para treinamento, as linhas seguintes para validação e as últimas linhas para teste. Se você estiver usando a API, também será possível especificar as porcentagens de dados a serem usados para os conjuntos. Para mais informações, consulte a coluna Tempo.

Como definir um valor para o rótulo ml_use

Para usar o rótulo ml_use para controlar sua divisão de dados, primeiro defina um valor para o rótulo ml_use para seus itens de dados.

A forma como você define o rótulo ml_use para os dados depende do seu tipo de dados:

Como definir ml_use para dados de visão, vídeo e texto

Defina o rótulo 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 rótulo ml_use em cada item de dados incluindo um valor para o campo aiplatform.googleapis.com/ml_use nos seus dados JSONL 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

Caso seus dados possam ser classificados 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 o upload dos arquivos. o Console do Cloud ou usando 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 Cloud. Basta selecionar um ou mais itens na visualização de lista e usar o campo 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 valores ml_use após a importação usando a API Vertex AI.

Como definir ml_use para dados tabulares

Para especificar ml_use por linha de dados de treinamento para dados tabulares, você fornece uma coluna de divisão de dados nos dados de treinamento e especifica-a ao treinar o modelo. Para mais informações, consulte a coluna Divisão de dados.