Modell feinabstimmen

Optimiert ein Modell mit dem angegebenen Training-Datensatz.

Optionen 

  • Kontoname ist ein Textausdruck für den Namen des zu verwendenden KI-Kontos. Verwenden Sie in der aktuellen Datei den Scriptschritt „KI-Konto konfigurieren“, um das Konto einzurichten und ihm diesen Namen zuzuweisen, bevor dieser Scriptschritt ausgeführt wird.

  • Basismodell ist ein Textausdruck für das zu feinabstimmende Textgenerierungsmodell. Unterstützte Modelle finden Sie unter FileMaker – Technische Daten.

  • Training-Daten gibt die Quelle der Training-Daten für die Feinabstimmung an:

    • Tabelle: Verwendet Daten aus dem angegebenen Tabellenauftreten basierend auf der aktuellen Ergebnismenge von Datensätzen. Für das Training werden die Daten aus dem Abschlussfeld als Antwort des Assistant verwendet; die Daten aus allen anderen Feldern werden als entsprechende Benutzer-Prompts verwendet.

    • Datei: Verwendet eine JSONL-Datei mit Training-Daten. Jede Zeile muss ein gültiges JSON-Objekt sein, das einen Benutzer-Prompt und die entsprechende Antwort des Assistant enthält.

  • Antwortziel gibt das Feld oder die Variable an, an die der Modellanbieter ein JSON-Objekt mit Informationen über den durch diesen Scriptschritt gestarteten Feinabstimmungsjob zurückgibt.

  • Parameter feinabstimmen ist ein Textausdruck für ein JSON-Objekt, das aus Schlüssel-Wert-Paaren für Feinabstimmungsoptionen besteht, die vom Modellanbieter unterstützt werden.

Optionen nur verfügbar, wenn für Training-Daten die Option Tabelle festgelegt ist:

  • Der Wert für Tabelle gibt ein Tabellenauftreten an, das für die Training-Daten verwendet werden soll.

  • Abschlussfeld gibt das Feld in Tabelle an, das die erwarteten Antworten oder Antworten des Assistenten für das Training enthält.

Optionen nur verfügbar, wenn für Training-Daten die Option Datei festgelegt ist:

  • Der Wert für Datei gibt eine Liste mit einem oder mehreren Pfaden für die JSONL-Datei an, die die Training-Daten enthält. Pfade müssen einen der file Pfadpräfixe verwenden. Der Scriptschritt durchsucht die Liste und fügt die erste JSONL-Datei hinzu, die er findet. Weitere Informationen finden Sie unter Erstellen von Dateipfaden.

Kompatibilität 

Produkt Unterstützt
FileMaker Pro Ja
FileMaker Go Ja
FileMaker WebDirect Ja
FileMaker Server Ja
FileMaker Cloud Ja
FileMaker Data API Ja
Custom Web Publishing Ja

Ursprung in Version 

22.0

Beschreibung 

Dieser Scriptschritt sendet Training-Daten an einen unterstützten Modellanbieter, um mithilfe von Low-Rank-Adaptation (LoRA)-Techniken eine feinabgestimmte Version eines Basis-KI-Modells zu erstellen. Durch Feinabstimmung können Sie das Verhalten eines Modells für bestimmte Aufgaben, Domänen oder Antwortstile anpassen, indem Sie es anhand Ihrer eigenen Daten trainieren und dabei die allgemeinen Fähigkeiten des Basismodells beibehalten. Sie können beispielsweise ein Modell feinabstimmen, damit es die spezifische Terminologie, den Schreibstil oder das Fachwissen Ihres Unternehmens besser berücksichtigt. LoRA ist eine effiziente Methode, mit der dem Modell kleine trainierbare Parameter hinzugefügt werden, ohne die ursprünglichen Gewichtungen zu verändern. Dieser Ansatz erfordert im Vergleich zur vollständigen Feinabstimmung des Modells deutlich weniger Rechenressourcen und Speicherplatz und erzielt dabei vergleichbare Leistungsverbesserungen.

Das unter Kontoname angegebene KI-Konto muss für einen der folgenden Modellanbieter konfiguriert sein:

  • OpenAI

  • Der KI-Modellserver, der mit FileMaker Server auf einem Mac mit Apple Chip bereitgestellt wird

Andere Modellanbieter und Betriebssysteme werden für die Feinabstimmung nicht unterstützt. Siehe FileMaker - Technische Daten.

Training-Daten

Training-Daten können entweder aus einer FileMaker-Tabelle oder aus einer JSON Lines (JSONL)-Datei bereitgestellt werden. Jedes Training-Beispiel besteht aus einem Benutzer-Prompt und der gewünschten Antwort des Assistant. Das Modell ist dann in der Lage, bei ähnlichen Prompts Antworten zu generieren, die Ihren Training-Beispielen ähneln.

Training-Daten von Ergebnis

Tabelle

Für das angegebene Tabellenauftreten werden Daten aus Abschlussfeld als Assistant-Antwort und Daten aus allen anderen Feldern als entsprechender Benutzer-Prompt gesendet. Für jeden Datensatz in der aktuellen Ergebnismenge (oder für jeden Bezugsdatensatz, wenn eine Bezugstabelle angegeben ist) erstellt der Scriptschritt ein JSON-Objekt im folgenden Format und sendet alle Objekte als JSONL-Datei an den Modellanbieter.

Kopieren
{
  "messages"
  [
    {
      "content" : "<Feldname1>=<Daten1>, <Feldname2>=<Daten2>, ... ",
      "role" : "user"
    },
    {
      "content" : "<Abschlussfeld-Daten>",
      "role" : "assistant"
    }
  ]
}

Hinweis  Mit dieser Option können Sie nicht angeben, welche Felder im Benutzer-Prompt gesendet werden. Um die Felder anzugeben, die in den Benutzer-Prompt aufgenommen werden sollen, verwenden Sie den Scriptschritt „Datensätze als JSONL speichern“, um eine JSONL-Datei zu erstellen, und verwenden Sie dann die Option Datei in diesem Scriptschritt, um diese Datei als Training-Daten zu senden.

Datei

Sendet die erste JSONL-Datei, die in der durch Datei angegebenen Pfadliste erfolgreich gefunden wurde. Jede Zeile der JSONL-Datei muss ein JSON-Objekt enthalten, das mindestens den Benutzer-Prompt und die entsprechende Antwort des Assistant in diesem Format enthält:

Kopieren
{
  "messages"
  [
    {
      "content" : "<Benutzer-Prompt>",
      "role" : "user"
    },
    {
      "content" : "<Assistenten-Prompt>",
      "role" : "assistant"
    }
  ]
}

Hinweis  Zur besseren Übersichtlichkeit werden sie hier in mehreren Zeilen angezeigt, aber jedes JSON-Objekt muss in der JSONL-Datei in einer einzelnen Zeile stehen.

Sie können den Scriptschritt „Datensätze als JSONL speichern“ mit der Option Format für Feinabstimmung aktiviert verwenden, um diese Datei aus Datensatzdaten zu erstellen.

Antwortziel

Um Informationen über den Feinabstimmungsjob zu erhalten, der durch diesen Scriptschritt gestartet wird, geben Sie eine Variable oder ein Feld für die Option Antwortziel an. Die Feinabstimmung kann einige Zeit in Anspruch nehmen. Erkundigen Sie sich daher beim Modellanbieter, wann der Prozess abgeschlossen ist und das Feinabstimmungsmodell einsatzbereit ist.

Beispielsweise sendet der KI-Modellserver eine Antwort wie die unten gezeigte, wenn:

  • Die durch Datei angegebene JSONL-Datei my-training-data.jsonl ist.

  • Basismodell google/codegemma-7b-it ist.

  • Der Wert des in Parameter feinabstimmen angegebenen Schlüssels fine_tuned_model_name „my-fine-tuned-model-name“ lautet. Der Wert des Schlüssels fine_tuned_model in Antwortziel der vollständige Name ist, der vom KI-Modellserver zugewiesen wurde.

Kopieren
{
  "result": {
    "object": "fine_tuning.job",
    "id": "fm-ftjob-1753297022103",
    "file_id": "fm-ft-train-1753297022070",
    "model": "google/codegemma-7b-it",
    "created_at": 1753297022103,
    "fine_tuned_model": "fm-mlx-my-fine-tuned-model-name",
    "status": "InWarteschlange",
    "training_file": "meine-Training-Daten.jsonl",
    "tags": [
      "fine-tune"
    ]
  }
}

Um festzustellen, wann der KI-Modellserver die Feinabstimmung abgeschlossen hat, melden Sie sich in FileMaker Server Admin Console an. Siehe Hinweise.

Parameter feinabstimmen

Mit der Option Parameter feinabstimmen können Sie Feinabstimmungsparameter angeben, die vom Modellanbieter unterstützt werden. Die Namen der Schlüssel für die unterstützten Parameter und deren gültige Bereiche finden Sie in der Dokumentation des Modellanbieters.

Für den mit FileMaker Server bereitgestellten KI-Modellserver können Sie bei Bedarf die folgenden Schlüssel und Werte verwenden, um Feinabstimmungen vorzunehmen. Wenn kein Schlüssel angegeben ist oder die Option Parameter feinabstimmen nicht verwendet wird, verwendet der Scriptschritt die Standardwerte.

Parameter Beschreibung Standardwert

max_steps

Gesamtzahl der Trainingsschritte (oder Iterationen). Mehr Iterationen erfordern mehr Arbeitsspeicher und Zeit, bergen jedoch das Risiko einer Überanpassung.

1000

learning_rate

Zahl, die steuert, wie stark das Modell während jedes Training-Schritts angepasst wird. Höhere Werte bedeuten schnelleres Training, aber auch das Risiko, die optimale Leistung zu überschreiten. Niedrigere Werte bedeuten ein stabileres Training, aber eine langsamere Konvergenz.

2e-4 (0.0002)

lora_layers

Anzahl der Ebenen des Modells, auf die während der Feinabstimmung LoRA-Adapter angewendet werden. Niedrigere Werte bedeuten schnelleres Training bei geringerem Speicherverbrauch, was für einfache Modelländerungen von Vorteil ist. Höhere Werte bedeuten ein langsameres Training mit höherem Speicherverbrauch, was für komplexere Modelländerungen besser ist.

4

batch_size

Anzahl der gemeinsam verarbeiteten Training-Beispiele vor der Aktualisierung der Modellgewichtungen während der Feinabstimmung. Niedrigere Werte bedeuten einen geringeren Speicherverbrauch und ein langsameres Training. Höhere Werte bedeuten mehr Speicherverbrauch und schnelleres Training.

1

fine_tuned_model_name

Steuert den benutzerdefinierten Namen Ihres feinabgestimmtem Modells nach dem Training. Für den Root-Namen, den Sie in diesem Parameter angeben, wandelt der KI-Modellserver Leerzeichen in Bindestriche um und fügt das Präfix fm-mlx- hinzu, um den vollständigen Namen zu erzeugen, den Sie in anderen Scriptschritten und Funktionen verwenden sollten, wenn Sie dieses feinabgestimmte Modell verwenden möchten. Wenn Sie beispielsweise mein Support Modell angeben, lautet der vollständige Name fm-mlx-mein-Support-Modell. Wenn kein Wert angegeben ist, hängt die KI-Modellserver-App einen Zeitstempel an das Präfix an (z. B. fm-mlx-1753215585244).

Der vollständige Name des feinabgestimmten Modells wird in Antwortziel zurückgegeben.

Warnung  Wenn der vollständige Name mit dem eines vorhandenen feinabgestimmten Modells übereinstimmt, wird das vorhandene feinabgestimmte Modell gelöscht, bevor das Training für das neue feinabgestimmte Modell beginnt.

Zeitstempel

Dieses JSON-Objekt legt beispielsweise Schlüssel in der Option Parameter feinabstimmen fest:

Kopieren
{
  "max_steps": 2000,
  "learning_rate": 1e-4,
  "batch_size": 2,
  "lora_layers": 6,
  "fine_tuned_model_name": "Kundensupport-v1"
}

Hinweise 

  • Die Feinabstimmung erfordert erhebliche Rechenressourcen. Die gleichzeitige Ausführung mehrerer Feinabstimmungsjobs auf dem KI-Modellserver kann die Systemleistung beeinträchtigen.

  • Um den Status von feinabgestimmten Modellen auf dem KI-Modellserver zu überwachen (z. B. um festzustellen, wann das Training abgeschlossen ist), öffnen Sie FileMaker Server Admin Console. Dort können Sie auch direkt feinabgestimmte Modelle erstellen, indem Sie eine JSONL-Datei hochladen. Siehe Erstellen von feinabgestimmten KI-Modellen in der FileMaker Server-Hilfe.

Beispiel 1- Grundlegende Feinabstimmung anhand von Tabellendaten

Führt eine Feinabstimmung eines OpenAI-Modells anhand von Daten aus einer Tabelle durch. Das Script konfiguriert ein KI-Konto für OpenAI und wechselt zum Layout Support_QA. Die Tabelle Support_QA enthält unter anderem Felder für Fragen und Antworten. Das Script führt eine Suche durch, um die gewünschte Ergebnismenge zu erhalten, und sendet dann Daten aus diesen Datensätzen, um ein GPT-4.1-Modell feinabzustimmen, wobei das Antwortfeld für Abschlussfeld angegeben wird (Daten aus allen anderen Feldern werden als Benutzer-Prompt gesendet).

Kopieren
KI-Konto konfigurieren [ Kontoname: "mein-Konto" ; Modellanbieter: OpenAI ; API-Schlüssel: Global::OpenAI_API_Schlüssel ]

Gehe zu Layout [ "Support_QA" (Support_QA) ]

Ergebnismenge suchen [ Wiederherstellen ]

Modell feinabstimmen [ Kontoname: "mein-Konto" ; Basismodell: "gpt-4.1-2025-04-14" ; Training-Daten: Tabelle ; "Support_QA" ; Abschlussfeld: Support_QA::Antwort ; Antwortziel: $$Antwortziel ]

Wenn OpenAI Sie benachrichtigt, dass das Training abgeschlossen ist, und Ihnen den Namen des feinabgestimmten Modells mitteilt, können Sie das Modell in Scriptschritten wie Antwort von Modell generieren verwenden:

Kopieren
Antwort von Modell generieren [ Kontoname: "mein-Konto" ; Modell: "ft:gpt-4o-mini-2024-07-18:my-org::LBNO71Qq" ; Benutzer-Prompt: $Frage ; Agentischer Modus ; Antwort: $$Antwort ]

Beispiel 2 – Feinabstimmung mithilfe einer JSONL-Datei

Führt eine Feinabstimmung eines Modells auf dem KI-Modellserver durch, indem die in Beispiel 2 für den Scriptschritt „Datensätze als JSONL speichern“ erstellte JSONL-Datei gesendet wird. Das Script konfiguriert ein KI-Konto und setzt die Variable $TrainingDatei auf den Pfad für die JSONL-Datei im Ordner „Dokumente“.

Das Script setzt dann die Variable $Parameter auf ein JSON-Objekt, das die Schlüssel-Wert-Paare enthält, die für die Feinabstimmungsparameter verwendet werden sollen, einschließlich der Festlegung des Root-Namens für das feinabgestimmte Modell.

Schließlich sendet das Script die durch $TrainingDatei angegebene JSONL-Datei an den KI-Modellserver und gibt dabei das feinabzustimmende Basismodell, die zu verwendenden Parameter und die Variable $Antwort zum Speichern der Antwort an. Damit der vollständige Name des feinabgestimmten Modells später verwendet werden kann, ruft das Script den Namen aus $Antwort ab und speichert ihn in einem Variablenfeld.

Kopieren
KI-Konto konfigurieren [ Kontoname: "KI-Modell-Server" ; Modellanbieter: Benutzerdefiniert ; Endpunkt: "https://meinserver.beispiel.com/llm/v1/" ; API-Schlüssel: Global::Feinabstimmung_API_Schlüssel ; SSL-Zertifikate verifizieren ]

Variable setzen [ $TrainingDatei ; Wert: Hole (DokumentenPfad) & "training_data.jsonl" ]

Variable setzen [ $Parameter ; Wert: 
  Setze Var ( [
    json = "{}" ;
    json = JSONSetElement ( json; "max_steps"; 1500; JSONString ) ;
    json = JSONSetElement ( json; "learning_rate"; 1e-4; JSONString ) ;
    json = JSONSetElement ( json; "batch_size"; 2; JSONString ) ;
    json = JSONSetElement ( json; "fine_tuned_model_name"; "product-expert-v2" ; JSONString )
  ] ;
    json
  )
]

Modell feinabstimmen [ Kontoname:  "KI-Modell-Server" ; Basismodell: "google/codegemma-7b-it" ; Training-Daten: Datei ; "$TrainingDatei" ; Antwortziel: $Antwortziel ; Parameter feinabstimmen: $Parameter ]

Feldwert setzen [ Global::feinabgestimmtes_Modell ; JSONGetElement ( $Antwortziel ; "result.fine_tuned_model" ) ]