BigCode 뒤의 대규모 근접 중복 제거
Hugging Face는 MinHash와 Locality Sensitive Hashing (LSH)을 활용한 대규모 근접 중복 제거 파이프라인을 구현하여 BigCode 프로젝트의 훈련 데이터 품질을 향상시켰습니다. 이 과정은 벤치마크 오염을 감소시키고, 프라이버시 위험을 완화하며, 모델이 더 작은 데이터셋으로도 동등하거나 더 나은 성능을 달성하도록 하여 훈련 효율성을 높입니다.
LLM 훈련에서 중복 제거의 중요성
대규모 언어 모델(LLM) 훈련에서 데이터 중복은 여러 심각한 문제를 야기합니다. 모델이 훈련 데이터를 그대로 출력하는 경향이 생기고, 프라이버시 공격에 취약해집니다. 효과적인 중복 제거는 다음과 같은 세 가지 주요 이점을 제공합니다:
- 훈련 효율성: 모델은 더 적은 훈련 단계로 동등하거나 더 우수한 성능을 달성할 수 있습니다.
- 평가 무결성: 중복을 제거하면 데이터 누출과 벤치마크 오염을 방지하여, 성능 향상이 실제로 모델이 테스트 데이터를 훈련 중에 보지 않았기 때문임을 보장합니다.
- 접근성: 데이터셋의 물리적 크기를 줄이면 저장, 전송 및 협업이 용이해집니다.
기술 구현: MinHash와 LSH
BigCode는 대규모 근접 중복 문서를 식별하고 제거하기 위해 세 단계 워크플로를 사용합니다.
1. Shingling 및 Fingerprinting
프로세스는 토큰화를 통해 n-gram(샤링글)으로 변환하는 것부터 시작합니다. 예를 들어, 단어 수준의 3-gram을 사용해 문서를 표현합니다. 각 샤링글은 여러 번 해시 및 순열을 적용받습니다. 문서 내 모든 샤링글에 대해 각 순열별 최소 해시 값을 취함으로써 "MinHash" 지문을 생성합니다. 이 연산은 $\mathcal{O}(NM)$ (여기서 $N$은 문서 수, $M$은 문서 길이) 의 시간 복잡도를 가지며, 병렬화를 통해 선형적으로 확장됩니다.
2. Locality Sensitive Hashing (LSH)
모든 문서 쌍을 비교하는 계산적으로 비현실적인 작업을 피하기 위해, LSH는 MinHash 지문 배열을 여러 밴드로 나눕니다. 특정 밴드 내에서 동일한 해시 값을 공유하는 문서들은 같은 버킷에 묶이며, 중복 제거 후보 쌍으로 표시됩니다.
3. 중복 제거 및 클러스터링
후보 쌍이 식별되면, BigCode는 그래프 기반 접근 방식을 사용해 중복 문서를 연결된 컴포넌트로 클러스터링합니다. 초기 파이프라인 버전은 Jaccard 유사도를 재검증해 false positive를 필터링했지만, "The Stack" 데이터셋에 대한 실험에서는 모든 LSH 후보를 true positive로 간주하는 것이 다운스트림 모델 성능을 가장 크게 향상시켰습니다.
Spark를 활용한 파이프라인 확장
테라바이트 규모의 데이터를 처리하기 위해 Hugging Face는 로컬 Python 프레임워크에서 Apache Spark로 전환했습니다. 이를 통해 분산 groupBy 연산과 연결 컴포넌트 탐지 알고리즘을 구현할 수 있었습니다. GCP DataProc을 이용해 팀은 4시간 미만에 1.4 TB 데이터를 중복 제거했으며, 시간당 약 $15의 비용으로 작업을 수행했습니다.
모델 성능에 미치는 영향
근접 중복 제거는 코드 모델의 품질에 큰 영향을 미칩니다. 주요 결과는 다음과 같습니다:
- 데이터셋 크기 vs. 성능: 근접 중복 제거를 통해 모델은 더 작은 데이터셋(예: 3 TB)으로도 더 큰 데이터셋(6 TB)보다 좋은 성능을 낼 수 있습니다.
- 공격적인 중복 제거: 유사도 임계값을 낮추고 샤링글 크기를 늘리면(예: unigram에서 5‑gram으로) false positive 비율이 감소해 추가적인 성능 향상이 가능합니다.
- 재현율: 유사도 임계값을 낮추면 고유사도 쌍의 재현율이 증가하여 더 많은 중복 데이터를 제거합니다.
제한 사항 및 향후 방향
근접 중복 제거는 기본적인 단계이지만, 독성, 편향 또는 PII와 같은 데이터 품질 필터링을 대체하지는 못합니다. 또한 팀은 벤치마크 오염이 여전히 문제임을 지적했으며, 예를 들어 MBPP 벤치마크는 GitHub에 흔히 존재하는 Leetcode 문제와 상당한 유사성을 보입니다.
향후 연구 방향으로는 코드에 대한 서브스트링 중복 제거, 단일 문서 내 반복 문단 탐지, 그리고 모델 임베딩을 활용한 의미 기반 중복 제거를 탐색해 다양성과 중복 사이의 균형을 맞추는 것이 포함됩니다.