Crawl4LLM : un outil efficace d'exploration du Web pour le pré-entraînement LLM

Introduction générale

Crawl4LLM est un projet open source développé conjointement par l'université de Tsinghua et l'université Carnegie Mellon, qui se concentre sur l'optimisation de l'efficacité de l'exploration du web pour le pré-entraînement des grands modèles (LLM). Il réduit considérablement l'inefficacité du crawling en sélectionnant intelligemment des données de pages web de haute qualité, et prétend pouvoir réduire la charge de travail de 100 pages web à 21, tout en maintenant l'effet de pré-entraînement. Le cœur de Crawl4LLM réside dans son algorithme de sélection des données, qui évalue la valeur des pages web pour l'entraînement du modèle et donne la priorité au contenu utile, et a déjà attiré l'attention des universitaires et de la communauté des développeurs.

Crawl4LLM:为LLM预训练提供的高效网页爬取工具

 

Liste des fonctions

  • Sélection intelligente des donnéesFiltrer le contenu de grande valeur en fonction de l'influence des pages web sur le pré-entraînement des grands modèles.
  • Modes d'exploration multiplesLe mode Crawl4LLM, l'exploration aléatoire, etc. sont pris en charge pour répondre de manière flexible à différents besoins.
  • Moteur de recherche efficaceLes moteurs de recherche sont des outils qui utilisent le multithreading et des configurations optimisées pour augmenter de manière significative la vitesse d'exploration.
  • Extraction et stockage des donnéesEnregistrer les identifiants des pages web explorées et le contenu du texte dans des fichiers qui peuvent être utilisés pour l'apprentissage du modèle.
  • Prise en charge des ensembles de données à grande échelleCompatible avec des ensembles de données tels que ClueWeb22, il convient à la recherche universitaire et aux applications industrielles.
  • Configuration PersonnalisationLes paramètres d'exploration, tels que le nombre de threads et le nombre maximum de documents, sont ajustés via des fichiers YAML.

 

Utiliser l'aide

Processus d'installation

Crawl4LLM doit fonctionner dans un environnement qui supporte Python, voici les étapes détaillées de l'installation :

  1. Préparation de l'environnement
    • Assurez-vous que Python 3.10 ou une version ultérieure est installé sur votre système.
    • Créer des environnements virtuels pour éviter les conflits de dépendance :
      python -m venv crawl4llm_env  
      source crawl4llm_env/bin/activate  # Linux/Mac  
      crawl4llm_env\Scripts\activate  # Windows
      
  2. projet de clonage
    • Téléchargez le code source sur GitHub :
      git clone https://github.com/cxcscmu/Crawl4LLM.git  
      cd Crawl4LLM
      
  3. Installation des dépendances
    • Exécutez la commande suivante pour installer les bibliothèques requises :
      pip install -r requirements.txt
      
    • Note : Le fichier de dépendances liste tous les paquets Python nécessaires au fonctionnement du crawler, assurez-vous donc d'avoir un bon réseau.
  4. Télécharger Sorter
    • Le projet utilise le classificateur DCLM fastText pour évaluer la qualité des pages web, et nécessite de télécharger manuellement le fichier du modèle sur le site web du fasttext_scorers/ Catalogue.
    • Exemple de chemin :fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin.
    • Disponible à partir de ressources officielles ou de liens connexes.
  5. Préparation du jeu de données
    • Si vous utilisez des jeux de données ClueWeb22, vous devez demander l'accès et les stocker sur le SSD (le chemin d'accès doit être spécifié dans la configuration).

Comment l'utiliser

Le fonctionnement de Crawl4LLM s'effectue principalement via la ligne de commande et se divise en trois étapes : la configuration, le crawling et l'extraction des données. Voici le déroulement détaillé de l'opération :

1) Configurer la tâche d'exploration

  • existent configs/ Créer un fichier YAML dans le répertoire (par ex. my_config.yaml), exemple de contenu :
    cw22_root_path: "/path/to/clueweb22_a"  
    seed_docs_file: "seed.txt"  
    output_dir: "crawl_results/my_crawl"  
    num_selected_docs_per_iter: 10000  
    num_workers: 16  
    max_num_docs: 20000000  
    selection_method: "dclm_fasttext_score"  
    order: "desc"  
    wandb: false  
    rating_methods:  
    - type: "length"  
    - type: "fasttext_score"  
    rater_name: "dclm_fasttext_score"  
    model_path: "fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin"
  • Description des paramètres: :
    • cw22_root_path: chemin d'accès au jeu de données ClueWeb22.
    • seed_docs_fileListe de documents de base : liste de documents de base initiaux.
    • num_workersNombre de fils : Nombre de fils, adapté à la performance de la machine.
    • max_num_docsNombre maximum de documents à explorer.
    • selection_methodMéthode de sélection des données, recommandée dclm_fasttext_score.

2) Exécuter le crawler

  • Exécutez la commande crawl :
    python crawl.py crawl --config configs/my_config.yaml
    
  • Une fois l'extraction terminée, l'identifiant du document est sauvegardé dans le fichier output_dir dans le fichier sous le chemin spécifié.

3. extraire le contenu du document

  • Utilisez la commande suivante pour convertir l'ID du document exploré en texte :
    python fetch_docs.py --input_dir crawl_results/my_crawl --output_dir crawl_texts --num_workers 16
    
  • Le résultat est un fichier texte qui peut être utilisé directement pour l'apprentissage ultérieur du modèle.

4) Visualisation de documents individuels

  • Si vous devez vérifier un document spécifique et ses liens, vous pouvez le faire :
    python access_data.py /path/to/clueweb22 <document_id>
    

Fonction en vedette Fonctionnement

  • Sélection intelligente des pages web
    • Le cœur de Crawl4LLM est sa capacité de filtrage des données. Il utilise des classificateurs FastText pour évaluer la longueur et la qualité du contenu web, en donnant la priorité aux pages les plus utiles pour l'entraînement du modèle. Les utilisateurs n'ont pas besoin de filtrer manuellement, l'optimisation se fait automatiquement.
    • Comment faire : Définissez la configuration YAML dans le fichier selection_method en raison de dclm_fasttext_scoreet vérifiez que le chemin d'accès au modèle est correct.
  • Accélération multithread
    • faire passer (un projet de loi, une inspection, etc.) num_workers pour ajuster le nombre de threads. Par exemple, un processeur à 16 cœurs peut être réglé sur 16 afin d'utiliser pleinement les ressources informatiques.
    • Note : Un nombre élevé de threads peut entraîner un débordement de la mémoire, il est recommandé de faire des tests en fonction de la configuration de la machine.
  • Prise en charge de l'exploration à grande échelle
    • Le projet est conçu pour les très grands ensembles de données tels que ClueWeb22, et convient aux scénarios de recherche qui nécessitent le traitement de milliards de pages web.
    • Suggestion d'action : Assurez les performances des E/S en stockant les données sur un disque dur SSD ; définissez la valeur max_num_docs est le nombre cible de documents (par exemple, 20 millions).

Conseils et astuces

  • Débogage et journalisation: Activer wandb: true Le processus d'exploration peut être enregistré pour faciliter l'analyse de l'efficacité.
  • Optimiser le stockageLes résultats du crawl sont volumineux et il est recommandé de réserver suffisamment d'espace disque (par exemple des centaines de Go).
  • Fonctionnalité étendueEn combinaison avec le cadre DCLM, le texte extrait peut être utilisé directement pour le pré-entraînement d'un grand modèle.

Avec les étapes ci-dessus, les utilisateurs peuvent rapidement commencer à utiliser Crawl4LLM pour une exploration efficace des données Web et l'optimisation du processus de pré-entraînement.

© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...