Model fijnafstemmen

Stemt een model fijn af met de opgegeven set trainingsgegevens.

Opties 

  • Accountnaam is een tekstexpressie voor de naam van de te gebruiken AI-account. Gebruik in het huidige bestand de scriptstap AI-account configureren scriptstap om het account in te stellen en deze naam toe te wijzen op elk moment voordat deze scriptstap wordt uitgevoerd.

  • Basismodel is een tekstexpressie voor het tekstgeneratiemodel om deze af te stemmen. Zie de technische specificaties van FileMaker voor ondersteunde modellen.

  • Trainingsgegevens specificeert de bron van trainingsgegevens voor fijnafstemming:

    • Tabel: gebruikt gegevens uit de opgegeven tabel op basis van de huidige gevonden reeks records. Voor training worden gegevens uit Voltooiingsveld gebruikt als de hulpreactie; gegevens uit alle andere velden worden gebruikt als de bijbehorende gebruikersprompt.

    • Bestand: gebruikt een JSONL-bestand met trainingsgegevens. Elke regel moet een geldig JSON-object zijn met een gebruikersprompt en de bijbehorende hulpreactie.

  • Antwoorddoel geeft het veld of de variabele aan waar de modelprovider een JSON-object retourneert met informatie over de fijnafstemmingstaak die met deze scriptstap is gestart.

  • Parameters voor fijnafstemming is een tekstexpressie voor een JSON-object dat bestaat uit sleutel-waardeparen voor aanvullende parameters die worden ondersteund door de modelprovider.

Opties zijn alleen beschikbaar als Trainingsgegevens is ingesteld op Tabel:

  • De waarde voor Tabel geeft een voorkomen van de tabel aan die moet worden gebruikt voor trainingsgegevens.

  • Voltooiingsveld geeft het veld in Tabel aan met de verwachte antwoorden van de assistent of antwoorden voor training.

Opties zijn alleen beschikbaar als Trainingsgegevens is ingesteld op Bestand:

  • De waarde voor Bestand geeft een lijst aan van een of meer paden voor het JSONL-bestand met trainingsgegevens. Paden moeten een van de voorvoegsels van het bestandspad gebruiken. De scriptstap doorzoekt de lijst en voegt het eerste JSONL-bestand toe dat met succes is gevonden. Raadpleeg Bestandspaden maken.

Compatibiliteit 

Product Ondersteund
FileMaker Pro Ja
FileMaker Go Ja
FileMaker WebDirect Ja
FileMaker Server Ja
FileMaker Cloud Ja
FileMaker Data API Ja
Custom Web Publishing Ja

Afkomstig uit versie 

22.0

Beschrijving 

Deze scriptstap stuurt trainingsgegevens naar een ondersteunde modelprovider om een fijnafgestemde versie van een AI-basismodel te maken met behulp van low-rank adaptation-technieken (LoRA). Met fijnafstemming kunt u het gedrag van een model aanpassen voor specifieke taken, domeinen of responsstijlen door het model te trainen op uw eigen gegevens, terwijl de algemene mogelijkheden van het basismodel behouden blijven. U kunt bijvoorbeeld een model verfijnen zodat het beter reageert met behulp van de specifieke terminologie, schrijfstijl of domeinexpertise van uw bedrijf. LoRA is een efficiënte methode die kleine trainbare parameters toevoegt aan het model zonder de oorspronkelijke gewichten te wijzigen. Deze benadering vereist aanzienlijk minder computerbronnen en geheugen in vergelijking met volledige fijnafstemming van modellen, terwijl vergelijkbare prestatieverbeteringen worden bereikt.

Het AI-account dat is opgegeven door Accountnaam moet worden geconfigureerd voor een van de volgende modelproviders:

  • OpenAI

  • De AI-modelserver die bij FileMaker Server is geleverd op een Apple Silicon Mac

Andere modelproviders en besturingssystemen worden niet ondersteund voor fijnafstemming. Raadpleeg de technische specificaties van FileMaker .

Trainingsgegevens

Trainingsgegevens kunnen worden geleverd vanuit een FileMaker-tabel of vanuit een JSON-lijnbestand (JSONL). Elk trainingsvoorbeeld bestaat uit een gebruikersprompt en de gewenste hulpreactie. Het model kan dan antwoorden genereren die vergelijkbaar zijn met uw trainingsvoorbeelden als u soortgelijke prompts krijgt.

Trainingsgegevens van Doet het volgende

Tabel

Voor de opgegeven tabel worden gegevens uit Voltooiingsveld verzonden als de hulpreactie en gegevens uit alle andere velden als de bijbehorende gebruikersprompt. Voor elke record in de huidige gevonden reeks (of voor elke gerelateerde record als u een gerelateerde tabel opgeeft) wordt met de scriptstap een JSON-object in de volgende indeling gemaakt en vervolgens als JSONL-bestand naar de modelprovider verzonden.

Kopiëren
{
  "messages"
  [
    {
      "content" : "<FieldName1>=<Data1>, <FieldName2>=<Data2>, ... ",
      "role" : "user"
    },
    {
      "content" : "<Completion_Field_Data>",
      "role" : "assistant"
    }
  ]
}

Opmerking  Met deze optie kunt u niet in de gebruikersprompt opgeven welke velden worden verzonden. Als u de velden wilt opgeven die in de gebruikersprompt moeten worden opgenomen, gebruikt u de Records opslaan als JSONL scriptstap om een JSONL-bestand te maken. Gebruik vervolgens de optie Bestand in deze scriptstap om dat bestand als trainingsgegevens te verzenden.

Bestand

Hiermee wordt het eerste JSONL-bestand verzonden dat zich in de lijst met paden bevindt dat door Bestand is opgegeven. Elke regel van het JSONL-bestand moet een JSON-object bevatten met ten minste de gebruikersprompt en de bijbehorende hulpreactie in deze indeling:

Kopiëren
{
  "messages"
  [
    {
      "content" : "<User_Prompt>",
      "role" : "user"
    },
    {
      "content" : "<Assistant_Prompt>",
      "role" : "assistant"
    }
  ]
}

Opmerking  Hoewel dit voor de duidelijkheid op meerdere regels wordt weergegeven, moet elk JSON-object zich op één regel in het JSONL-bestand bevinden.

U kunt de Records opslaan als JSONL scriptstap gebruiken met de optie Indeling voor fijnafstemming ingeschakeld om dit bestand te maken op basis van recordgegevens.

Responsdoel

Als u informatie wilt verkrijgen over de fijnafstemmingstaak die met deze scriptstap wordt gestart, geeft u een variabele of veld op voor de optie Antwoorddoel. Fijnafstemming kan veel tijd in beslag nemen, dus u moet contact opnemen met de modelleverancier om te bepalen wanneer het proces is voltooid en het fijnafgestemde model klaar is voor gebruik.

De AI-modelserver verzendt bijvoorbeeld een reactie zoals hieronder weergegeven wanneer:

  • Het JSONL-bestand dat wordt opgegeven door Bestand my-training-data.jsonl is.

  • Het Basismodel google/codegemma-7b-IT is.

  • De waarde van de sleutel FINE_TUNED_model_name die is opgegeven in Parameters voor fijnafstemming my-fine-tuned-model-name is. De waarde van de sleutel fine_tuned_model in Antwoorddoel de volledige naam is die is toegewezen door de AI-modelserver.

Kopiëren
{
  "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": "queued",
    "training_file": "my-training-data.jsonl",
    "tags": [
      "fine-tune"
    ]
  }
}

Meld u aan bij de FileMaker Server Admin Console om te bepalen wanneer de AI-modelserver de fijnafstemming heeft voltooid. zie Opmerkingen.

Parameters voor fijnafstemming

De optie Parameters voor fijnafstemming kan worden gebruikt om fijnafstemmingsparameters op te geven die worden ondersteund door de modelprovider. Raadpleeg de documentatie van de modelprovider voor sleutelnamen van ondersteunde parameters en hun geldige bereiken.

Voor de AI-modelserver die bij FileMaker Server wordt geleverd, kunt u de volgende sleutels en waarden gebruiken om de fijnafstemming zo nodig aan te passen. Als er geen sleutel is opgegeven of als de optie Parameters voor fijnafstemming niet wordt gebruikt, worden de standaardwaarden in de scriptstap gebruikt.

Parameter Beschrijving Standaardwaarde

max_steps

Totaal aantal trainingsstappen (of herhalingen). Meer herhalingen vereisen meer machinegeheugen en tijd, maar het risico bestaat dat er overfitting optreedt.

1000

learning_rate

Getal dat bepaalt hoeveel het model aanpast tijdens elke trainingsstap. Hogere waarden betekenen snellere training, maar het risico bestaat dat de optimale prestaties worden overschreden. Lagere waarden betekenen een stabielere training, maar tragere convergentie.

2e-4 (0,0002)

lora_layers

Aantal lagen van het model waarop LoRA-adapters worden toegepast tijdens de fijnafstemming. Lagere waarden betekenen een snellere training met minder geheugengebruik, wat goed is voor eenvoudige modelwijzigingen. Hogere waarden betekenen een tragere training met een hoger geheugengebruik, wat beter is voor complexere modelwijzigingen.

4

batch_size

Aantal trainingsvoorbeelden dat samen is verwerkt voordat de gewichten van het model worden bijgewerkt tijdens de fijnafstemming. Lagere waarden betekenen minder geheugengebruik en een tragere training. Hogere waarden betekenen meer geheugengebruik en een snellere training.

1

fine_tuned_model_name

Bepaalt de aangepaste naam van uw fijnafgestemde model na de training. Voor de rootnaam die u in deze parameter opgeeft, converteert de AI-modelserver spaties naar koppeltekens en voegt het voorvoegsel fm-mlx- toe om de volledige naam te produceren die u in andere scriptstappen en -functies moet gebruiken wanneer u dit nauwkeurig afgestemde model wilt gebruiken. Als u bijvoorbeeld my support model opgeeft, is de volledige naam fm-mlx-my-support-model. Als er geen waarde is opgegeven, voegt de AI-modelserver een tijdstempel toe achter het voorvoegsel (bijvoorbeeld fm-mlx-1753215585244).

De volledig afgestemde modelnaam wordt geretourneerd in Antwoorddoel.

Waarschuwing  Als de volledige naam overeenkomt met die van een bestaand fijnafgestemd model, wordt het bestaande fijnafgestemde model verwijderd voordat de training voor het nieuwe fijnafgestemde model begint.

timestamp

Dit JSON-object stelt bijvoorbeeld sleutels in bij de optie Parameters voor fijnafstemming:

Kopiëren
{
  "max_steps": 2000,
  "learning_rate": 1e-4,
  "batch_size": 2,
  "lora_layers": 6,
  "fine_tuned_model_name": "customer-support-v1"
}

Opmerkingen 

  • Voor fijnafstemming zijn aanzienlijke rekenbronnen nodig. Het uitvoeren van meer dan één fijnafstemmingstaak op de AI-modelserver kan de systeemprestaties negatief beïnvloeden.

  • Open de FileMaker Server Admin Console om de status van nauwkeurig afgestemde modellen op de AI-modelserver te controleren (bijvoorbeeld om te zien wanneer de training is voltooid). Daar kunt u ook rechtstreeks fijnafgestemde modellen maken door een JSONL-bestand te uploaden. Zie Met AI fijnafgestemde modellen maken in de Help van FileMaker Server.

Voorbeeld 1- Basisfijnafstemming met behulp van tabelgegevens

Hiermee wordt een OpenAI-model verfijnd met gegevens uit een tabel. Het script configureert een AI-account voor OpenAI en gaat naar de indeling Support_QA. De Support_QA-tabel bevat onder andere de velden Vraag en Antwoord. Het script voert een zoekactie uit om de gewenste gevonden reeks te verkrijgen en verzendt vervolgens gegevens uit die records om een GPT-4,1-model te verfijnen, waarbij het veld antwoord voor het Voltooiingsveld wordt opgegeven (gegevens uit alle andere velden worden verzonden als de gebruikersprompt).

Kopiëren
AI-account configureren [ Accountnaam: "my-account" ; Modelprovider: OpenAI ; API-sleutel: Global::OpenAI_API_Key ]

Ga naar lay-out [ "Support_QA" (Support_QA) ]

Zoekopdracht uitvoeren [Herstellen]

Model fijnafstemmen [ Accountnaam: "my-account" ; Basismodel: "gpt-4.1-2025-04-14" ; Trainingsgegevens: Tabel ; "Support_QA" ; Voltooiingsveld: Support_QA::Answer ; Antwoorddoel: $$responseTarget ]

Wanneer OpenAI u meldt dat de training is voltooid en de bijgestelde modelnaam geeft, kunt u het model gebruiken in scriptstappen zoals Antwoord genereren van model:

Kopiëren
Antwoord genereren van model [ Accountnaam: "my-account" ; Model: "ft:gpt-4o-mini-2024-07-18:my-org::LBNO71Qq" ; Gebruikersprompt: $question ; Agentic-modus ; Antwoord: $$response ]

Voorbeeld 2- Fijnafstemming met behulp van een JSONL bestand

Hiermee wordt een model op de AI-modelserver verfijnd door het JSONL-bestand te verzenden dat in Voorbeeld 2 is gemaakt voor de Records opslaan als JSONL scriptstap. Het script configureert een AI-account en stelt de variabele $trainingFile in op het pad voor het JSONL-bestand in de map Documenten.

Het script stelt vervolgens de variabele $parameters in op een JSON-object dat de sleutel-waardeparen bevat die gebruikt moeten worden voor het fijnafstemmen van parameters, waaronder het instellen van de rootnaam voor het fijnafgestemde model.

Ten slotte stuurt het script het JSONL-bestand gespecificeerd door $trainingFile naar de AI-modelserver, met vermelding van het basismodel dat moet worden verfijnd, de te gebruiken parameters en de variabele $response om het antwoord op te slaan. Om de volledige fijnafgestemde modelnaam beschikbaar te hebben voor later gebruik, krijgt het script de naam van $response en wordt het opgeslagen in een globaalveld.

Kopiëren
AI-account configureren [ Accountnaam: "AI_Model_Server" ; Modelprovider: Aangepast ; Eindpunt: "https://myserver.example.com/llm/v1/" ; API-sleutel: Global::Fine_Tuning_API_Key ; SSL-certificaten verifiëren ]

Variabele instellen [ $trainingFile ; Waarde: Get(DocumentsPath) & "training_data.jsonl" ]

Variabele instellen [ $parameters ; Waarde: 
  Let ( [
    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
  )
]

Model fijnafstemmen [ Accountnaam: "AI_Model_Server" ; Basismodel: "google/codegemma-7b-it" ; Trainingsgegevens: Bestand ; "$trainingFile" ; Antwoorddoel: $responseTarget ; Parameters voor fijnafstemming: $parameters ]

Veld instellen [ Global::Fine_Tuned_Model ; JSONGetElement ( $responseTarget ; "result.fine_tuned_model" ) ]