Allgemeine Einführung
Crawl4LLM ist ein Open-Source-Projekt, das gemeinsam von der Tsinghua University und der Carnegie Mellon University entwickelt wurde und sich auf die Optimierung der Effizienz des Web-Crawlings für das Vortraining großer Modelle (LLM) konzentriert. Es reduziert ineffektives Crawling durch intelligente Auswahl hochwertiger Webseitendaten erheblich und behauptet, den Arbeitsaufwand von ursprünglich 100 Webseiten auf 21 reduzieren zu können, während der Pre-Training-Effekt erhalten bleibt. Der Kern von Crawl4LLM liegt in seinem Algorithmus zur Datenauswahl, der den Wert von Webseiten für das Modelltraining bewertet und nützlichen Inhalten Vorrang einräumt.
Funktionsliste
- Intelligente DatenauswahlFilterung hochwertiger Inhalte auf der Grundlage des Einflusses von Webseiten auf das Vortraining großer Modelle.
- Mehrere Crawling-ModiCrawl4LLM-Modus, zufälliges Crawling usw. werden unterstützt, um flexibel auf unterschiedliche Anforderungen reagieren zu können.
- Effiziente Crawling-EngineVerwendung von Multi-Threading und optimierten Konfigurationen, um die Crawling-Geschwindigkeit deutlich zu erhöhen.
- Datenextraktion und -speicherungSpeichern Sie die gecrawlten Webseiten-IDs und Textinhalte als Dateien, die für das Modelltraining verwendet werden können.
- Unterstützung für große DatensätzeKompatibel mit Datensätzen wie ClueWeb22, geeignet für akademische Forschung und industrielle Anwendungen.
- Konfiguration AnpassungCrawling-Parameter, wie die Anzahl der Threads und die maximale Anzahl der Dokumente, werden über YAML-Dateien eingestellt.
Hilfe verwenden
Ablauf der Installation
Crawl4LLM muss in einer Umgebung laufen, die Python unterstützt. Hier sind die detaillierten Installationsschritte:
- Vorbereitung der Umwelt
- Stellen Sie sicher, dass Python 3.10 oder höher auf Ihrem System installiert ist.
- Erstellen Sie virtuelle Umgebungen, um Abhängigkeitskonflikte zu vermeiden:
python -m venv crawl4llm_env Quelle crawl4llm_env/bin/aktivieren # Linux/Mac crawl4llm_env\Skripte\aktivieren # Windows
- Klonprojekt
- Laden Sie den Quellcode von GitHub herunter:
git clone https://github.com/cxcscmu/Crawl4LLM.git cd Crawl4LLM
- Laden Sie den Quellcode von GitHub herunter:
- Installation von Abhängigkeiten
- Führen Sie den folgenden Befehl aus, um die erforderlichen Bibliotheken zu installieren:
pip install -r anforderungen.txt
- Hinweis: Die Abhängigkeitsdatei listet alle Python-Pakete auf, die der Crawler benötigt, um zu laufen.
- Führen Sie den folgenden Befehl aus, um die erforderlichen Bibliotheken zu installieren:
- Sorter herunterladen
- Das Projekt verwendet den DCLM fastText-Klassifikator, um die Qualität von Webseiten zu bewerten, und erfordert das manuelle Herunterladen der Modelldatei auf den
fasttext_scorers/
Katalog. - Beispielpfad:
fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin
. - Erhältlich über offizielle Quellen oder entsprechende Links.
- Das Projekt verwendet den DCLM fastText-Klassifikator, um die Qualität von Webseiten zu bewerten, und erfordert das manuelle Herunterladen der Modelldatei auf den
- Vorbereiten des Datensatzes
- Wenn Sie ClueWeb22-Datensätze verwenden, müssen Sie den Zugriff anfordern und sie auf der SSD speichern (der Pfad muss in der Konfiguration angegeben werden).
Wie zu verwenden
Die Bedienung von Crawl4LLM erfolgt hauptsächlich über die Kommandozeile, die in drei Schritte unterteilt ist: Konfiguration, Crawling und Datenextraktion. Im Folgenden wird der detaillierte Ablauf beschrieben:
1. die Crawling-Aufgabe konfigurieren
- existieren
Konfigs/
Erstellen Sie eine YAML-Datei in dem Verzeichnis (z.B.my_config.yaml
), inhaltliche Beispiele:cw22_root_path: "/pfad/zu/clueweb22_a" seed_docs_file: "seed.txt" output_dir: "crawl_results/my_crawl" num_selected_docs_per_iter: 10000 num_selected_docs_per_iter: 10000 max_Anzahl_Unterlagen: 20000000 auswahl_methode: "dclm_fasttext_score" Reihenfolge: "desc" auswahl_methode: "dclm_fasttext_score" auftrag: "desc" wandb: false auswahl_method: "dclm_fasttext_score" Reihenfolge: "desc" wandb: false - typ: "länge" - typ: "fasttext_score" bewerter_name: "dclm_fasttext_score" model_path: "fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin"
- Beschreibung der Parameter::
cw22_wurzel_pfad
: ClueWeb22-Datensatzpfad.seed_docs_file
Liste der Initialisierungsdokumente.num_workers
Anzahl der Fäden, angepasst an die Maschinenleistung.max_num_docs
Maximale Anzahl der zu durchsuchenden Dokumente.Auswahl_Methode
Datenauswahlmethode, empfohlendclm_fasttext_score
.
2. die Ausführung des Crawlers
- Führen Sie den Befehl crawl aus:
python crawl.py crawl --config configs/my_config.yaml
- Sobald der Crawl abgeschlossen ist, wird die Dokument-ID in der Datei
output_dir
in der Datei unter dem angegebenen Pfad.
3 Extrahieren von Dokumenteninhalten
- Verwenden Sie den folgenden Befehl, um die gecrawlte Dokument-ID in Text umzuwandeln:
python fetch_docs.py --input_dir crawl_results/my_crawl --output_dir crawl_texts --num_workers 16
- Die Ausgabe ist eine Textdatei, die direkt für das anschließende Modelltraining verwendet werden kann.
4. einzelne Dokumente anzeigen
- Wenn Sie ein bestimmtes Dokument und seine Verknüpfungen überprüfen müssen, können Sie dies tun:
python access_data.py /pfad/zu/clueweb22
Featured Function Bedienung
- Intelligente Webseitenauswahl
- Das Herzstück von Crawl4LLM ist seine Fähigkeit zur Datenfilterung. Es verwendet FastText-Klassifikatoren, um die Länge und Qualität von Webinhalten zu bewerten und die Seiten zu priorisieren, die für das Modelltraining am nützlichsten sind. Die Benutzer müssen nicht manuell filtern, die Optimierung erfolgt automatisch.
- So geht's: Setzen Sie die YAML-Konfiguration in der
Auswahl_Methode
wegendclm_fasttext_score
und stellen Sie sicher, dass der Modellpfad korrekt ist.
- Multithreading-Beschleunigung
- passieren (eine Rechnung oder Inspektion etc.)
num_workers
um die Anzahl der Threads anzupassen. Eine CPU mit 16 Kernen kann beispielsweise auf 16 eingestellt werden, um die Rechenressourcen vollständig zu nutzen. - Hinweis: Eine hohe Anzahl von Threads kann zu einem Speicherüberlauf führen; es wird empfohlen, entsprechend der Maschinenkonfiguration zu testen.
- passieren (eine Rechnung oder Inspektion etc.)
- Unterstützung für umfangreiches Crawling
- Das Projekt ist für sehr große Datensätze wie ClueWeb22 konzipiert und eignet sich für Forschungsszenarien, die die Verarbeitung von Milliarden von Webseiten erfordern.
- Vorschlag zur Maßnahme: Speichern Sie die Daten auf einer SSD, um die E/A-Leistung zu gewährleisten; setzen Sie die
max_num_docs
ist die angestrebte Anzahl von Dokumenten (z. B. 20 Millionen).
Tipps & Tricks
- Fehlersuche und Protokollierung: Freigeben
wandb: wahr
Der Crawling-Prozess kann zur einfachen Analyse der Effizienz aufgezeichnet werden. - Optimierung der LagerungCrawl-Ergebnisse sind sehr umfangreich und es wird empfohlen, genügend Speicherplatz zu reservieren (z. B. mehrere hundert GB).
- Erweiterte FunktionalitätIn Kombination mit dem DCLM-Rahmen kann der extrahierte Text direkt für ein umfangreiches Pre-Training des Modells verwendet werden.
Mit den oben genannten Schritten können Benutzer schnell mit Crawl4LLM beginnen, um Webdaten effizient zu crawlen und den Pre-Training-Prozess zu optimieren.