AI Personal Learning
und praktische Anleitung
Ressource Empfehlung 1

Crawl4LLM: Ein effizientes Web Crawling Tool für LLM Pre-Training

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.

Crawl4LLM: ein effizienter Web-Crawler für LLM-Vorübungen-1


 

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:

  1. 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
      
  2. Klonprojekt
    • Laden Sie den Quellcode von GitHub herunter:
      git clone https://github.com/cxcscmu/Crawl4LLM.git
      cd Crawl4LLM
      
  3. 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.
  4. 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.
  5. 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_fileListe der Initialisierungsdokumente.
    • num_workersAnzahl der Fäden, angepasst an die Maschinenleistung.
    • max_num_docsMaximale Anzahl der zu durchsuchenden Dokumente.
    • Auswahl_MethodeDatenauswahlmethode, empfohlen dclm_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 wegen dclm_fasttext_scoreund 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.
  • 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.

Inhalt3
Darf nicht ohne Genehmigung vervielfältigt werden:Chef-KI-Austauschkreis " Crawl4LLM: Ein effizientes Web Crawling Tool für LLM Pre-Training

Chef-KI-Austauschkreis

Der Chief AI Sharing Circle konzentriert sich auf das KI-Lernen und bietet umfassende KI-Lerninhalte, KI-Tools und praktische Anleitungen. Unser Ziel ist es, den Nutzern dabei zu helfen, die KI-Technologie zu beherrschen und gemeinsam das unbegrenzte Potenzial der KI durch hochwertige Inhalte und den Austausch praktischer Erfahrungen zu erkunden. Egal, ob Sie ein KI-Anfänger oder ein erfahrener Experte sind, dies ist der ideale Ort für Sie, um Wissen zu erwerben, Ihre Fähigkeiten zu verbessern und Innovationen zu verwirklichen.

Kontaktieren Sie uns
de_DE_formalDeutsch (Sie)