微调 arctic-extract 模型

您现在可以使用 Snowflake Cortex Fine-tuning 函数和 Snowflake 数据集 微调 arctic-extract 模型。然后,微调后的模型可通过 AI_EXTRACT 函数用于推理。

语法

有关具体语法、使用说明和示例,请参阅:

FINETUNE ('CREATE') (SNOWFLAKE.CORTEX)

创建微调作业。

语法

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

必填参数

'CREATE'

指定您要创建微调作业。

'training_dataset'

用于训练的数据集对象。有关更多信息,请参阅 Dataset 要求

可选参数

'validation_dataset'

用于验证的数据集对象。有关更多信息,请参阅 Dataset 要求

备注

options 参数不能用于微调 arctic-extract 模型。轮次数由系统自动确定。

访问控制要求

权限

对象

备注

USAGE 或 OWNERSHIP

DATABASE

用于存储数据集对象的数据库。

USAGE 或 OWNERSHIP

SCHEMA

用于存储数据集对象的架构。

READ 或 OWNERSHIP

STAGE

用于存储文档文件的暂存区。

USAGE 或 OWNERSHIP

SCHEMA

用于存储微调后模型的架构。

CREATE MODEL

SCHEMA

用于存储微调后模型的架构。

此外,要使用 FINETUNE 函数,ACCOUNTADMIN 角色必须将 SNOWFLAKE.CORTEX_USER 数据库角色授予将调用该函数的用户。有关详细信息,请参阅 LLM 函数所需权限 主题。

示例

  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)

描述微调作业的属性。

有关语法和参数,请参阅 FINETUNE ('DESCRIBE') (SNOWFLAKE.CORTEX)

微调 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",
}

Dataset 要求

用于训练和验证的 数据集 必须包含以下列:

文件:

包含要提取的文档的文件路径的字符串。例如:@db.schema.stage/file.pdf

提示:

AI_EXTRACT 函数的 responseFormat 实参支持的任一格式提取的键和问题对。

有关更多信息,请参阅 AI_EXTRACT

响应:

包含密钥和响应对的 JSON 对象。

备注

列名不区分大小写,在数据集中可以按任意顺序排列;但是,所有必填列(FilePromptResponse)必须存在,数据集才有效。数据集中的其他列将被忽略。

准备数据集时,请注意以下事项:

  • 微调后模型的架构是数据集中所有问题的唯一集合。

  • Response 列中的答案应该与 Prompt 列中的问题匹配,方法是匹配 PromptResponse 列中的键。

  • 您不必为每个文档指定相同的问题集。

  • 要提高模型准确性,请为每个问题添加提示和响应行,即使模型的默认响应正确也应如此。此操作确认默认答案准确无误。

有关数据集的更多信息,请参阅 Snowflake 数据集

数据集示例

文件

提示

响应

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"
    ]
  }
}

备注

创建数据集时,如果文档不包含问题的答案,则将响应设置为 None

使用说明

  • Snowflake 建议至少使用 20 个文档进行微调。

  • 支持的文档文件格式包括:

    • PDF

    • PNG

    • JPG、JPEG

    • TIFF、TIF

  • 每个文档的最大页数为:

    • 64 页,适用于 AWS US 西部 2(俄勒冈州)和 AWS 欧洲中部 1(法兰克福)

    • 125 页,适用于 AWS US 东部 1(弗吉尼亚北部)和 Azure 东部 US 2(弗吉尼亚)

  • 数据集中独立文档文件的最大数量为 1,000。您可以多次引用同一个文档文件。

  • 微调作业中问题和文档的数量有限制。问题数乘以数据集中所有文档文件的总页数必须等于或小于 50,000。

    例如,一些有效的组合如下:

    问题数

    页数

    文档文件引用数 [1]

    10

    1

    5,000

    100

    1

    500

    10

    10

    500

    25

    10

    200

创建微调作业。

要创建微调作业,您必须创建一个包含训练数据的数据集对象。以下示例演示如何创建数据集对象,并使用该数据集为 arctic-extract 模型创建微调作业。

  1. 创建包含训练数据的表:

    CREATE OR REPLACE TABLE my_data_table (f FILE, p VARCHAR, r VARCHAR);
    
    Copy
  2. 使用训练数据填充表:

    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. 创建数据集对象:

    CREATE OR REPLACE DATASET my_dataset;
    
    Copy
  4. 创建包含训练数据的新版数据集,使用 FL_GET_STAGEFL_GET_RELATIVE_PATH 函数获取文件路径:

    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. 创建微调作业:

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

使用微调后的 arctic-extract 模型进行推理

要使用微调后的 arctic-extract 模型进行推理,请确保您对模型对象具有以下权限:

  • OWNERSHIP

  • USAGE

  • READ

要使用微调后的 arctic-extract 模型通过 AI_EXTRACT 函数进行推理,请使用 model 参数指定模型,如以下示例所示:

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

您可以使用 responseFormat 参数覆盖用于微调的问题,如以下示例所示:

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

有关更多信息,请参阅 AI_EXTRACT

语言: 中文