Naar inhoud
lightbulb Welkom op de nieuwe kennisbank | We hebben de docs volledig vernieuwd met meer dan 160 features. Bekijk wat nieuw isarrow_forward

Gemini-modellen fine-tunen (supervised fine-tuning op Vertex AI)

Fine-tuning zit niet meer in de Gemini Developer API: tune Gemini 2.5-modellen met je eigen data via supervised fine-tuning op Vertex AI en de unified google-genai SDK.

warning

Belangrijke wijziging sinds 2025

Fine-tuning via de Gemini Developer API (AI Studio) is niet meer beschikbaar. Met het uitfaseren van gemini-1.5-flash-001-tuning in mei 2025 is er in de Developer API geen tunebaar model meer. Ook de oude google.generativeai-SDK is uitgefaseerd (end of life op 30 november 2025). Fine-tunen doe je nu via supervised fine-tuning (SFT) op Vertex AI met de unified google-genai-SDK. Dit artikel beschrijft die werkwijze.

Wanneer fine-tunen

Fine-tuning is zinvol als je wilt dat het model:

  • Consistent een specifieke toon of schrijfstijl aanhoudt.
  • Domeinspecifieke antwoorden geeft in een vast patroon.
  • Een specifiek outputformaat altijd correct toepast.
  • Bedrijfsjargon of productnamen correct gebruikt.

Fine-tuning is NIET de juiste oplossing voor:

  • Het model leren over recente gebeurtenissen (gebruik grounding of zoek-tools).
  • Grote kennisbanken doorzoeken (gebruik RAG, retrieval augmented generation).
  • Complexe redenering verbeteren (gebruik een groter of sterker redenerend model, of prompt-technieken).

Op Vertex AI ondersteunen op dit moment de Gemini 2.5-modellen supervised fine-tuning: gemini-2.5-flash, gemini-2.5-flash-lite en gemini-2.5-pro. Begin bij voorkeur met gemini-2.5-flash: snel, goedkoop en in de meeste gevallen ruim voldoende.

Wat je vooraf nodig hebt

  • Een Google Cloud-project met Vertex AI ingeschakeld en een actief factureringsaccount (Vertex AI tuning is, anders dan de oude gratis Developer-tuning, niet gratis).
  • Een Cloud Storage-bucket in dezelfde regio waarin je je trainingsdata plaatst.
  • De Python-SDK google-genai (de opvolger van het uitgefaseerde google-generativeai).
  • Voldoende rechten (roles/aiplatform.user) op het project.
lightbulb

Installeer de juiste SDK

Gebruik pip install google-genai. Het oude pakket google-generativeai is uitgefaseerd en krijgt geen updates meer; nieuwe code hoort op google-genai te draaien.

Trainingsdata voorbereiden

Vertex AI verwacht trainingsdata in JSONL-formaat, waarbij elke regel een gesprek is met een contents-array van beurten (role is user of model). Een vaste systeeminstructie geef je optioneel mee via systemInstruction.

import json

trainingsdata = [
    {
        "systemInstruction": {
            "role": "system",
            "parts": [{"text": "Je bent de klantenservice-assistent van GadgetNL. Antwoord vriendelijk, kort en concreet."}],
        },
        "contents": [
            {"role": "user", "parts": [{"text": "Schrijf een begroeting voor onze webshop."}]},
            {"role": "model", "parts": [{"text": "Welkom bij GadgetNL! Ontdek meer dan 10.000 elektronica-producten met gratis verzending vanaf 25 euro."}]},
        ],
    },
    {
        "systemInstruction": {
            "role": "system",
            "parts": [{"text": "Je bent de klantenservice-assistent van GadgetNL. Antwoord vriendelijk, kort en concreet."}],
        },
        "contents": [
            {"role": "user", "parts": [{"text": "Hoe reageer ik op een klacht over een beschadigd pakket?"}]},
            {"role": "model", "parts": [{"text": "Excuses voor het ongemak. Stuur een foto van het beschadigde pakket naar service@gadgetnl.nl, dan sturen we binnen 24 uur een vervangend product of een volledige terugbetaling."}]},
        ],
    },
]

with open("trainingsdata.jsonl", "w", encoding="utf-8") as f:
    for item in trainingsdata:
        f.write(json.dumps(item, ensure_ascii=False) + "
")

Upload het bestand daarna naar je bucket, bijvoorbeeld met de gcloud-CLI:

gcloud storage cp trainingsdata.jsonl gs://jouw-bucket/tuning/trainingsdata.jsonl
lightbulb

Hoeveel voorbeelden heb je nodig?

Technisch kun je met enkele tientallen voorbeelden starten, maar voor merkbare verbetering zijn er doorgaans honderden tot enkele duizenden nodig. Maak een aparte validatieset (een deel van de data dat niet meetraint) om te checken of het model echt generaliseert. Diversiteit in formuleringen telt zwaarder dan pure aantallen.

Fine-tune job starten via Python

De unified SDK gebruikt een Client. Door vertexai=True met een project en regio mee te geven, richt je je op Vertex AI in plaats van de Developer API.

from google import genai
from google.genai import types

client = genai.Client(
    vertexai=True,
    project="jouw-project-id",
    location="europe-west4",
)

training_dataset = types.TuningDataset(
    gcs_uri="gs://jouw-bucket/tuning/trainingsdata.jsonl",
)

tuning_job = client.tunings.tune(
    base_model="gemini-2.5-flash",
    training_dataset=training_dataset,
    config=types.CreateTuningJobConfig(
        epoch_count=5,
        learning_rate_multiplier=1.0,
        tuned_model_display_name="GadgetNL Klantenservice v1",
    ),
)

print(f"Job gestart: {tuning_job.name}")

Fine-tune voortgang monitoren

Een tune-job draait asynchroon. Poll de status tot de job in een eindtoestand zit.

import time

completed_states = {
    "JOB_STATE_SUCCEEDED",
    "JOB_STATE_FAILED",
    "JOB_STATE_CANCELLED",
}

while tuning_job.state not in completed_states:
    print(f"Status: {tuning_job.state}")
    time.sleep(60)
    tuning_job = client.tunings.get(name=tuning_job.name)

print(f"Eindstatus: {tuning_job.state}")

Getuned model gebruiken

Na een geslaagde job vind je het endpoint van het getuned model op het job-object. Dat endpoint geef je als model mee aan een gewone generatie-aanroep.

response = client.models.generate_content(
    model=tuning_job.tuned_model.endpoint,
    contents="Schrijf een antwoord op een vraag over bezorgtijd.",
)

print(response.text)

Tuned modellen beheren

Lopende en afgeronde tune-jobs vraag je op met client.tunings.list(). Het beheer van getunede modellen (bekijken, hernoemen, verwijderen) verloopt verder via de Vertex AI Model Registry, in de Cloud Console of via de Vertex AI-beheer-API. Je rekent inferentie op een getuned model af volgens de Vertex AI-tarieven van het basismodel.

for job in client.tunings.list():
    print(f"Naam: {job.name}, status: {job.state}")

Trainingsdata-kwaliteit checklist

Goede trainingsvoorbeelden voldoen aan:

  • Diversiteit: dek alle varianten van de taak af.
  • Consistentie: dezelfde soort vraag geeft altijd hetzelfde type antwoord.
  • Kwaliteit: outputs zijn werkelijk de gewenste uitkomst, zonder fouten.
  • Evenwicht: geen grote ongelijkheid tussen soorten voorbeelden.
  • Representativiteit: ze weerspiegelen de echte verdeling van invoer in productie.

Slechte trainingsdata levert een slechter model op dan helemaal niet fine-tunen. Controleer bij kleine datasets elke output handmatig.

Kosten en aandachtspunten

Aspect Waarde
Platform Vertex AI (supervised fine-tuning)
Ondersteunde basismodellen gemini-2.5-flash, gemini-2.5-flash-lite, gemini-2.5-pro
SDK google-genai (unified)
Trainingsdata-formaat JSONL in een Cloud Storage-bucket
Trainingskosten Betaald, volgens Vertex AI-tuningtarieven
Inference-kosten Volgens Vertex AI-tarief van het basismodel
Developer API / AI Studio Geen tuning meer beschikbaar sinds mei 2025

Controleer de actuele prijzen, regio-beschikbaarheid en modelondersteuning altijd in de Vertex AI-documentatie, want Google werkt het modelaanbod regelmatig bij.

Kan ik nog fine-tunen via de Gemini Developer API of AI Studio?

Nee. Sinds het uitfaseren van het laatste tunebare model in mei 2025 is er in de Gemini Developer API en AI Studio geen model meer dat fine-tuning ondersteunt. Fine-tunen loopt nu via supervised fine-tuning op Vertex AI.

Welke modellen kan ik nu fine-tunen?

Op Vertex AI ondersteunen de Gemini 2.5-modellen supervised fine-tuning: gemini-2.5-flash, gemini-2.5-flash-lite en gemini-2.5-pro. Begin meestal met gemini-2.5-flash vanwege de gunstige verhouding tussen kosten, snelheid en kwaliteit.

Wat moet ik met oude code op de google.generativeai-SDK?

Die SDK is uitgefaseerd en sinds 30 november 2025 end of life. Migreer naar het pakket google-genai en gebruik de Client met vertexai=True voor Vertex AI. De aanroepen heten nu onder andere client.tunings.tune en client.models.generate_content.

Hoe lang duurt een fine-tune job?

Dat hangt af van de hoeveelheid trainingsdata, het aantal epochs en het basismodel. Reken op tientallen minuten tot enkele uren; de exacte duur zie je terwijl je de jobstatus pollt.

Wordt mijn trainingsdata gebruikt om het basismodel te verbeteren?

Bij tuning op Vertex AI maak je een privé getuned model binnen je eigen project. Raadpleeg het actuele Google Cloud data-governancebeleid voor de precieze voorwaarden die op jouw account van toepassing zijn.

Wat als mijn getuned model slechter presteert dan het basismodel?

Bekijk de trainings- en validatiecurves (loss per epoch). Daalt de loss niet, dan is je data te klein of inconsistent. Evalueer altijd op een aparte validatieset die niet meetraint, en vergelijk eerlijk met het ongetunede basismodel.