Modelltrainingsleitfaden 2: Vergleich von drei praktischen Trainingsansätzen
Dieser Artikel analysiert aus der Perspektive der praktischen Umsetzung die drei wichtigsten Schritte beim Training von LLMs auf verständliche Weise.
Wird gerendert...
Dieser Artikel analysiert aus einer Engineering-Perspektive die drei wichtigsten Schritte beim LLM-Training: PT (inkrementelles Vortraining), SFT (überwachtes Feintuning) und DPO (Präferenzabgleich). ## 1. PT PT (inkrementelles Vortraining): Stellen Sie sich vor, Sie "füttern" das Modell mit Büchern. Ihr Fokus liegt auf **"Durchsatz"** und **"Datenbereinigung"**. **Die Daten, die Sie in der Hand halten:** sind riesige `.txt`- oder `.jsonl`-Dateien, die voll von langen Textpassagen sind, ohne Unterscheidung zwischen "Frage" und "Antwort". **Ihre Kernaktion:** - **Chunking (Zerteilung):** Sie müssen Dutzende GB Text in Blöcke von 2048 oder 4096 Länge zerlegen. - **Lernrate erhöhen? Nein, verringern:** Sie werden die Lernrate (LR) sehr niedrig einstellen (z. B. `1e-5`), da Sie nur möchten, dass es ein paar neue Wörter lernt, ohne die ursprüngliche Logik zu zerstören. **Die Metriken, die Sie beobachten:** **Loss (Verlustwert)**. Solange der Loss gleichmäßig abnimmt, "lernt" es "auswendig". **Das Ende des Vorgangs:** Sie stellen fest, dass das Modell in der Lage ist, die Fachbegriffe, die Sie ihm gefüttert haben, zu vervollständigen. ## 2. SFT SFT (überwachtes Feintuning): Stellen Sie sich vor, Sie geben dem Modell ein "Drehbuch". Ihr Fokus liegt auf **"Dialogvorlagen"** und **"Maske"**. **Die Daten, die Sie in der Hand halten:** sind strenge Frage-Antwort-Paare. - `"instruction": "Ich habe Liebeskummer, was soll ich tun"` - `"output": "Ich umarme dich, es wird besser werden, wenn du weinst..."` **Ihre Kernaktion:** - **Vorlage auswählen (Template):** Dies ist der Punkt, an dem Sie am wahrscheinlichsten scheitern. Sie müssen in Ihrem Skript die entsprechende Vorlage für das Modell angeben (z. B. `qwen` oder `llama3`), andernfalls lernt das Modell falsch. - **Maske einstellen:** Sie müssen in Ihrem Skript sicherstellen, dass das Modell **nur für Output den Loss berechnet**. Wenn Sie dies nicht richtig einstellen, lernt das Modell auch die Frage des Benutzers auswendig, was dazu führt, dass es nur Ihre Fragen wiederholt. **Die Metriken, die Sie beobachten:** **Genauigkeit des Validierungsdatensatzes** und **Loss**. Wenn der Loss zu schnell sinkt (z. B. sofort unter 0,1), liegt eine Überanpassung vor. Es lernt das Drehbuch nur auswendig. **Das Ende des Vorgangs:** Wenn Sie eine Testfrage eingeben, kann es mit Ihnen in dem von Ihnen festgelegten Ton (z. B. sanft, humorvoll) chatten. ## 3. DPO DPO (Präferenzabgleich): Stellen Sie sich vor, Sie geben dem Modell eine "Klausur". Ihr Fokus liegt auf **"Speicherverwaltung"** und **"Beta-Parameter"**. **Die Daten, die Sie in der Hand halten:** sind Tripel. Jede Frage wird von einer **"guten Antwort"** und einer **"schlechten Antwort"** begleitet. **Ihre Kernaktion:** - **Doppeltes Modellladen:** Ihr Speicher wird sofort knapp. Sie müssen gleichzeitig das "Modell, das gerade trainiert wird" und das "Referenzmodell" laden. - **Beta-Wert anpassen:** Dies ist der einzige mysteriöse Parameter von DPO. Sie ändern `pref_beta` in Ihrem Skript. Wenn das Modell nach dem Training extrem oder wiederholend spricht, müssen Sie diese Zahl ändern (normalerweise zwischen 0,1 und 0,5). **Die Metriken, die Sie beobachten:** **Rewards/margins (Belohnungsdifferenz)**. Sie sehen zwei Linien, eine für Chosen und eine für Rejected. Wenn sich die beiden Linien auseinander bewegen, hat das Modell gelernt, zwischen "gut" und "schlecht" zu unterscheiden. **Das Ende des Vorgangs:** Die einst "kalten, roboterartigen" Antworten sind verschwunden, und das Modell versteht Ihre Vorlieben besser. ## Zusammenfassung der operativen Unterschiede | **Operation** | **PT (Wissen füttern)** | **SFT (Regeln lernen)** | **DPO (Gut und Böse unterscheiden)** | | ------------------- | ----------------------- | ------------------------------ | -------------------------- | | **Ihre größte Herausforderung** | Bereinigen und Entfernen von Junk-Text | Schreiben und Korrekturlesen hochwertiger Dialogskripte | Falsche Antworten des Modells finden und vergleichen | | **Kernschalter im Skript** | `stage: pt` | `stage: sft` + `template: xxx` | `stage: dpo` + `beta: 0.1` | | **Speicheranforderungen** | Stabil (einfacher Speicher) | Stabil (einfacher Speicher) | **Enorm (doppelter Speicher)** | | **Trainingsrunden (Epochen)** | Normalerweise nur 1 Runde (um Auswendiglernen zu verhindern) | 3-5 Runden (tiefgründiger lernen) | 1-2 Runden (um Verzerrungen zu vermeiden) |
Kommentar
Melde dich an, um Kommentare anzuzeigen und zu veröffentlichen
Zur Anmeldung