일반 소개
Crawl4LLM은 칭화대학교와 카네기멜론대학교가 공동으로 개발한 오픈 소스 프로젝트로, 대규모 모델(LLM)의 사전 학습을 위한 웹 크롤링의 효율성을 최적화하는 데 중점을 두고 있습니다. 고품질 웹 페이지 데이터를 지능적으로 선별하여 비효율적인 크롤링을 크게 줄이며, 원래 100개의 웹 페이지를 크롤링해야 하는 작업량을 21개로 줄이면서도 사전 학습 효과는 유지할 수 있다고 주장합니다. 이 프로젝트는 개발자와 연구자를 위한 자세한 코드 및 구성 문서와 함께 깃허브에서 호스팅되고 있으며, Crawl4LLM의 핵심은 모델 학습을 위해 웹 페이지의 가치를 평가하고 유용한 콘텐츠의 우선순위를 정하는 데이터 선택 알고리즘에 있으며 이미 학계와 개발자 커뮤니티에서 주목받고 있습니다.

기능 목록
- 지능형 데이터 선택대규모 모델의 사전 학습에 대한 웹 페이지의 영향력을 기반으로 가치가 높은 콘텐츠를 필터링합니다.
- 여러 크롤링 모드다양한 요구에 유연하게 대응할 수 있도록 크롤링4LLM 모드, 랜덤 크롤링 등이 지원됩니다.
- 효율적인 크롤링 엔진멀티 스레딩과 최적화된 구성을 사용하여 크롤링 속도를 크게 높입니다.
- 데이터 추출 및 저장: 크롤링된 웹 페이지 ID와 텍스트 콘텐츠를 모델 학습에 사용할 수 있는 파일로 저장합니다.
- 대규모 데이터 세트 지원학술 연구 및 산업 응용 분야에 적합한 ClueWeb22와 같은 데이터 세트와 호환됩니다.
- 구성 사용자 지정스레드 수 및 최대 문서 수와 같은 크롤링 매개변수는 YAML 파일을 통해 조정됩니다.
도움말 사용
설치 프로세스
Crawl4LLM은 Python을 지원하는 환경에서 실행해야 하며, 자세한 설치 단계는 다음과 같습니다:
- 환경 준비
- 시스템에 Python 3.10 이상이 설치되어 있는지 확인합니다.
- 종속성 충돌을 피하기 위해 가상 환경을 만듭니다:
python -m venv crawl4llm_env source crawl4llm_env/bin/activate # Linux/Mac crawl4llm_env\Scripts\activate # Windows
- 복제 프로젝트
- GitHub에서 소스 코드를 다운로드하세요:
git clone https://github.com/cxcscmu/Crawl4LLM.git cd Crawl4LLM
- GitHub에서 소스 코드를 다운로드하세요:
- 종속성 설치
- 다음 명령을 실행하여 필요한 라이브러리를 설치합니다:
pip install -r requirements.txt
- 참고: 종속성 파일에는 크롤러를 실행하는 데 필요한 모든 Python 패키지가 나열되므로 네트워크가 양호한지 확인하세요.
- 다음 명령을 실행하여 필요한 라이브러리를 설치합니다:
- 분류기 다운로드
- 이 프로젝트는 DCLM fastText 분류기를 사용하여 웹 페이지의 품질을 평가하며, 모델 파일을 수동으로 다운로드해야 합니다.
fasttext_scorers/
카탈로그. - 경로 예시:
fasttext_scorers/openhermes_reddit_eli5_vs_rw_v2_bigram_200k_train.bin
. - 공식 리소스 또는 관련 링크에서 확인할 수 있습니다.
- 이 프로젝트는 DCLM fastText 분류기를 사용하여 웹 페이지의 품질을 평가하며, 모델 파일을 수동으로 다운로드해야 합니다.
- 데이터 집합 준비하기
- 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. 크롤러 실행
- 크롤링 명령을 실행합니다:
python crawl.py crawl --config configs/my_config.yaml
- 크롤링이 완료되면 문서 ID가
output_dir
를 지정된 경로 아래의 파일에 추가합니다.
3. 문서 콘텐츠 추출
- 다음 명령을 사용하여 크롤링된 문서 ID를 텍스트로 변환합니다:
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의 핵심은 데이터 필터링 기능입니다. 빠른 텍스트 분류기를 사용하여 웹 콘텐츠의 길이와 품질을 평가하여 모델 학습에 더 유용한 페이지의 우선순위를 지정합니다. 사용자가 수동으로 필터링할 필요가 없으며 최적화가 자동으로 수행됩니다.
- 사용 방법: YAML 구성을 설정하려면
selection_method
때문에dclm_fasttext_score
를 클릭하고 모델 경로가 올바른지 확인합니다.
- 멀티 스레드 가속
- 통과(청구서 또는 검사 등)
num_workers
매개변수를 사용하여 스레드 수를 조정할 수 있습니다. 예를 들어 16코어 CPU를 16으로 설정하여 컴퓨팅 리소스를 최대한 활용할 수 있습니다. - 참고: 스레드 수가 많으면 메모리 오버플로가 발생할 수 있으므로 머신 구성에 따라 테스트하는 것이 좋습니다.
- 통과(청구서 또는 검사 등)
- 대규모 크롤링 지원
- 이 프로젝트는 ClueWeb22와 같은 초대형 데이터 세트를 위해 설계되었으며, 수십억 개의 웹 페이지를 처리해야 하는 연구 시나리오에 적합합니다.
- 조치 제안: SSD에 데이터를 저장하여 I/O 성능을 보장합니다.
max_num_docs
는 목표 문서 수입니다(예: 2,000만 개).
팁 및 유용한 정보
- 디버깅 및 로깅: 사용
wandb: true
크롤링 프로세스를 기록하여 효율성을 쉽게 분석할 수 있습니다. - 스토리지 최적화: 크롤링 결과가 크므로 충분한 디스크 공간(예: 수백 GB)을 확보하는 것이 좋습니다.
- 확장된 기능DCLM 프레임워크와 결합하여 추출된 텍스트를 대규모 모델 사전 학습에 바로 사용할 수 있습니다.
위의 단계를 통해 사용자는 효율적인 웹 데이터 크롤링과 사전 학습 프로세스 최적화를 위해 Crawl4LLM을 빠르게 시작할 수 있습니다.
© 저작권 정책
이 글은 저작권이 있으며 무단으로 복제해서는 안 됩니다.
관련 문서
댓글 없음...