Fine-Tuning Guide
Was ist Fine-Tuning?
Beim Fine-Tuning passt du ein vortrainiertes Sprachmodell (z. B. Llama-3.1-8B) auf deine spezifischen Daten an. Das Modell lernt dabei:
- Domänen-spezifisches Wissen (z. B. interne Prozesse, Fachterminologie)
- Bestimmte Antwortformate oder -stile
- Aufgaben, die für allgemeine Modelle zu spezifisch sind
Mycelis verwendet LoRA (Low-Rank Adaptation) — eine speichereffiziente Methode, bei der nur ein kleiner Adapter trainiert wird, nicht das komplette Modell.
Datenvorbereitung
Format
Fine-Tuning-Daten müssen als JSONL vorliegen. Jede Zeile ist ein separates Trainingsbeispiel im Chat-Format:
{"messages": [{"role": "user", "content": "Was ist unsere Rückgabepolitik?"}, {"role": "assistant", "content": "Unsere Rückgabepolitik erlaubt Retouren innerhalb von 30 Tagen..."}]}
{"messages": [{"role": "system", "content": "Du bist ein freundlicher Support-Agent."}, {"role": "user", "content": "Wie lange dauert die Lieferung?"}, {"role": "assistant", "content": "Standardlieferungen dauern 3–5 Werktage..."}]}
Empfehlungen
| Aspekt | Empfehlung |
|---|---|
| Mindestanzahl Beispiele | 100 Paare (besser: 500+) |
| Maximale Beispiele | 10.000 (mehr bringt meist wenig) |
| Qualität vs. Quantität | Hochwertige, diverse Daten schlagen schlechte Massendaten |
| Gleichgewicht | Ähnlich viele Beispiele pro Kategorie/Thema |
| Länge | Konversationen unter 2.048 Token bevorzugen |
Daten konvertieren
Wenn du Daten in einem anderen Format hast (CSV, Excel, plain Text), kannst du sie mit folgendem Python-Snippet konvertieren:
import json
with open("deine_daten.csv") as f_in, open("training.jsonl", "w") as f_out:
for line in f_in:
frage, antwort = line.strip().split(";")
example = {
"messages": [
{"role": "user", "content": frage},
{"role": "assistant", "content": antwort}
]
}
f_out.write(json.dumps(example, ensure_ascii=False) + "\n")
Training starten
Option A — Nur Training (TrainingWizard)
Das Modell wird trainiert und ist anschließend unter Dashboard → Fine-Tuning abrufbar.
- Gehe zu Dashboard → Fine-Tuning → Neues Training
- Wähle ein Basis-Modell (z. B.
Llama-3.1-8B-Instruct) - Lade deine JSONL-Datei hoch
- Konfiguriere Hyperparameter:
| Parameter | Empfehlung |
|---|---|
| Epochen | 2–5 (mehr = overfitting-Risiko) |
| Learning Rate | 2e-4 (gut für LoRA) |
| LoRA Rank | 16–64 (höher = mehr Kapazität, mehr VRAM) |
| Batch Size | 4–8 |
- Klicke Training starten
Option B — Training + Auto-Deploy (DeploymentWizard)
Das Modell wird nach dem Training automatisch deployed. Du musst nicht warten oder manuell eingreifen.
- Gehe zu Dashboard → Meine Modelle → Neues Deployment
- Wähle GPU-Instanz und dann Training starten
- Konfiguriere Training-Daten und Deployment-Einstellungen in einem Schritt
- Nach Abschluss des Trainings wird das Deployment automatisch provisioniert
Training überwachen
Unter Dashboard → Fine-Tuning siehst du den Status jedes Trainings:
- Warteschlange — Job wartet auf freie GPU-Kapazität
- Training läuft — Aktiver Trainingsvorgang
- Abgeschlossen — Gewichte bereit zum Deployen
- Fehlgeschlagen — Fehlermeldung einsehen und Daten/Parameter prüfen
Trainiertes Modell deployen
Wenn das Training abgeschlossen ist:
- Gehe zu Dashboard → Fine-Tuning
- Klicke auf das abgeschlossene Training → Als Deployment erstellen
- Das LoRA-Adapter-Gewicht wird automatisch geladen
Alternativ wähle beim Erstellen eines neuen GPU-Deployments unter Modellquelle → Trainiertes Modell das gewünschte Training aus.
Häufige Probleme
Modell antwortet nicht wie erwartet
- Zu wenige Trainingsbeispiele → mehr Daten hinzufügen
- Zu viele Epochen → overfitting, Epochen reduzieren
- Systemkontext fehlt → System-Prompts in JSONL-Daten aufnehmen
Training schlägt fehl
- JSONL-Format prüfen: jede Zeile muss valides JSON sein
- Token-Länge: einzelne Beispiele über 2.048 Token kürzen
- Datei-Encoding: UTF-8 ohne BOM verwenden
Nächste Schritte
- Deployment-Guide — Das trainierte Modell deployen
- Ersten Agent konfigurieren — Agent über das Modell legen