Pulpie: 웹 정리를 위한 파레토 최적 모델
Pulpie: 웹 정리를 위한 파레토 최적 모델
Pulpie는 탐색 메뉴, 광고, 푸터와 같은 보일러플레이트를 제거하여 HTML 페이지에서 주요 콘텐츠를 추출하도록 설계된 파레토 최적 모델군입니다. 디코더 대신 인코더 아키텍처를 활용함으로써, Pulpie는 최첨단(SOTA) 추출 품질을 달성하면서 Dripper와 같은 선도적인 추출기 대비 비용을 최대 20배까지 절감합니다.
LLM 학습 및 추론을 위한 고효율 데이터 정리
깨끗한 데이터는 대형 언어 모델(LLM)의 사전 학습 단계와 추론 단계 모두에서 핵심적입니다. 연구에 따르면, 모델 기반 추출이 코드 블록이나 수식과 같은 구조화된 콘텐츠를 보존하는 데 있어 휴리스틱 기반 방법보다 현저히 우수하며, 휴리스틱은 종종 데이터를 손상시킵니다.
AICC에 따르면(Ma et al., 2025), 추출기만 개선해도 모델 정확도에 측정 가능한 향상을 가져올 수 있습니다. 모델 추출 코퍼스로 학습된 모델은 13개 벤치마크에서 평균 정확도가 1.08% 포인트 높게 나타났으며, FineWeb·RefinedWeb과 같이 과도하게 필터링된 코퍼스로 학습된 모델을 능가했습니다.
추론 시, 컨텍스트 윈도우에 잡음이 섞이면 모델 답변이 크게 흐려질 수 있습니다. 단 하나의 무관한 구절만 있어도 정확도와 효율성이 떨어지므로, RAG 파이프라인에서는 고품질 정리가 필수적입니다.
아키텍처 전환: 대역폭 제한형 → 연산 제한형
Pulpie의 효율성 향상은 아키텍처에서 비롯됩니다. Dripper와 같은 읽기 전용 추출기는 라벨을 토큰 단위로 하나씩 출력하는 디코더를 사용해 대역폭에 제한을 받고 비용이 많이 듭니다. 반면 Pulpie는 인코더를 사용해 모든 HTML 블록에 대해 한 번의 순전파로 라벨을 지정합니다. 이로써 병목 현상이 메모리 대역폭에서 연산으로 이동하며, 최신 GPU에서 훨씬 효율적입니다.
이 차이는 NVIDIA L4와 같은 저가형 GPU에서 특히 두드러집니다. L4에서 pulpie-orange-small은 초당 13.7 페이지를 처리하는 반면, Dripper는 초당 0.68 페이지에 불과합니다. 이를 억 페이지 규모로 확장하면 비용 차이가 크게 나타납니다:
| 설정 | 페이지/초 (L4) | 1억 페이지당 비용 (L4) |
|---|---|---|
| Pulpie Small | 13.7 | ~$7,900 |
| Dripper | 0.68 | ~$159,000 |
모델 패밀리 및 성능 벤치마크
Pulpie는 교사 모델과 두 개의 증류된 학생 모델로 구성됩니다. 모든 모델은 EuroBERT 기반이며 <|sep|> 블록 마커 아키텍처를 사용합니다.
모델 사양
| 모델 | 파라미터 | ROUGE-5 F1 | 비고 |
|---|---|---|---|
| Pulpie Orange Large | 2.1B | 0.873 | 교사 모델 |
| Pulpie Orange Base | 610M | 0.863 | Large에서 증류 |
| Pulpie Orange Small | 210M | 0.862 | 프로덕션 권장 |
품질 비교
WebMainBench 영어 서브셋에서 Pulpie Orange Small은 Dripper와 동일한 품질(0.862 vs 0.864 ROUGE-5 F1)을 보이며 크기는 1/3 수준입니다. 또한 Pulpie는 긴 페이지에서도 더 우수합니다. Pulpie는 블록을 8,192 토큰 청크로 묶어 처리하므로 32k 토큰 컨텍스트 윈도우 한계로 인해 Dripper가 135 페이지에서 빈 결과를 반환하는 상황을 겪지 않습니다.
학습 및 증류 파이프라인
Pulpie 모델은 16,670개의 영어 Common Crawl 페이지로 만든 고품질 합성 데이터셋을 사용해 학습되었습니다. 각 페이지는 MinerU-HTML로 블록을 나눈 뒤 DeepSeek V3.2가 콘텐츠와 보일러플레이트를 라벨링했습니다. 라벨 품질을 보장하기 위해 Dripper 0.6B와 교차 검증을 수행했으며, 두 라벨러가 최소 70% 이상의 블록에서 일치한 페이지만을 유지했습니다.
- 교사 학습: EuroBERT-2.1B 모델을 검증된 데이터셋에 클래스 가중치 교차 엔트로피를 적용해 미세 조정했습니다(콘텐츠 비율 28.6% 불균형 처리).
- 증류: 2.1B 교사를 Base(610M)와 Small(210M) 모델로 증류했으며, KL‑divergence 손실(가중치 0.7)과 하드 라벨 교차 엔트로피(0.3)를 온도 2.0으로 결합했습니다.
구현 및 사용법
Pulpie는 Python 패키지로 제공되며 Hugging Face에 오픈소스로 공개되었습니다. 사용자는 속도와 품질 요구에 따라 모델 크기를 선택할 수 있습니다.
from pulpie import Extractor
# 기본은 Pulpie Orange Small
extractor = Extractor()
result = extractor.extract(html)
print(result.markdown) # 정제된 마크다운 출력
대량 처리의 경우 Pipeline 클래스를 사용해 CPU 전처리를 GPU 추론과 겹쳐 실행할 수 있습니다:
from pulpie import Extractor, Pipeline, PageInput
pipeline = Pipeline(model="small")
results = pipeline.extract_batch(
[PageInput(html=h, page_id=i) for i, h in enumerate(pages)]
)
커뮤니티 피드백
출시 이후 아키텍처 통찰에 대한 찬사가 이어지는 한편, 일부 커뮤니티 구성원은 단순 CSS 선택자나 마크다운 변환기보다 모델 기반 추출이 필요하냐는 질문을 제기했습니다. 그러나 저자는 휴리스틱 기반 도구인 Trafilatura가 ROUGE-5 F1에서 0.619에 불과한 반면, Pulpie Orange Small은 0.862를 기록한다는 데이터를 제시하며 웹 규모 정리에서 품질 격차가 크다는 점을 강조했습니다.
요약
Pulpie는 오픈소스 인코더 기반 모델 패밀리로, 디코더 기반 대안인 Dripper에 비해 20배 낮은 비용으로 SOTA 수준의 HTML 주요 콘텐츠 추출을 제공합니다.
제목
Pulpie: 웹 정리를 위한 파레토 최적 모델