Mac(MLX)에서 8B Teacher 모델을 0.6B Student 모델로 증류(Distillation)했습니다. 0.6B 모델은 해당
요약
금융 문서 처리를 위해 Mac의 MLX 환경에서 8B 모델을 0.6B 모델로 지식 증류(Distillation)한 사례를 공유합니다. 소형 모델이 RAG 인덱싱 전 요약 및 태깅 작업을 효율적으로 수행할 수 있음을 입증했습니다.
핵심 포인트
- MLX를 활용해 M-시리즈 Mac에서 12분 만에 0.6B 모델 증류 완료
- 증류된 모델은 교사의 지식보다 글쓰기 습관(Habits)을 복제하는 경향이 있음
- 소형 모델에서는 Few-shot 방식이 오히려 성능을 악화시킬 수 있음
- 학습 전 교사 모델의 라벨링 품질에 대한 철저한 감사가 필수적임
저는 직업 특성상 금융 문서를 다루는데, 문서가 RAG (Retrieval-Augmented Generation) 인덱스에 들어가기 전에 이를 보강할 수 있는 로컬 실행 가능 소형 모델이 필요했습니다. 각 청크(chunk)에 대해 충실한 (3문장) 요약을 작성하고 몇 가지 범주적 측면(섹션 유형, 구체성, 수치 밀도, 미래 지향성 정도)을 태깅하는 작업입니다. 모든 청크를 8B 모델이나 API로 보내는 것은 느리고 비용이 많이 들며, 금융, 의료, 법률과 같이 규제가 엄격한 분야에서는 개인정보 보호 및 컴플라이언스(compliance) 문제로 인해 아예 불가능한 경우가 많습니다. 때로는 완전히 소유하고 로컬에서 실행할 수 있는 소형 모델이 단순히 더 저렴한 것을 넘어 유일한 선택지가 되기도 합니다.
그래서 저는 그 좁은 기술 하나를 0.6B 모델로 증류(distilling)하는 시도를 했습니다. 설정은 모두 M-시리즈 Mac에서 MLX를 사용하여 로컬로 진행했습니다:
- Teacher: 약 170개의 실제 10-K 보고서에 대해 레이블(요약 + 측면)을 작성하는 8B 추론(reasoning) 모델.
- Student: 해당 레이블로 학습된 Qwen3-0.6B, QLoRA rank 32.
소요 시간은 약 12분, 피크 RAM 사용량은 4.1 GB였습니다.
평가(Eval): 학습에서 본 적 없는 기업들의 44개의 홀드아웃(held-out) 문서(그룹 분할, 중복 없음)를 사용했습니다. 섹션 정확도는 LLM 판사가 아닌 정답(ground truth)을 기준으로 측정했습니다. 무작위 확률은 33%입니다.
결과:
| 모델 | 섹션 정확도 | 충실도(Faithful) p50 지연시간 |
|---|---|---|
| Teacher (8B) | 98.4% | 0.98 |
| Student (0.6B + QLoRA) | 100% | 0.73 |
| Base 0.6B zero-shot | 36.2% | 0.83 |
| Base 0.6B few-shot | 33.3% | 0.29 |
3가지 결과:
- Few-shot은 소형 모델의 성능을 개선하는 것이 아니라 악화시켰습니다. 0.6B 규모에서는 컨텍스트 내의 예시들이 유출되었습니다. 21개의 Few-shot 요약 중 14개가 대상 문서 대신 예시(exemplar)에 포함된 회사를 설명했으며, 종종 회사 이름을 그대로 언급했습니다. 저는 두 가지 서로 다른 예시 쌍에서 이를 확인했습니다. 0.6B 모델은 예시를 실제 입력값과 분리하여 유지할 만한 여유 공간이 없습니다.
- Student 모델은 커버리지(coverage)를 위해 충실도(faithfulness)를 희생했습니다. 베이스 모델보다 더 풍부하고 자신감 있게 요약을 작성하지만, 사실 관계의 실수(충실도 0.73 vs 베이스 0.83)로 그 대가를 치릅니다.
- 증류(Distillation)는 교사(teacher)의 지식이 아니라 글쓰기 행동(writing behavior)을 전달하는 것으로 보입니다. Student 모델은 교사의 의도(intent)가 아니라 습관(habits)을 복제합니다.
다른 8B 모델(llama-3.1-8b)로부터 증류(distilled)된 동일한 0.6B 모델은 0.98의 충실도(faithful)를 기록했지만, 해당 교사(teacher) 모델은 더 게으른 라벨러(labeler)였고 학생(student) 모델은 그 게으름을 복제했습니다. 제가 얻은 교훈은 다음과 같습니다: 학습(training run)에 비용을 들여 투입하기 전에, 당신의 라벨(labels)에 대한 교사 모델의 실제 출력값을 반드시 감사(audit)하십시오. 학생 모델은 의도(intent)가 아니라 습관(habits)을 물려받기 때문입니다. 현재 이 방식의 한계는 하나의 좁은 작업, 작은 평가 세트(49개 문서), 단일 도메인(금융 공시 서류)에 국한되어 있다는 점입니다. 이것은 일반적인 벤치마크(benchmark)가 아니라, 리포지토리(repo)에 수치와 부정 대조군(negative controls)이 포함된 재현 가능한 로컬 실험일 뿐입니다. 하지만 솔직히 말해 유망해 보입니다. 모든 것이 MLX를 사용하여 Mac에서 재현 가능합니다: https://github.com/sciences44/distill-your-docs. 다른 분들도 소규모 규모에서 퓨샷 오염(few-shot contamination) 효과를 경험했는지, 혹은 충실도(faithfulness)와 커버리지(coverage) 사이의 트레이드오프(tradeoff)를 해결할 깨끗한 방법을 찾았는지 궁금합니다. 또는 구체적인 사용 사례와 함께 이 구현 방식에 대해 더 큰 피드백이 있다면 알려주세요. /u/AstraNorth 제출 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기