Fine-Tuning von arctic-extract-Modellen

Sie können nun eine Feinabstimmung von arctic-extract-Modellen mit der Funktion Snowflake Cortex Fine-Tuning und Snowflake Datasets vornehmen. Das Fine-Tuning-Modell kann dann für die Ableitung mit der Funktion AI_EXTRACT verwendet werden.

Syntax

Für spezifische Syntax, Nutzungshinweise und Beispiele siehe:

FINETUNE ('CREATE') (SNOWFLAKE.CORTEX)

Erstellt einen Fine-Tuning-Job.

Syntax

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

Erforderliche Parameter

'CREATE'

Gibt an, dass Sie einen Fine-Tuning-Job erstellen möchten.

'training_dataset'

Datenset-Objekt, das für das Training verwendet werden soll. Weitere Informationen dazu finden Sie unter Anforderungen an das Datenset.

Optionale Parameter

'validation_dataset'

Datenset-Objekt, das für die Validierung verwendet werden soll. Weitere Informationen dazu finden Sie unter Anforderungen an das Datenset.

Bemerkung

Der Parameter options wird für das Fine-Tuning von arctic-extract-Modellen nicht unterstützt. Die Anzahl der Epochen wird vom System automatisch ermittelt.

Anforderungen an die Zugriffssteuerung

Berechtigung

Objekt

Anmerkungen

USAGE oder OWNERSHIP

DATABASE

Die Datenbank, in der das Datenset-Objekt gespeichert ist.

USAGE oder OWNERSHIP

SCHEMA

Das Schema, in dem das Datenset-Objekt gespeichert ist.

READ oder OWNERSHIP

STAGE

Der Stagingbereich, in dem die Dokumentdateien gespeichert sind.

USAGE oder OWNERSHIP

SCHEMA

Das Schema, in dem das Fine-Tuning-Modell gespeichert ist.

CREATE MODEL

SCHEMA

Das Schema, in dem das Fine-Tuning-Modell gespeichert ist.

Um die Funktion FINETUNE verwenden zu können, muss die Rolle ACCOUNTADMIN dem Benutzer, der die Funktion aufrufen soll, die Datenbankrolle SNOWFLAKE.CORTEX_USER zuweisen. Weitere Informationen dazu finden Sie unter Erforderliche Berechtigungen für LLM-Funktionen.

Beispiel

  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)

Beschreibt die Eigenschaften eines Fine-Tuning-Jobs.

Informationen zur Syntax und zu den Parametern finden Sie unter FINETUNE ('DESCRIBE') (SNOWFLAKE.CORTEX).

Eine Beispielausgabe für einen erfolgreichen Job beim Fine-Tuning arctic-extract-Modell:

{
  "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",
}

Anforderungen an das Datenset

Das für Training und Validierung verwendete Datenset muss die folgenden Spalten enthalten:

Datei:

Eine Zeichenfolge, die den Dateipfad zu dem zu extrahierenden Dokument enthält. Beispiel: @db.schema.stage/file.pdf

Prompt:

Schlüssel- und Fragepaare für die Extraktion in einem der Formate, die vom responseFormat-Argument der AI_EXTRACT-Funktion unterstützt werden.

Weitere Informationen dazu finden Sie unter AI_EXTRACT.

Antwort:

Ein JSON-Objekt, das Schlüssel- und Antwortpaare enthält.

Bemerkung

Spaltennamen unterscheiden nicht zwischen Groß- und Kleinschreibung und können in beliebiger Reihenfolge im Datenset stehen; jedoch müssen alle erforderlichen Spalten (File, Prompt und Response) vorhanden sein, damit das Datenset gültig ist. Zusätzliche Spalten im Datenset werden ignoriert.

Beachten Sie bei der Vorbereitung des Datensets Folgendes:

  • Das Schema des Fine-Tuning-Modells ist das eindeutige Set aller Fragen im Datenset.

  • Die Antworten in der Response-Spalte müssen mit den Fragen in der Prompt-Spalte durch übereinstimmende Schlüssel in den Spalten``Prompt`` und Response abgeglichen werden.

  • Sie müssen nicht für jedes Dokument dasselbe Set von Fragen angeben.

  • Um die Modellgenauigkeit zu verbessern, fügen Sie für jede Frage eine Zeile mit einer Eingabeaufforderung und einer Antwort hinzu, auch wenn die Standardantwort des Modells korrekt ist. Diese Aktion bestätigt, dass die Standardantwort korrekt ist.

Weitere Informationen zu Datensets finden Sie unter Snowflake Datasets.

Beispiel-Datenset

Datei

Prompt

Antwort

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

Bemerkung

Wenn Sie das Datenset erstellen, stellen Sie die Antwort auf None ein, wenn das Dokument keine Antwort auf die Frage enthält.

Nutzungshinweise

  • Snowflake empfiehlt die Verwendung von mindestens 20 Dokumenten für das Fine-Tuning.

  • Unterstützte Dateiformate für Dokumente sind:

    • PDF

    • PNG

    • JPG, JPEG

    • TIFF, TIF

  • Die maximale Anzahl von Seiten pro Dokument ist:

    • 64 Seiten für AWS US West 2 (Oregon) und AWS Europe Central 1 (Frankfurt)

    • 125 Seiten für AWS US East 1 (N. Virginia) und Azure East US 2 (Virginia)

  • Die maximale Anzahl eindeutiger Dokumentdateien im Datenset ist 1.000. Sie können mehrfach auf dieselbe Dokumentdatei verweisen.

  • Es gibt eine Beschränkung für die Anzahl der Fragen und Dokumente, die in einem Fine-Tuning-Job enthalten sein können. Die Anzahl der Fragen multipliziert mit der Gesamtzahl der Seiten in allen Dokumentdateien des Datensets muss gleich oder kleiner als 50.000 sein.

    Gültige Kombinationen sind beispielsweise:

    Anzahl der Fragen

    Anzahl der Seiten

    Anzahl der Dokumentdateiverweise [1]

    10

    1

    5.000

    100

    1

    500

    10

    10

    500

    25

    10

    200

Erstellen eines Fine-Tuning-Jobs

Um einen Fine-Tuning-Job zu erstellen, müssen Sie ein Datenset-Objekt erstellen, das die Trainingsdaten enthält. Das folgende Beispiel zeigt, wie Sie ein Datenset-Objekt erstellen und das Datenset verwenden, um einen Fine-Tuning-Job für ein``arctic-extract``-Modell zu erstellen.

  1. Erstellen Sie die Tabelle, die die Trainingsdaten enthält:

    CREATE OR REPLACE TABLE my_data_table (f FILE, p VARCHAR, r VARCHAR);
    
    Copy
  2. Füllen Sie die Tabelle mit den Trainingsdaten:

    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. Erstellen Sie das Datenset-Objekt:

    CREATE OR REPLACE DATASET my_dataset;
    
    Copy
  4. Erstellen Sie eine neue Version des Datensets, welche die Trainingsdaten hinzufügt, unter Verwendung der Funktionen FL_GET_STAGE und FL_GET_RELATIVE_PATH zum Abrufen der Dateipfade:

    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. Erstellen eines Fine-Tuning-Jobs:

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

Fine-Tuning arctic-extract-Modell für die Ableitung verwenden

Wenn Sie ein Fine-Tuning arctic-extract-Modell für die Ableitung verwenden möchten, müssen Sie über die folgenden Berechtigungen für das Modellobjekt verfügen:

  • OWNERSHIP

  • USAGE

  • READ

Zur Verwendung des Fine-Tuning arctic-extract-Modells für die Ableitung mit der Funktion AI_EXTRACT geben Sie das Modell mit dem model-Parameter wie im folgenden Beispiel gezeigt an:

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

Sie können Fragen, die für das Fine-Tuning verwendet werden, mit dem responseFormat-Parameter überschreiben, wie im folgenden Beispiel gezeigt:

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

Weitere Informationen dazu finden Sie unter AI_EXTRACT.