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>'
]
)
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'
);
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
responseFormatda 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
Responsedevem corresponder às perguntas na colunaPromptpela correspondência das chaves nas colunasPrompteResponse.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 |
|---|---|---|
|
|
|
|
|
|
|
{
"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.
Crie a tabela que conterá os dados de treinamento:
CREATE OR REPLACE TABLE my_data_table (f FILE, p VARCHAR, r VARCHAR);
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"}';
Crie o objeto de conjunto de dados:
CREATE OR REPLACE DATASET my_dataset;
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 );
Crie um trabalho de ajuste fino:
SELECT SNOWFLAKE.CORTEX.FINETUNE( 'CREATE', 'my_tuned_model', 'arctic-extract', 'snow://dataset/db.schema.my_dataset/versions/v1' );
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')
);
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?']]
);
Para obter mais informações, consulte AI_EXTRACT.