Introdução geral
O Crawl4LLM é um projeto de código-fonte aberto desenvolvido em conjunto pela Universidade de Tsinghua e pela Universidade Carnegie Mellon, com foco na otimização da eficiência do rastreamento da Web para o pré-treinamento de modelos grandes (LLM). Ele reduz significativamente o rastreamento ineficaz por meio da seleção inteligente de dados de páginas da Web de alta qualidade, alegando ser capaz de reduzir a carga de trabalho da necessidade original de rastrear 100 páginas da Web para 21, mantendo o efeito de pré-treinamento. O projeto está hospedado no GitHub, com código detalhado e documentação de configuração para desenvolvedores e pesquisadores. O núcleo do Crawl4LLM está em seu algoritmo de seleção de dados, que avalia o valor das páginas da Web para o treinamento do modelo e prioriza o conteúdo útil, e já atraiu a atenção de acadêmicos e da comunidade de desenvolvedores.
Lista de funções
- Seleção inteligente de dadosFiltro de conteúdo de alto valor com base na influência das páginas da Web no pré-treinamento de modelos grandes.
- Vários modos de rastreamentoO modo Crawl4LLM, rastreamento aleatório, etc. são suportados para atender de forma flexível a diferentes necessidades.
- Mecanismo de rastreamento eficienteUse multi-threading e configurações otimizadas para aumentar significativamente a velocidade de rastreamento.
- Extração e armazenamento de dadosSalvar os IDs das páginas da Web rastreadas e o conteúdo do texto como arquivos que podem ser usados para o treinamento do modelo.
- Suporte para conjuntos de dados em grande escalaCompatível com conjuntos de dados como o ClueWeb22, adequado para pesquisas acadêmicas e aplicações industriais.
- Personalização da configuraçãoParâmetros de rastreamento, como o número de threads e o número máximo de documentos, são ajustados por meio de arquivos YAML.
Usando a Ajuda
Processo de instalação
O Crawl4LLM precisa ser executado em um ambiente compatível com Python. Veja a seguir as etapas detalhadas de instalação:
- Preparação ambiental
- Certifique-se de que o Python 3.10 ou posterior esteja instalado em seu sistema.
- Crie ambientes virtuais para evitar conflitos de dependência:
python -m venv crawl4llm_env source crawl4llm_env/bin/activate # Linux/Mac crawl4llm_env\Scripts\activate # Windows
- projeto de clonagem
- Baixe o código-fonte do GitHub:
git clone https://github.com/cxcscmu/Crawl4LLM.git cd Crawl4LLM
- Baixe o código-fonte do GitHub:
- Instalação de dependências
- Execute o seguinte comando para instalar as bibliotecas necessárias:
pip install -r requirements.txt
- Observação: O arquivo de dependência lista todos os pacotes Python necessários para que o rastreador seja executado, portanto, certifique-se de que você tenha uma boa rede.
- Execute o seguinte comando para instalar as bibliotecas necessárias:
- Baixar o Sorter
- O projeto usa o classificador DCLM fastText para avaliar a qualidade das páginas da Web e requer o download manual do arquivo de modelo para o
fasttext_scorers/
Catálogo. - Exemplo de caminho:
fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin
. - Disponível em recursos oficiais ou links relacionados.
- O projeto usa o classificador DCLM fastText para avaliar a qualidade das páginas da Web e requer o download manual do arquivo de modelo para o
- Preparação do conjunto de dados
- Se estiver usando conjuntos de dados do ClueWeb22, será necessário solicitar acesso e armazená-los no SSD (o caminho precisa ser especificado na configuração).
Como usar
A operação do Crawl4LLM é feita principalmente por meio da linha de comando, que é dividida em três etapas: configuração, rastreamento e extração de dados. Veja a seguir o fluxo detalhado:
1. configurar a tarefa de rastreamento
- existir
configs/
Crie um arquivo YAML no diretório (por exemplomy_config.yaml
), exemplos de conteúdo: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_selected_docs_per_iter: 10000 max_num_docs: 20000000 selection_method: "dclm_fasttext_score" ordem: "desc" selection_method: "dclm_fasttext_score" order: "desc" wandb: false selection_method: "dclm_fasttext_score" order: "desc" wandb: false - type: "length" (tipo: "comprimento") - tipo: "fasttext_score" nome do avaliador: "dclm_fasttext_score" model_path: "fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin"
- Descrição do parâmetro::
cw22_root_path
Caminho do conjunto de dados do ClueWeb22.arquivo_docs_semente
Lista inicial de documentos semente.num_workers
Número de roscas, ajustado para o desempenho da máquina.max_num_docs
Número máximo de documentos a serem rastreados.método_de_seleção
Método de seleção de dados, recomendadodclm_fasttext_score
.
2. executar o rastreador
- Execute o comando crawl:
python crawl.py crawl --config configs/my_config.yaml
- Quando o rastreamento é concluído, o ID do documento é salvo no arquivo
output_dir
no arquivo sob o caminho especificado.
3. extração do conteúdo do documento
- Use o seguinte comando para converter o ID do documento rastreado em texto:
python fetch_docs.py --input_dir crawl_results/my_crawl --output_dir crawl_texts --num_workers 16
- A saída é um arquivo de texto que pode ser usado diretamente para o treinamento subsequente do modelo.
4. visualização de documentos individuais
- Se precisar verificar um documento específico e seus links, você pode executar:
python access_data.py /path/to/clueweb22
Operação da função em destaque
- Seleção inteligente de páginas da Web
- O núcleo do Crawl4LLM é seu recurso de filtragem de dados. Ele usa classificadores FastText para avaliar a extensão e a qualidade do conteúdo da Web, priorizando as páginas que são mais úteis para o treinamento do modelo. Os usuários não precisam filtrar manualmente, a otimização é feita automaticamente.
- Como fazer isso: Defina a configuração YAML no arquivo
método_de_seleção
por causa dedclm_fasttext_score
e verifique se o caminho do modelo está correto.
- Aceleração multi-threaded
- aprovar (um projeto de lei ou inspeção etc.)
num_workers
para ajustar o número de threads. Por exemplo, uma CPU de 16 núcleos pode ser definida como 16 para utilizar totalmente os recursos de computação. - Observação: um grande número de threads pode levar a um estouro de memória; recomenda-se testar de acordo com a configuração da máquina.
- aprovar (um projeto de lei ou inspeção etc.)
- Suporte para rastreamento em larga escala
- O projeto foi desenvolvido para conjuntos de dados muito grandes, como o ClueWeb22, e é adequado para cenários de pesquisa que exigem o processamento de bilhões de páginas da Web.
- Sugestão de ação: Garanta o desempenho de E/S armazenando os dados em um SSD; defina a opção
max_num_docs
é o número alvo de documentos (por exemplo, 20 milhões).
Dicas e truques
- Depuração e registro em log: Habilitar
wandb: true
O processo de rastreamento pode ser registrado para facilitar a análise da eficiência. - Otimizar o armazenamentoOs resultados do rastreamento são grandes e é recomendável reservar espaço suficiente em disco (por exemplo, centenas de GB).
- Funcionalidade estendidaEm combinação com a estrutura DCLM, o texto extraído pode ser usado diretamente para o pré-treinamento de modelos grandes.
Com as etapas acima, os usuários podem começar a usar rapidamente o Crawl4LLM para rastrear dados da Web com eficiência e otimizar o processo de pré-treinamento.