Preparar dados de ajuste fino supervisionados para modelos Gemini

Neste documento, descrevemos como definir um conjunto de dados de ajuste fino supervisionado para um modelo do Gemini. É possível ajustar os tipos de dados texto, imagem, áudio e documento.

Sobre conjuntos de dados de ajuste fino supervisionados

Um conjunto de dados de ajuste fino supervisionado é usado para ajustar um modelo pré-treinado para uma tarefa ou domínio específico. Os dados de entrada precisam ser semelhantes ao que você espera que o modelo encontre no uso real. Os rótulos de saída precisam representar as respostas ou os resultados corretos para cada entrada.

Conjunto de dados de treinamento

Para ajustar um modelo, você fornece um conjunto de dados de treinamento. Para melhores resultados, recomendamos que você comece com 100 exemplos. Você pode escalonar verticalmente para milhares de exemplos, se necessário. A qualidade do conjunto de dados é muito mais importante do que a quantidade.

Limitações:

  • Máximo de tokens de entrada e saída, por exemplo: 32.000
  • Tamanho máximo do arquivo do conjunto de dados de treinamento: até 1 GB para JSONL.

Conjunto de dados de validação

Recomendamos que você forneça um conjunto de dados de validação. Um conjunto de dados de validação ajuda a medir a eficácia de um job de ajuste.

Limitações:

  • Máximo de tokens de entrada e saída, por exemplo: 32.000
  • Número máximo de exemplos no conjunto de dados de validação: 256
  • Tamanho máximo do arquivo do conjunto de dados de treinamento: até 1 GB para JSONL.

Formato do conjunto de dados

O conjunto de dados de ajuste de modelos precisa estar no formato linhas JSON (JSONL) em que cada linha contém um único exemplo de ajuste. Antes de ajustar o modelo, faça upload do conjunto de dados para um bucket do Cloud Storage.

Exemplo de conjunto de dados para gemini-1.5-pro e gemini-1.5-flash

{
  "systemInstruction": {
    "role": string,
    "parts": [
      {
        "text": string
      }
    ]
  },
  "contents": [
    {
      "role": string,
      "parts": [
        {
          // Union field data can be only one of the following:
          "text": string,
          "fileData": {
            "mimeType": string,
            "fileUri": string
          }
        }
      ]
    }
  ]
}

Parâmetros

O corpo da solicitação contém dados com os seguintes parâmetros:

Parâmetros

contents

Obrigatório: Content

O conteúdo da conversa atual com o modelo.

Para consultas de turno único, esta é uma instância única. Para consultas com várias interações, esse é um campo repetido que contém o histórico da conversa e a solicitação mais recente.

systemInstruction

Opcional: Content

Disponível para gemini-1.5-flash, gemini-1.5-pro e gemini-1.0-pro-002.

Instruções para o modelo gerar um desempenho melhor. Por exemplo, "Responda da forma mais concisa possível" ou "Não use termos técnicos na resposta".

As strings text são contabilizadas no limite de tokens.

O campo role do systemInstruction é ignorado e não afeta o desempenho do modelo.

Conteúdo

O tipo de dados estruturados de base que contém várias partes de uma mensagem.

Essa classe consiste em duas properties principais: role e parts. A propriedade role indica o indivíduo que produz o conteúdo, enquanto a propriedade parts contém vários elementos, cada um representando um segmento de dados em uma mensagem.

Parâmetros

role

Opcional: string

A identidade da entidade que cria a mensagem. Os valores a seguir são compatíveis:

  • user: indica que a mensagem é enviada por uma pessoa real, geralmente uma mensagem gerada pelo usuário.
  • model: indica que a mensagem é gerada pelo modelo.

O valor model é usado para inserir mensagens do modelo na conversa durante conversas com vários turnos.

Para conversas que não têm vários turnos, esse campo pode ser deixado em branco ou sem definição.

parts

part

Uma lista de partes ordenadas que compõem uma única mensagem. Partes diferentes podem ter tipos MIME IANA distintos.

Para ver os limites das entradas, como o número máximo de tokens ou o número de imagens, consulte as especificações do modelo na página Modelos do Google.

Para calcular o número de tokens na solicitação, consulte Receber contagem de tokens.

Partes

Um tipo de dados que contém mídia que faz parte de uma mensagem Content de várias partes.

Parâmetros

text

Opcional: string

Um comando de texto ou snippet de código.

fileData

Opcional: fileData

Dados armazenados em um arquivo.

Exemplo de conjunto de dados para o Gemini 1.0 Pro

Cada exemplo de conversa em um conjunto de dados de ajuste é composto por um campo de mensagens obrigatório.

O campo messages consiste em uma matriz de pares autor-conteúdo. O campo role se refere ao autor da mensagem e está definido como system, user ou model. O papel system é opcional e só pode ocorrer no primeiro elemento da lista de mensagens. Os papéis user ou model são obrigatórios e podem se repetir de maneira alternada.

O campo content é o content da mensagem.

Em cada exemplo, o tamanho máximo combinado para context e messages é de 32.768 tokens. Além disso, cada campo de conteúdo para o campo de modelo não pode exceder 8.192 tokens.

{
  "messages": [
    {
      "role": string,
      "content": string
    }
  ]
}

Manter a consistência com os dados de produção

Os exemplos nos seus conjunto de dados precisam corresponder ao tráfego de produção esperado. Se o conjunto de dados contiver formatação, palavras-chave, instruções ou informações específicas, os dados de produção deverão ser formatados da mesma maneira e conter as mesmas instruções.

Por exemplo, se os exemplos no seu conjunto de dados incluem um "question:" e um "context:", o tráfego de produção também deve ser formatado para incluir um "question:" e um "context:" na mesma ordem em que aparece no exemplos de conjuntos de dados. Se você excluir o contexto, o modelo não reconhecerá o padrão, mesmo que a pergunta exata esteja em um exemplo no conjunto de dados.

Fazer upload de conjuntos de dados de ajuste para o Cloud Storage

Para executar um job de ajuste, é preciso fazer upload de um ou mais conjuntos de dados para um bucket do Cloud Storage. É possível criar um novo bucket do Cloud Storage ou usar um existente para armazenar arquivos de conjuntos de dados. A região do bucket não importa, mas recomendamos que você use um bucket que esteja no mesmo projeto do Google Cloud em que planeja executar o ajuste do modelo.

Quando o bucket estiver pronto, faça o upload do arquivo do conjunto de dados para o bucket.

Seguir as práticas recomendadas para design de comandos

Depois de ter o conjunto de dados de treinamento e treinar o modelo, é hora de criar comandos. É importante seguir a prática recomendada de design de comando no seu conjunto de dados de treinamento para fornecer uma descrição detalhada da tarefa a ser realizada e de como a saída deve ser.

A seguir