Erstellen Sie ein Fine-Tuning-Dataset aus dem Web: URLs zu JSONL
Ein gutes Fine-Tuning besteht zu 90 % aus dem Dataset. Dies ist die Pipeline von rohen URLs zu sauberem JSONL — Beschaffung im großen Maßstab, Duplikatentfernung, Lizenzfilter und das Chat-Format, das Trainer tatsächlich erwarten.
Ein Fine-Tuning ist nur so gut wie die Daten, die Sie ihm zuführen, und der schwierigste Teil des Fine-Tunings ist fast nie der Trainingslauf — es ist der Aufbau eines sauberen Datasets. Das Web ist die reichste Quelle dieser Daten, aber rohe Seiten sind unordentlich, dupliziert, unbeschriftet und rechtlich ungleichmäßig. Dieser Leitfaden ist die Pipeline von URLs zu trainingsbereitem JSONL: wie viel Daten Sie tatsächlich benötigen, wie Sie sie im großen Maßstab beschaffen, wie Sie sie reinigen und duplizieren, wie Sie mit Lizenzen umgehen und wie Sie sie im Chat-Format formatieren, das Trainer erwarten. Es wird davon ausgegangen, dass Sie ein Anweisungs- oder Chat-Fine-Tuning aus öffentlichen Webinhalten erstellen.
Wie viele Daten benötigen Sie tatsächlich?
Beginnen Sie mit realistischen Zielen, damit Sie nicht zu viel oder zu wenig aufbauen. Die praktische Untergrenze für ein Fine-Tuning, das vernünftige Ergebnisse liefert, liegt bei etwa 100 Zeilen; für solide Leistung möchten Sie in der Regel über 1.000. Mehr hilft normalerweise, aber nur, wenn es sauber ist — tausend gut beschriftete Beispiele schlagen zehntausend unruhige. Zum Vergleich: Das klassische Alpaca-Dataset bestand aus 52.000 Anweisungs-/Ausgabepaaren, die durch das Anregen eines stärkeren Modells generiert wurden. Und wenn Sie ein großes Modell verwenden, um synthetische Beispiele zu erzeugen, säen Sie es mit mindestens zehn handgeschriebenen Beispielen, damit es die genaue Struktur und den Ton lernt, den Sie möchten, bevor es mehr produziert.
Beschaffung: Crawl zu sauberem Markdown
Das Ziel in der Beschaffungsphase ist sauberer Text, nicht rohes HTML. Eine Fine-Tuning-Zeile möchte den Inhalt einer Seite — den Artikel, die Dokumente, das Q&A — ohne die Navigationsleisten, Cookie-Banner und Anzeigen-Markup, die einen naiven Scrape verschmutzen. Crawlen Sie also Ihre Zielseiten und konvertieren Sie sie bei der Erfassung in Markdown, was Boilerplate entfernt, während es Strukturen wie Überschriften und Listen beibehält. Bei jedem realen Volumen stoßen Sie auf Ratenlimits und IP-Sperren, also leiten Sie den Crawl durch einen rotierenden Pool. Eine Scraper API, die direkt Markdown zurückgibt, erledigt beide Aufgaben — saubere Ausgabe und Blockwiderstand — in einem Aufruf, weshalb wir es in unserem Leitfaden zu frischen Webdaten für LLMs behandeln.
# Sketch: crawl target URLs to clean markdown, ready for shaping into rows.
import requests
API = "https://api.quantumproxies.io/scrape" # returns markdown, handles rotation
def fetch_markdown(url):
r = requests.get(API, params={"url": url, "format": "markdown"},
headers={"Authorization": "Bearer YOUR_KEY"}, timeout=60)
return r.json()["markdown"]
docs = [fetch_markdown(u) for u in seed_urls] # clean text, no boilerplate

Das JSONL-Format, das Trainer erwarten
Die meisten modernen Fine-Tuning-Tools verwenden standardmäßig ein konversationelles JSONL-Format: ein JSON-Objekt pro Zeile, jedes mit einem messages-Array von Rollen-/Inhaltspaaren, wobei die Rollen system, user und assistant sind und sich die Benutzer-/Assistentenwechsel abwechseln. Das ist das Chat-Format, das Hugging Face und OpenAI-ähnliche Trainer aufnehmen. Ältere Anweisungs-Datasets verwenden eine dreifeldrige Form (instruction, input, output) — gut für ein einzelnes, überwachtes Tuning — und es gibt auch mehrstufige Konversationsformate, die sich jedoch sauber in die Nachrichtenform umwandeln lassen. Wählen Sie ein Zielformat und standardisieren Sie alles darauf.
// One training example per line (.jsonl). Chat / messages format:
{"messages":[
{"role":"system","content":"You classify support tickets by urgency."},
{"role":"user","content":"My payment failed three times and the event is tomorrow."},
{"role":"assistant","content":"high"}
]}
{"messages":[
{"role":"system","content":"You classify support tickets by urgency."},
{"role":"user","content":"How do I change my avatar?"},
{"role":"assistant","content":"low"}
]}
Passen Sie das Format an das Trainingsziel an: Rohtext für fortgesetztes Pretraining, Anweisung-plus-Ausgabe oder mehrstufiger Chat für überwachtes Fine-Tuning, bewertete Antworten für präferenzbasierte Methoden. Wenn Sie ein logisches Fine-Tuning erstellen, behalten Sie die Frage und Antwort bei, aber schreiben Sie die Antwort um, um die Gedankenkette einzuschließen, die das Modell lernen soll.
Reinigung: Wo Qualität gewonnen wird
Dies ist die Phase, die Ihr Ergebnis entscheidet, und es ist meist unspektakuläres Filtern. Gehen Sie niemals davon aus, dass webbasierte oder modellgenerierte Zeilen korrekt sind — überprüfen Sie sie. Die wiederkehrenden Fehlerarten sind spezifisch und es lohnt sich, sie namentlich zu überprüfen:
- Label-Inkonsistenz: dieselbe Kategorie wird in einer Zeile als "Positive" und in einer anderen als "positive" geschrieben — normalisieren Sie Groß- und Kleinschreibung und Rechtschreibung.
- Unpassende Antworten: der Assistent gibt einen Satz oder eine Folgefrage zurück, anstatt das genaue Label oder Format, für das Sie trainieren.
- Falsch beschriftete Zeilen: ein mehrdeutiger Input, der der falschen Ausgabe zugewiesen wurde — die schädlichste Art von Rauschen.
- Boilerplate-Rückstände: Navigationstext, Cookie-Hinweise oder "mehr lesen"-Fragmente, die die Markdown-Konvertierung überlebt haben.
- Duplikate: identische oder nahezu identische Beispiele, die die Zeilenanzahl aufblähen und das Modell dazu neigen, wiederholte Inhalte zu bevorzugen.
Eine gute Gewohnheit ist es, sowohl die vor der Reinigung als auch die gereinigte JSONL zu behalten, damit Sie messen können, was Sie entfernt haben. Und balancieren Sie das Set über Kategorien hinweg — eine überrepräsentierte Klasse lehrt das Modell, sie übermäßig vorherzusagen.
Duplikatentfernung und Lizenzierung
Webdaten sind voller Wiederholungen — syndizierte Artikel, gespiegelte Dokumente, Boilerplate-Absätze — und Duplikate schaden einem Fine-Tuning leise, indem sie das, was wiederholt wird, übergewichten. Machen Sie zwei Durchgänge: exakte Duplikatentfernung durch Hashing des normalisierten Textes, um identische Zeilen zu erfassen, dann eine Erkennung von nahezu Duplikaten (eine Ähnlichkeits- oder Shingling-Technik wie MinHash), um umformulierte Kopien zu erfassen, die ein exakter Hash verpasst. Bei der Lizenzierung seien Sie vorsichtig: Nicht alles, was öffentlich ist, ist frei wiederverwendbar. Verfolgen Sie die Quelle und Lizenz jedes Dokuments, filtern Sie Inhalte heraus, deren Bedingungen die Trainingsnutzung verbieten, und bevorzugen Sie Quellen mit klaren Wiederverwendungsrechten. Es ist viel günstiger, die Herkunft während des Crawls zu dokumentieren, als sie nachträglich zu rekonstruieren, nachdem Sie alles vermischt haben.
Saubere Webdaten für LLMs beschaffen
Kombinieren, kartieren und aufteilen
Wenn Sie aus mehreren Quellen ziehen, standardisieren Sie sie alle auf ein Format und fügen Sie sie zu einem einzigen, einheitlichen Dataset zusammen, bevor Sie trainieren — ein sauberes Fine-Tuning auf dem kombinierten Set schlägt das sequentielle Fine-Tuning auf jeder Quelle, das dazu neigt, das, was das Modell zuvor gelernt hat, zu erodieren. Schreiben Sie dann eine Dataset-Karte: eine kurze Aufzeichnung, woher die Daten stammen, wie sie gereinigt wurden, ihre Größe und Labelverteilung, ihre Lizenzierung und bekannte Einschränkungen. Das macht das Dataset Monate später reproduzierbar und prüfbar. Halten Sie schließlich einen Evaluierungssplit zurück, auf dem Sie nie trainieren, damit Sie das Fine-Tuning ehrlich messen können, anstatt es auf Daten zu bewerten, die es auswendig gelernt hat. Wenn Sie ein Abrufsystem anstelle eines Fine-Tunings füttern, behandelt unser RAG-Pipeline-Leitfaden die Erfrischungsseite desselben Problems.

Häufig gestellte Fragen
Wie viele Zeilen benötige ich, um ein LLM feinzuabstimmen?
Etwa 100 Zeilen sind das praktische Minimum für vernünftige Ergebnisse, und über 1.000 ist ein gutes Ziel für solide Leistung. Mehr hilft im Allgemeinen, aber nur, wenn die Daten sauber bleiben — ein kleineres, gut beschriftetes Set schlägt ein großes, unruhiges. Für die synthetische Generierung säen Sie den Generator mit mindestens zehn handgeschriebenen Beispielen, damit er zuerst Ihr genaues Format lernt.
In welchem Format sollten Fine-Tuning-Daten vorliegen?
JSONL — ein JSON-Objekt pro Zeile. Die meisten modernen Trainer verwenden standardmäßig ein konversationelles Format mit einem messages-Array von System-/Benutzer-/Assistenten-Rollen-Inhaltspaaren. Ältere Anweisungs-Datasets verwenden Anweisungs-/Eingabe-/Ausgabefelder. Wählen Sie ein Zielformat basierend auf Ihrem Trainingsziel und standardisieren Sie jede Quelle darauf, bevor Sie trainieren.
Wie reinige ich ein gescraptes Dataset für Fine-Tuning?
Konvertieren Sie Seiten in Markdown, um Boilerplate zu entfernen, und filtern Sie dann manuell nach den häufigsten Fehlern: inkonsistente Labels, unpassende Antworten, falsch beschriftete Zeilen und übrig gebliebener Navigations- oder Cookie-Text. Entfernen Sie Duplikate mit einem exakten Hash und einem nahezu Duplikatendurchgang, balancieren Sie die Kategorien aus und behalten Sie sowohl die rohen als auch die gereinigten Versionen, damit Sie messen können, was Sie entfernt haben.
Kann ich beliebige Webinhalte verwenden, um ein Modell zu trainieren?
Nicht automatisch — öffentlich bedeutet nicht frei wiederverwendbar. Einige Inhalte enthalten Bedingungen, die die Trainingsnutzung verbieten, und persönliche Daten bringen ihre eigenen Regeln mit sich. Verfolgen Sie die Quelle und Lizenz jedes Dokuments, während Sie es sammeln, filtern Sie alles heraus, dessen Bedingungen das Training verbieten, und bevorzugen Sie klar genehmigte Quellen. Dies sind allgemeine Informationen, keine Rechtsberatung; holen Sie sich rechtlichen Rat für kommerzielle Datasets.
Der Aufbau eines Fine-Tuning-Datasets aus dem Web ist eine Filterpipeline: Quelle sauberes Markdown, formen Sie es in das Nachrichtenformat, das Ihr Trainer erwartet, entfernen Sie rücksichtslos Duplikate und überprüfen Sie die Labels, filtern Sie nach Lizenz und kartieren Sie das Ergebnis. Erhalten Sie ungefähr tausend saubere Zeilen und halten Sie einen ehrlichen Evaluierungssplit zurück, und Sie geben Ihr Trainingsbudget für Signal statt für Rauschen aus.