LLM 심사관 대신 타입 기반 AI 결정을 사용하여 데이터셋을 필터링하는 Rust CLI를 구축하다
요약
대규모 데이터셋 필터링의 어려움을 해결하기 위해, LLM 심사관 대신 TypeSafe의 Jev 모델을 활용한 Rust CLI 도구 'jev-curate'를 개발했습니다. 이 도구는 텍스트 생성 없이 상태와 타입 지정 질문만으로 카테고리 선택이나 확률 점수 같은 구조화된 답변을 얻어 데이터 품질 관리를 효율적으로 수행합니다.
핵심 포인트
- LLM 기반 필터링은 비용과 속도 문제가 있어 대규모 작업에 부적합함.
- jev-curate는 TypeSafe의 Jev 모델을 사용하여 구조화된 데이터를 추출함.
- reasoning-math 프리셋으로 순환 논리 및 추론 단계를 점수화할 수 있음.
대규모 합성 또는 사전 학습(pretraining) 데이터셋을 정리하는 것은 아무도 충분히 이야기하지 않는 고통스러운 일입니다. 결국 세 가지 나쁜 선택지에 직면하게 됩니다.
정규 표현식(Regex) 및 키워드 필터는 빠르지만 맹목적입니다. 잘못된 JSON 행은 잡아낼 수 있습니다. 하지만 순환 논리(circular logic)를 가진 수학적 유도 과정이나 추론처럼 꾸민 아첨성 채우기 글(sycophantic filler)은 잡아내지 못합니다.
전체 LLM을 심사관으로 사용하는 것은 미묘한 것들을 포착하지만, 대규모로 사용하면 실제 비용이 발생하고 필요한 것보다 느립니다.
저는 세 번째 옵션을 원했기 때문에 TypeSafe의 Jev 모델을 중심으로 jev-curate를 구축했습니다. Jev는 텍스트를 생성하지 않습니다. 상태(state)와 타입 지정된 질문(typed question)을 보내면, 타입 지정된 답변을 돌려줍니다: 카테고리 선택, 예/아니오 확률, 순서형 점수 등입니다. 파싱할 출력이 없고, 데이터가 임의로 재작성될 위험도 없습니다.
bash
cargo install jev-curate
export TYPESAFE_API_KEY="your-api-key"
jev-curate filter train.parquet \
--preset reasoning-math \
--out ./output/ \
--concurrency 32
v0.1.0 버전에는 세 가지 프리셋이 포함되어 있습니다:
- reasoning-math: 순환 논리와 유효하지 않은 추론 단계를 확인하고, 깊이에 대해 1부터 5까지 점수를 매깁니다.
- anti-sycophancy:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기