微調整 arctic-extract モデル

Snowflake Cortex Fine-tuning 関数および Snowflake Datasets を使用して 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'

トレーニングに使用するデータセットオブジェクト。詳細については、 データセットの要件 をご参照ください。

オプションのパラメーター

'validation_dataset'

検証に使用するデータセットオブジェクト。詳細については、 データセットの要件 をご参照ください。

注釈

options パラメーターは arctic-extract モデルの微調整ではサポートされていません。エポックの数はシステムによって自動的に決定されます。

アクセス制御の要件

権限

オブジェクト

メモ

USAGE または OWNERSHIP

DATABASE

データセットオブジェクトが格納されているデータベース。

USAGE または OWNERSHIP

SCHEMA

データセットオブジェクトが格納されているスキーマ。

READ または OWNERSHIP

STAGE

ドキュメントファイルが格納されているステージ。

USAGE または OWNERSHIP

SCHEMA

微調整されたモデルが格納されているスキーマ。

CREATE MODEL

SCHEMA

微調整されたモデルが格納されているスキーマ。

さらに、FINETUNE関数を使用するには、ACCOUNTADMINロールは、SNOWFLAKECORTEX_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",
}

データセットの要件

トレーニングと検証に使用される データセット には、以下の列が含まれている必要があります。

ファイル:

抽出するドキュメントへのファイルパスを含む文字列。例: @db.schema.stage/file.pdf

プロンプト:

AI_EXTRACT 関数の responseFormat 引数でサポートされている形式のいずれかで抽出するためのキーと質問のペア。

詳細については、 AI_EXTRACT をご参照ください。

応答:

キーと応答のペアを含む JSON オブジェクト。

注釈

列名は大文字と小文字を区別せず、データセット内で任意の順序にすることができます。ただし、データセットが有効であるためには、すべての必須列( FilePrompt 、および Response )が存在する必要があります。データセットの追加の列は無視されます。

データセットを準備するときは、次の点に注意してください。

  • 微調整されたモデルのスキーマは、データセット内のすべての質問の一意のセットです。

  • Response 列の回答は、 Prompt および Response 列のキーを一致させることにより、 Prompt 列の質問と一致する必要があります。

  • すべてのドキュメントについて同じ質問セットを指定する必要はありません。

  • モデルの精度を向上させるには、モデルのデフォルトの応答が正しくても、各質問に対してプロンプトと応答の行を追加します。このアクションは、デフォルトの回答が正確であることを確認します。

データセットの詳細については、 Snowflake Datasets をご参照ください。

データセットの例

ファイル

プロンプト

応答

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

  • ドキュメントごとの最大ページ数は次のとおりです。

    • AWS US 西部2(オレゴン州)および AWS ヨーロッパ中部1(フランクフルト)の場合、64ページ

    • AWS US 東部1(北部バージニア)およびAzure東部 US 2(バージニア)の場合、125ページ

  • データセット内にある一意のドキュメントファイルの最大数は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_STAGE および FL_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

AI_EXTRACT 関数による推論に微調整した arctic-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 をご参照ください。