개요
LLM 데이터 엔지니어링은 대규모 언어 모델의 학습 데이터를 수집·정제·구축·관리하는 분야입니다. “데이터 품질이 모델 성능의 한계를 결정”하며, 모델 아키텍처만큼 데이터 파이프라인이 중요합니다.
학습 데이터 유형
| 단계 | 데이터 유형 | 규모 | 설명 |
|---|
| 사전학습 (Pretraining) | 웹 크롤, 서적, 코드, 위키 | 수조 토큰 | 언어 이해의 기반 |
| SFT (Supervised Fine-Tuning) | 지시-응답 쌍 | 수만~수십만 | 지시 따르기 능력 부여 |
| RLHF/DPO | 선호도 데이터 (좋은/나쁜 응답 쌍) | 수만~수십만 | 인간 선호에 맞는 정렬 |
| 도메인 특화 | 법률, 의료, 금융 문서 | 가변 | 전문 분야 지식 주입 |
사전학습 데이터
주요 데이터셋
| 데이터셋 | 규모 | 특징 |
|---|
| Common Crawl | 수백 PB | 웹 크롤 원본, 노이즈 많음 |
| C4 | ~800GB | Common Crawl 정제본 (T5 학습용) |
| RefinedWeb | ~5T 토큰 | Falcon 학습용, 고품질 필터링 |
| RedPajama | ~1.2T 토큰 | LLaMA 재현용 오픈 데이터 |
| The Stack v2 | ~900B 토큰 | 코드 데이터 (600+ 언어) |
| ROOTS | ~1.6T 토큰 | BLOOM 학습용, 다국어 |
| Dolma | ~3T 토큰 | OLMo 학습용, 완전 공개 |
| FineWeb | ~15T 토큰 | HuggingFace, Common Crawl 최고 정제본 |
데이터 정제 파이프라인
웹 크롤 (Common Crawl)
↓
[1] 언어 필터링 (fastText 언어 감지)
↓
[2] 품질 필터링
├─ 퍼플렉시티 기반 (KenLM)
├─ 문서 길이/반복 비율
├─ 특수문자/URL 비율
└─ 분류기 기반 (좋은 문서 vs 나쁜 문서)
↓
[3] 중복 제거 (Deduplication)
├─ Exact: 해시 기반 완전 일치
├─ Near-dup: MinHash + LSH
└─ Fuzzy: SimHash
↓
[4] PII 제거 (개인정보)
├─ 이메일, 전화번호, 주민번호
└─ NER 기반 이름/주소 마스킹
↓
[5] 독성/유해 콘텐츠 필터링
├─ 분류기 (Jigsaw, Perspective API)
└─ 키워드 블랙리스트
↓
정제된 사전학습 코퍼스
핵심 기법
| 기법 | 설명 |
|---|
| 중복 제거 | MinHash + LSH로 유사 문서 제거 → 학습 효율 향상 |
| 품질 점수 | KenLM 퍼플렉시티, 위키피디아 유사도 등으로 문서 품질 평가 |
| 데이터 혼합 (Data Mix) | 웹:코드:서적:과학 비율 조절 → 모델 능력 밸런스 |
| 커리큘럼 학습 | 쉬운 데이터 → 어려운 데이터 순서로 학습 |
| 토큰화 | BPE (Byte Pair Encoding), SentencePiece, tiktoken |
SFT (지시 파인튜닝) 데이터
주요 데이터셋
| 데이터셋 | 크기 | 특징 |
|---|
| OpenAssistant (OASST) | ~160K | 인간 작성, 다국어, 대화 트리 |
| ShareGPT | ~90K | ChatGPT 대화 수집 |
| Alpaca | 52K | GPT-4로 생성 (Self-Instruct) |
| Dolly | 15K | Databricks 직원 직접 작성 |
| FLAN | ~15M | Google, 다양한 NLP 태스크 통합 |
| UltraChat | ~1.5M | 다중 턴 대화, 자동 생성 |
합성 데이터 생성 기법
| 기법 | 설명 |
|---|
| Self-Instruct | 소수 시드 → LLM이 지시-응답 쌍 자동 생성 |
| Evol-Instruct | 기존 지시를 점진적으로 복잡하게 진화 (WizardLM) |
| SPIN | 자기 대국(Self-Play)으로 데이터 품질 향상 |
| Magpie | LLM 로그 확률에서 지시 자동 추출 |
| Distillation | 대형 모델의 응답으로 소형 모델 학습 데이터 생성 |
→ 상세: 합성 데이터 (Synthetic Data)
RLHF / DPO 데이터
선호도 데이터 구조
프롬프트: "서울에서 맛집 추천해줘"
응답 A (선택): "강남역 근처 OO식당은..." ← 선호
응답 B (거부): "맛집은 많습니다." ← 비선호
| 데이터셋 | 크기 | 특징 |
|---|
| Anthropic HH-RLHF | ~170K | 도움됨/무해함 이중 기준 |
| OpenAI WebGPT | ~20K | 웹 검색 기반 비교 |
| UltraFeedback | ~64K | GPT-4가 점수 매긴 선호 데이터 |
| Nectar | ~180K | 다양한 모델 응답 비교 |
멀티모달 데이터
| 유형 | 데이터셋 | 용도 |
|---|
| 이미지-텍스트 | LAION-5B, CC12M, DataComp | 비전-언어 사전학습 |
| 이미지 지시 | LLaVA-Instruct, ShareGPT4V | 비전 지시 튜닝 |
| 비디오-텍스트 | WebVid, InternVid | 비디오 이해 |
| 오디오-텍스트 | LibriSpeech, GigaSpeech | 음성 모델 |
정렬 도구: CLIP (이미지-텍스트 유사도), BLIP-2 (캡션 생성)
데이터 품질 관리
품질이 중요한 이유
| 데이터 양 | 데이터 품질 | 결과 |
|---|
| 많음 | 낮음 | 노이즈 학습, 환각 증가 |
| 적음 | 높음 | 소량으로도 우수한 성능 (LIMA 논문: 1K 고품질 > 50K 저품질) |
| 많음 | 높음 | 최적 |
품질 평가 지표
| 지표 | 설명 |
|---|
| 퍼플렉시티 | 언어 모델 기준 자연스러움 |
| 다양성 | 지시/응답의 다양성 (임베딩 클러스터링) |
| 정확성 | 사실 관계 정확도 |
| 독성 | 유해/편향 콘텐츠 비율 |
| 중복률 | 동일/유사 데이터 비율 |
도구
| 도구 | 역할 |
|---|
| DVC | 데이터 버전 관리 |
| Ray | 분산 데이터 처리 |
| Spark | 대규모 데이터 처리 |
| datatrove | HuggingFace 데이터 처리 파이프라인 |
| text-dedup | 텍스트 중복 제거 |
| fastText | 언어 감지 |
| KenLM | n-gram 언어 모델 (품질 필터링) |
| Argilla | 데이터 라벨링/어노테이션 |
| Label Studio | 범용 어노테이션 플랫폼 |
관련 항목