본문 바로가기
C.W.K.
Stream
Lesson 07 of 07 · published

저장 형식과 유지 관리

~18 min · datasets, infrastructure, ops

Level 0추측자
0 XP0/55 lessons0/10 achievements
0/150 XP to next level150 XP to go0% complete

JSONL은 평가의 공용 형식이야

쓸 만한 평가 프레임워크는 거의 모두 JSONL, 즉 한 줄에 레코드 하나를 담고 줄바꿈으로 구분한 JSON을 읽을 수 있어. grep으로 검색할 수 있고, 변경 사항을 비교하기 쉽고, 스트리밍할 수 있으며, 스키마 필드를 추가하는 부담도 거의 없어. JSONL을 써.

스키마를 엄격하게 관리해

JSONL 형식 자체에 스키마가 없더라도 레코드까지 제멋대로여서는 안 돼. 스키마를 고정하고, 데이터를 쓸 때 검증하고, 변경할 때 버전을 올려.

  • 필수: id, input, tags.
  • 선택: reference, acceptable_alternatives, expected, metadata, source.
  • 감사 추적: created_at, created_by, version.

어디에 저장할까

저장 위치적합한 경우
저장소 (datasets/*.jsonl)전체 크기가 < 5MB일 때. PR로 검토할 수 있어. 가장 쉬운 선택이야.
S3 / R2 / GCS데이터셋이 더 클 때. 객체 수명 주기 정책으로 버전을 관리해.
Hugging Face 허브공개 데이터셋을 공유하고 싶을 때.
Braintrust / DeepEval 클라우드웹 화면에서 하는 주석 작업, 버전 관리, 평가 실행을 한곳에서 처리하고 싶을 때.
Argilla / Label Studio능동 학습 기반 주석을 위한 자체 호스팅 관리 화면이 필요할 때.
원칙: 변경 사항을 읽기 쉽게 보여주는 형식이 결국 실제로 유지 관리할 형식이야. 사람이 직접 다루는 평가 데이터셋에서는 JSONL이 Parquet보다 나아.

정기적인 유지 관리

분기별 검토 — 사례 50개를 무작위로 추출해 검토해. 지금도 운영 환경을 제대로 대표하는지 확인해.

새 입력 군집 추가 — 운영 데이터 표본에서 데이터셋에 없는 새로운 입력 군집이 드러나면 그 주 안에 추가해. 갱신이 늦어지면 평가 모음은 금세 쓸모없어져.

폐기 — 더 이상 관련 없는 동작을 다루는 사례는 삭제하지 말고 archived: true로 표시해. 과거의 추적 기록은 남겨야 해.

Code

JSONL 스키마 검증·python
from pydantic import BaseModel, Field
from typing import Optional
import json

class EvalCase(BaseModel):
    id: str
    input: str
    reference: Optional[str] = None
    acceptable_alternatives: list[str] = Field(default_factory=list)
    tags: list[str] = Field(default_factory=list)
    source: str = "unknown"
    created_at: Optional[str] = None
    version: int = 1

def validate_jsonl(path):
    bad = []
    with open(path) as f:
        for i, line in enumerate(f, 1):
            try:
                EvalCase.model_validate_json(line)
            except Exception as e:
                bad.append((i, str(e)))
    return bad

errors = validate_jsonl("datasets/regression.jsonl")
if errors:
    raise SystemExit(f"{len(errors)} bad records: {errors[:3]}")
커밋 전 훅 — 검증에 실패한 데이터셋 PR 차단·yaml
# .pre-commit-config.yaml
repos:
  - repo: local
    hooks:
      - id: validate-eval-datasets
        name: Validate eval JSONL datasets
        entry: python scripts/validate_datasets.py
        language: system
        files: 'datasets/.*\.jsonl$'
        pass_filenames: true

External links

Exercise

저장소에 커밋 전 훅으로 JSONL 스키마 검증기를 추가해. 잘못된 평가 사례를 추가하는 PR을 차단해. 데이터셋 위생 관리가 얼마나 빠르게 자동화되는지 확인해.

Progress

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

댓글 0

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

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