C.W.K.
Stream
Lesson 01 of 05 · published

데이터 품질 > 데이터 양

~22 min · data-quality, curation, diversity

Level 0관찰자
0 XP0/43 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

가장 큰 레버 하나

이 quest 전체에서 하나만 기억해야 한다면 이거 — 데이터 품질이 다른 모든 걸 압도해. Hyperparameter는 한 자릿수 % 움직여. 데이터 품질은 두 자릿수 % 움직여.

"품질"이 실제로 뭐 의미하는지

  • 정확성 — 모든 assistant 응답이 사실적으로 정확하고 추론이 좋아야 해. 틀린 예제는 무서운 충실도로 틀린 행동을 가르쳐.
  • 일관성 — 비슷한 입력에 비슷한 모양의 출력. 일관성 없는 포맷은 "아무 포맷이나 OK"라고 모델한테 가르쳐.
  • 다양성 — 실제 입력 범위 커버. happy-path 500개면 501번째 edge case에서 무너져.
  • 완결성 — 각 예제가 원하는 행동을 완전히 보여줘. "생각 소리내서 말하기" 포함.
  • 자연스러운 언어 — 합성 템플릿이 아니라 진짜 인터랙션처럼 들려.

살아남는 큐레이션 워크플로우

  1. 한 페이지 스펙 작성: 어떤 행동, 어떤 톤, 어떤 포맷?
  2. 스펙으로부터 20~50개 "골드 스탠다드" 예제 손으로 작성. 느리게, 신중하게, 편집해서.
  3. 선택적: 강한 teacher 모델로 더 생성, 골드 예제를 few-shot anchor로 사용.
  4. 생성된 모든 예제 리뷰. 나쁜 거 거부 / 다시 쓰기. 예외 없음.
  5. 스케일 업 전에 작은 학습 런(10~50예제)으로 파이프라인 end-to-end 검증.
  6. 반복: 모델이 특정 패턴에서 계속 실패하면 그 패턴 예제 더 추가 — 그냥 random 데이터 더 던지지 말고.

거절해야 할 지름길

포럼 스크래핑, 필터 안 거친 LLM 출력 덤프, 리뷰 없이 운영 로그 재활용 — 여기서의 모든 지름길은 충실히 학습돼. 저품질 데이터의 비용은 추론 시점에 지불돼, 모델이 정확히 학습한 대로 행동할 때.

Code

An 'is this example actually good?' review checklist as code·python
import json

REJECTIONS = []

def review(example: dict) -> str | None:
    msgs = example["messages"]
    user = next(m for m in msgs if m["role"] == "user")["content"]
    assistant = next(m for m in msgs if m["role"] == "assistant")["content"]

    if len(user.strip()) < 5:
        return "user input too short"
    if len(assistant.strip()) < 10:
        return "assistant response too short"
    if assistant.strip().lower().startswith("i'm sorry") and "refuse" not in user.lower():
        return "unwarranted refusal"
    if assistant.count("```") % 2 != 0:
        return "unmatched code fence"
    return None

with open("raw.jsonl") as f, open("clean.jsonl", "w") as out:
    kept = 0
    for line in f:
        ex = json.loads(line)
        problem = review(ex)
        if problem:
            REJECTIONS.append((problem, ex))
        else:
            out.write(line)
            kept += 1

print(f"Kept {kept}, rejected {len(REJECTIONS)}")

External links

Exercise

후보 파인튜닝 데이터셋에서 20개 예제 가져와 인쇄한 5기준 체크리스트(정확성/일관성/다양성/완결성/자연스러움)에 통과시켜. 각 기준에 0~2 점수. 7/10 미만 다 거부. 네 20개 중 몇 개 살아남아? 그게 진짜 데이터셋 크기야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.