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>'
]
)
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'
);
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 derPrompt-Spalte durch übereinstimmende Schlüssel in den Spalten``Prompt`` undResponseabgeglichen 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 |
|---|---|---|
|
|
|
|
|
|
|
{
"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.
Erstellen Sie die Tabelle, die die Trainingsdaten enthält:
CREATE OR REPLACE TABLE my_data_table (f FILE, p VARCHAR, r VARCHAR);
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"}';
Erstellen Sie das Datenset-Objekt:
CREATE OR REPLACE DATASET my_dataset;
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 );
Erstellen eines Fine-Tuning-Jobs:
SELECT SNOWFLAKE.CORTEX.FINETUNE( 'CREATE', 'my_tuned_model', 'arctic-extract', 'snow://dataset/db.schema.my_dataset/versions/v1' );
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')
);
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?']]
);
Weitere Informationen dazu finden Sie unter AI_EXTRACT.