Ajuste fino de modelos arctic-extract

Agora você pode fazer o ajuste fino de modelos arctic-extract usando a função Snowflake Cortex Fine-tuning e Conjuntos de dados do Snowflake. Depois disso, o modelo ajustado poderá ser usado para inferência com a função AI_EXTRACT.

Sintaxe

Para sintaxes, notas de uso e exemplos específicos, consulte:

FINETUNE ('CREATE') (SNOWFLAKE.CORTEX)

Cria um trabalho de ajuste fino.

Sintaxe

SNOWFLAKE.CORTEX.FINETUNE(
  'CREATE',
  '@<database>.<schema>.<model_name>',
  'arctic-extract',
  '<training_dataset>'
  [
    , '<validation_dataset>'
  ]
)
Copy

Parâmetros obrigatórios

'CREATE'

Especifica que você deseja criar um trabalho de ajuste fino.

'training_dataset'

Objeto de conjunto de dados a ser usado para treinamento. Para obter mais informações, consulte Requisitos do conjunto de dados.

Parâmetros opcionais

'validation_dataset'

Objeto de conjunto de dados a ser usado para validação. Para obter mais informações, consulte Requisitos do conjunto de dados.

Nota

O parâmetro options não é compatível com ajuste fino de modelos arctic-extract. O número de épocas é determinado automaticamente pelo sistema.

Requisitos de controle de acesso

Privilégio

Objeto

Notas

USAGE ou OWNERSHIP

DATABASE

O banco de dados no qual o objeto de conjunto de dados está armazenado.

USAGE ou OWNERSHIP

SCHEMA

O esquema em que o objeto de conjunto de dados está armazenado.

READ ou OWNERSHIP

STAGE

A área de preparação em que os arquivos de documento estão armazenados.

USAGE ou OWNERSHIP

SCHEMA

O esquema no qual o modelo ajustado está armazenado.

CREATE MODEL

SCHEMA

O esquema no qual o modelo ajustado está armazenado.

Além disso, para usar a função FINETUNE, a função ACCOUNTADMIN deve conceder a função de banco de dados SNOWFLAKE.CORTEX_USER ao usuário que chamará a função. Consulte o tópico Privilégios obrigatórios funções LLM para obter mais detalhes.

Exemplo

  SELECT SNOWFLAKE.CORTEX.FINETUNE(
  'CREATE',
  '@database.schema.model_name',
  'arctic-extract`,
  'snow://dataset/training_ds/versions/2',
  'snow://dataset/validation_ds/versions/4'
);
Copy

FINETUNE ('DESCRIBE') (SNOWFLAKE.CORTEX)

Descreve as propriedades de um trabalho de ajuste fino.

Para sintaxe e parâmetros, consulte FINETUNE ('DESCRIBE') (SNOWFLAKE.CORTEX).

Um exemplo de saída de um trabalho bem-sucedido durante o ajuste fino do modelo arctic-extract:

{
  "base_model":"arctic-extract",
  "created_on":1717004388348,
  "finished_on":1717004691577,
  "id":"ft_6556e15c-8f12-4d94-8cb0-87e6f2fd2299",
  "model":"mydb.myschema.my_tuned_model",
  "progress":1.0,
  "status":"SUCCESS",
  "training_data":"snow://dataset/training_ds/versions/2",
  "trained_tokens":2670734,
  "training_result":{"validation_loss":1.0138969421386719,"training_loss":0.6477728401547047},
  "validation_data":"snow://dataset/validation_ds/versions/4",
}

Requisitos do conjunto de dados

O conjunto de dados usado para treinamento e validação deve conter as seguintes colunas:

Arquivo:

Uma cadeia de caracteres contendo o caminho do arquivo para o documento para extração. Por exemplo: @db.schema.stage/file.pdf

Prompt:

Pares de chave e pergunta para extração em um dos formatos compatíveis com o argumento responseFormat da função AI_EXTRACT.

Para obter mais informações, consulte AI_EXTRACT.

Resposta:

Um objeto JSON contendo pares de chave e resposta.

Nota

Os nomes das colunas não diferenciam maiúsculas de minúsculas e podem estar em qualquer ordem no conjunto de dados; no entanto, todas as colunas necessárias (File, Prompt e Response) devem estar presentes para que o conjunto de dados seja válido. Colunas adicionais no conjunto de dados são ignoradas.

Ao preparar o conjunto de dados, observe o seguinte:

  • O esquema do modelo com ajuste fino é o conjunto exclusivo de todas as perguntas no conjunto de dados.

  • As respostas na coluna Response devem corresponder às perguntas na coluna Prompt pela correspondência das chaves nas colunas Prompt e Response.

  • Você não precisa especificar o mesmo conjunto de perguntas para cada documento.

  • Para melhorar a precisão do modelo, adicione um prompt e uma linha de resposta para cada pergunta, mesmo que a resposta padrão do modelo esteja correta. Essa ação confirma que a resposta padrão é precisa.

Para obter mais informações sobre conjuntos de dados, consulte Conjuntos de dados do Snowflake.

Conjunto de dados de exemplo

Arquivo

Prompt

Resposta

file1.pdf

{'date': 'What is the date?', 'total': 'What is the total amount?'}

{'date': '2024-06-30', 'total': '82.50'}

file2.pdf

['invoice_number: What is the invoice number?', 'vendor: What is the vendor name?']

{'invoice_number': '543433434', 'vendor': 'Example Corp'}

file3.pdf

{
  "schema":
  {
    "type": "object",
    "properties": {
      "deductions": {
        "description": "Deductions",
        "type": "object",
        "properties": {
          "deductions_name": {
            "type": "array"
          },
          "current": {
            "type": "array"
          }
        }
      }
    }
  }
}
{
  "deductions": {
    "deductions_name": [
      "Federal Tax",
      "Wyoming State Tax",
      "SDI",
      "Soc Sec / OASDI",
      "Health Insurance Tax",
      "None"
    ],
    "current": [
      "82.50",
      "64.08",
      "None",
      "13.32",
      "91.74",
      "21.46"
    ]
  }
}

Nota

Ao criar o conjunto de dados, defina a resposta como None se o documento não contiver uma resposta à pergunta.

Notas de uso

  • A Snowflake recomenda usar pelo menos 20 documentos para ajuste fino.

  • Os formatos de arquivo compatíveis com documentos são:

    • PDF

    • PNG

    • JPG, JPEG

    • TIFF, TIF

  • O número máximo de páginas por documento é:

    • 64 páginas para AWS US West 2 (Oregon) e AWS Europe Central 1 (Frankfurt)

    • 125 páginas para AWS US East 1 (N. Virginia) e Azure East US 2 (Virginia)

  • O número máximo de arquivos de documentos exclusivos no conjunto de dados é 1.000. Você pode referenciar o mesmo arquivo de documento várias vezes.

  • Existe um limite de quantas perguntas e documentos podem estar em um trabalho de ajuste fino. O número de perguntas multiplicado pelo número total de páginas em todos os arquivos de documento no conjunto de dados deve ser igual ou inferior a 50.000.

    Por exemplo, algumas combinações válidas são:

    Número de perguntas

    Número de páginas

    Número de referências de arquivos de documento [1]

    10

    1

    5.000

    100

    1

    500

    10

    10

    500

    25

    10

    200

Criar um trabalho de ajuste fino

Para criar um trabalho de ajuste fino, você deve criar um objeto de conjunto de dados que contenha os dados de treinamento. O exemplo a seguir mostra como criar um objeto de conjunto de dados e usá-lo para criar um trabalho de ajuste fino para um modelo arctic-extract.

  1. Crie a tabela que conterá os dados de treinamento:

    CREATE OR REPLACE TABLE my_data_table (f FILE, p VARCHAR, r VARCHAR);
    
    Copy
  2. Preencha a tabela com os dados de treinamento:

    INSERT INTO my_data_table (f, p, r)
    SELECT TO_FILE('@db.schema.stage', '1.pdf'), '{"net": "What is the net value?"}', '{"net": "3,762.56"}';
    
    Copy
  3. Crie o objeto de conjunto de dados:

    CREATE OR REPLACE DATASET my_dataset;
    
    Copy
  4. Crie uma nova versão do conjunto de dados que adiciona os dados de treinamento, usando as funções FL_GET_STAGE e FL_GET_RELATIVE_PATH, para obter os caminhos dos arquivos:

    ALTER DATASET my_dataset
    ADD VERSION 'v1' FROM (
      SELECT FL_GET_STAGE(f) || '/' || FL_GET_RELATIVE_PATH(f) AS "file",
           p AS "prompt",
           r AS "response"
      FROM my_data_table
    );
    
    Copy
  5. Crie um trabalho de ajuste fino:

    SELECT SNOWFLAKE.CORTEX.FINETUNE(
      'CREATE',
      'my_tuned_model',
      'arctic-extract',
      'snow://dataset/db.schema.my_dataset/versions/v1'
    );
    
    Copy

Usar seu modelo arctic-extract com ajuste fino para inferência

Para usar o modelo arctic-extract com ajuste fino para inferência, certifique-se de ter os seguintes privilégios no objeto de modelo:

  • OWNERSHIP

  • USAGE

  • READ

Para usar o modelo arctic-extract com ajuste fino para inferência com a função AI_EXTRACT, especifique o modelo usando o parâmetro model, como mostrado no exemplo a seguir:

SELECT AI_EXTRACT(
  model => 'db.schema.my_tuned_model',
  file => TO_FILE('@db.schema.files','document.pdf')
);
Copy

Você pode substituir perguntas usadas para ajuste fino usando o parâmetro responseFormat, como mostrado no exemplo a seguir:

SELECT AI_EXTRACT(
  model => 'db.schema.my_tuned_model',
  file => TO_FILE('@db.schema.files','document.pdf'),
  responseFormat => [['name', 'What is the first name of the employee?'], ['city', 'Where does the employee live?']]
);
Copy

Para obter mais informações, consulte AI_EXTRACT.