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:
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.
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.