Crawl4LLM: эффективный инструмент для предварительного обучения LLM с помощью веб-ползания

Общее введение

Crawl4LLM - это проект с открытым исходным кодом, разработанный совместно Университетом Цинхуа и Университетом Карнеги-Меллон и направленный на оптимизацию эффективности веб-ползания для предварительного обучения больших моделей (LLM). Он позволяет значительно сократить неэффективность ползания за счет интеллектуального отбора высококачественных данных о веб-страницах и утверждает, что может сократить рабочую нагрузку, когда первоначально требовалось проползти 100 веб-страниц, до 21, сохраняя при этом эффект предварительного обучения. Проект размещен на GitHub с подробным кодом и документацией по настройке для разработчиков и исследователей. Суть Crawl4LLM заключается в алгоритме отбора данных, который оценивает ценность веб-страниц для обучения модели и отдает предпочтение полезному контенту, и уже привлек внимание ученых и сообщества разработчиков.

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

 

Список функций

  • Интеллектуальный выбор данных: Фильтрация высокоценного контента на основе влияния веб-страниц на предварительное обучение больших моделей.
  • Несколько режимов ползанияПоддерживается режим Crawl4LLM, случайный просмотр и т.д., что позволяет гибко реагировать на различные потребности.
  • Эффективная система поиска: Использование многопоточности и оптимизированных конфигураций позволяет значительно увеличить скорость выполнения операций.
  • Извлечение и хранение данных: Сохраните идентификаторы просмотренных веб-страниц и текстовое содержимое в файлах, которые можно использовать для обучения модели.
  • Поддержка масштабных наборов данныхСовместимость с такими наборами данных, как ClueWeb22, подходит для академических исследований и промышленных приложений.
  • Конфигурация Настройка: Параметры краулинга, такие как количество потоков и максимальное количество документов, настраиваются с помощью файлов YAML.

 

Использование помощи

Процесс установки

Crawl4LLM должен работать в среде, поддерживающей Python, вот подробные шаги по установке:

  1. Подготовка к защите окружающей среды
    • Убедитесь, что в вашей системе установлен Python 3.10 или более поздняя версия.
    • Создавайте виртуальные среды, чтобы избежать конфликтов зависимостей:
      python -m venv crawl4llm_env  
      source crawl4llm_env/bin/activate  # Linux/Mac  
      crawl4llm_env\Scripts\activate  # Windows
      
  2. проект клонирования
    • Загрузите исходный код с GitHub:
      git clone https://github.com/cxcscmu/Crawl4LLM.git  
      cd Crawl4LLM
      
  3. Установка зависимостей
    • Выполните следующую команду для установки необходимых библиотек:
      pip install -r requirements.txt
      
    • Примечание: В файле зависимостей перечислены все пакеты Python, необходимые для работы краулера, поэтому убедитесь, что у вас хорошая сеть.
  4. Скачать Сортировщик
    • Проект использует классификатор DCLM fastText для оценки качества веб-страниц и требует ручной загрузки файла модели на fasttext_scorers/ Каталог.
    • Пример пути:fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin.
    • Доступны на официальных ресурсах или по соответствующим ссылкам.
  5. Подготовка набора данных
    • Если вы используете наборы данных ClueWeb22, вам необходимо запросить доступ и сохранить их на SSD (путь должен быть указан в конфигурации).

Как использовать

Работа Crawl4LLM в основном осуществляется через командную строку, которая разделена на три этапа: настройка, поиск и извлечение данных. Ниже приведен подробный порядок действий:

1. Настройте задание на ползание

  • существовать configs/ Создайте YAML-файл в каталоге (например. my_config.yaml), пример содержания:
    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"
  • Описание параметров::
    • cw22_root_path: путь к набору данных ClueWeb22.
    • seed_docs_file: Первоначальный список документов для посева.
    • num_workers: Число нитей, отрегулированное с учетом производительности машины.
    • max_num_docs: Максимальное количество документов для просмотра.
    • selection_method: Метод выбора данных, рекомендуемый dclm_fasttext_score.

2. Запуск краулера

  • Выполните команду crawl:
    python crawl.py crawl --config configs/my_config.yaml
    
  • После завершения переползания идентификатор документа сохраняется в файле output_dir в файле по указанному пути.

3. Извлечение содержимого документа

  • Используйте следующую команду, чтобы преобразовать идентификатор документа в текст:
    python fetch_docs.py --input_dir crawl_results/my_crawl --output_dir crawl_texts --num_workers 16
    
  • На выходе получается текстовый файл, который можно использовать непосредственно для последующего обучения модели.

4. Просмотр отдельных документов

  • Если вам нужно проверить конкретный документ и ссылки на него, вы можете выполнить команду:
    python access_data.py /path/to/clueweb22 <document_id>
    

Функциональное управление

  • Интеллектуальный выбор веб-страниц
    • Основу Crawl4LLM составляет возможность фильтрации данных. Она использует классификаторы FastText для оценки длины и качества веб-контента, отдавая предпочтение страницам, которые более полезны для обучения модели. Пользователям не нужно фильтровать вручную, оптимизация выполняется автоматически.
    • Как это сделать: Задайте конфигурацию YAML в файле selection_method из-за dclm_fasttext_scoreУбедитесь в правильности пути модели.
  • Многопоточное ускорение
    • пройти (законопроект, проверку и т.д.) num_workers параметр для настройки количества потоков. Например, для 16-ядерного процессора можно установить значение 16, чтобы полностью использовать вычислительные ресурсы.
    • Примечание: Большое количество потоков может привести к переполнению памяти, поэтому рекомендуется проводить тестирование в соответствии с конфигурацией машины.
  • Поддержка крупномасштабного поиска
    • Проект рассчитан на очень большие массивы данных, такие как ClueWeb22, и подходит для исследовательских сценариев, требующих обработки миллиардов веб-страниц.
    • Совет по действию: Обеспечьте производительность ввода-вывода, храня данные на твердотельном накопителе; установите значение max_num_docs целевое количество документов (например, 20 миллионов).

Советы и рекомендации

  • Отладка и ведение журнала: Включить wandb: true Процесс ползания может быть записан для удобства анализа эффективности.
  • Оптимизация хранения: Результаты ползания имеют большой размер, поэтому рекомендуется зарезервировать достаточно места на диске (например, сотни ГБ).
  • Расширенная функциональность: В сочетании с системой DCLM извлеченный текст может быть использован непосредственно для предварительной тренировки большой модели.

Выполнив описанные выше действия, пользователи смогут быстро начать работу с Crawl4LLM для эффективного сбора веб-данных и оптимизации процесса предварительного обучения.

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...