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로 표시해. 과거의 추적 기록은 남겨야 해.