TL;DR
작성자는 합성 데이터로 고정한 Support-ticket classification과 Invoice field extraction에서 Qwen2.5-72B-Instruct의 출력을 교사 신호로 삼고 Qwen3-4B-Instruct-2507을 QLoRA로 학습했다. 4B 모델은 ticket exact-label agreement를 72.4%에서 90.8%로, invoice field-level agreement를 82.9%에서 93.5%로 높였고, 모든 invoice 필드가 맞은 행도 1.2%에서 62.5%로 늘었다. 개선의 핵심은 입력에 없는 subtotal·currency·quantity를 지어내지 않는 null 규칙 습득이었지만, complaint처럼 의미가 겹치는 라벨과 교사 자체의 출력 불일치는 성능 상한으로 남았다. 실제 고객 로그와 stronger prompting baseline이 빠졌으므로, 이 결과는 4B가 72B를 일반적으로 대체한다는 뜻이 아니라 좁은 반복 업무에서 비용 효율적인 교사 행동 재현이 가능하다는 뜻이다.
커뮤니티 반응
작성자 본인의 실험과 실패 사례가 중심이며, 댓글에 기반한 별도 커뮤니티 반응은 제공되지 않았다.
주요 논점
좁고 반복적인 classification·extraction 업무에서는 4B 모델도 QLoRA로 교사 모델 출력과 90% 이상 일치할 수 있다. 특히 invoice의 모든 필드 정답 행이 1.2%에서 62.5%로 증가해 작은 모델의 실무적 비용 절감 가능성을 뒷받침한다.
측정값은 실제 고객 로그가 아니라 합성 입력과 Qwen2.5-72B-Instruct의 자체 출력 재현율이므로, 4B가 72B를 일반적으로 대체한다고 해석할 수 없다. 최적화 prompt·few-shot·8B·rank sweep과 실제 traffic 평가도 빠져 있다.
교사 출력이 모순되거나 taxonomy가 겹치면 Fine-tuning만으로 agreement ceiling을 넘기 어렵다. complaint 라벨의 의미 중첩과 unit_price·amount 처리의 교사 불일치가 학생 성능보다 데이터와 라벨 설계가 더 큰 병목임을 보여준다.
합의점 vs 논쟁점
합의점
- Holdout은 학습 전에 분리하고 평가 과정에서 확인하지 않아야 성능 수치가 의미를 가진다. 이 실험은 seeded split으로 train·validation·holdout을 나누고 같은 holdout에서 baseline과 tuned model을 비교했다. 다만 표본이 ticket 76건과 invoice 80건으로 작아 단일 숫자 차이를 과도하게 해석하지 않아야 한다.
- Aggregate metric만으로는 오류 원인을 구분하기 어렵다. 작성자는 confusion matrix와 실제 disagreement rows를 함께 확인해 complaint의 taxonomy 중첩, null 규칙 위반, 교사 출력 불일치를 분리했다. 세 문제는 각각 라벨 재설계, prompt 규칙 정비, 교사 일관성 개선이라는 다른 처방을 요구한다.
- 교사 모델의 자기 일관성이 학생 모델의 증류 성능을 제한한다. 같은 prompt를 사용해도 Naan Bread의 가격 필드를 서로 다른 방식으로 처리하면 학생은 안정적인 규칙을 학습할 수 없다. 따라서 Fine-tuning epoch를 늘리기 전에 교사 출력과 null convention을 먼저 정리해야 한다.
논쟁점
- Invoice의 93.5% field-level agreement와 62.5% row-exact 비율 가운데 어떤 지표가 실무 품질을 더 잘 나타내는지는 업무의 오류 허용도에 따라 달라진다. 약 20개 필드 중 하나만 틀려도 행 전체를 실패로 처리하는 row-exact는 엄격하지만, 일부 필드만 필요한 파이프라인에서는 field-level 수치가 더 직접적일 수 있다. 원문은 두 지표를 함께 제시했지만 특정 업무에 어느 하나를 우선하라고 결론내리지는 않았다.
- 4B가 72B급 모델에 충분히 가까워졌다는 해석에는 실제 고객 로그와 강한 prompting baseline이 없다는 한계가 있다. 합성 입력은 작성자가 생각해 낸 방식으로만 messy하기 때문에 실제 traffic의 예외와 분포 이동을 포착하지 못할 수 있다. 따라서 현재 수치는 고정된 합성 분포에서 교사 행동을 재현한 결과이지 frontier API 대체 성능이 아니다.
실용적 조언
- 학습 전에 holdout을 분리하고 seed와 split을 고정해야 한다. Baseline과 Fine-tuned model은 같은 holdout, system prompt, decoding settings에서 비교해야 prompt나 데이터 차이가 성능 차이로 섞이지 않는다. 평가셋을 반복해서 들여다보며 학습 데이터를 수정하면 수치의 정직성이 약해진다.
- 최악의 disagreement rows를 직접 읽고 오류 유형을 분류해야 한다. 분류 업무에서는 혼동 행렬과 실제 문장을 함께 확인해 라벨 겹침과 학생 오류를 구분하고, 추출 업무에서는 null·추론·필드 매핑 규칙을 따로 검사해야 한다. 오류가 어디에 몰리는지 알아야 taxonomy 수정, prompt 수정, 모델 학습 중 올바른 대응을 선택할 수 있다.
- Teacher 출력을 학습 데이터로 쓰기 전에 동일한 입력을 반복해 자기 일관성을 확인해야 한다. 교사가 같은 문서 형식에서 unit_price와 amount를 번갈아 선택하면 학생에게 더 많은 epoch를 적용해도 기준 자체가 흔들린다. null convention을 명확히 적고 모순된 교사 행을 정제하는 편이 추가 학습보다 효과적일 수 있다.
- 저신뢰 결과를 큰 모델로 보내는 routing을 함께 설계할 수 있다. invalid JSON이나 사전에 없는 라벨처럼 기계적으로 감지할 수 있는 실패를 먼저 걸러낸 뒤 Qwen2.5-72B-Instruct 같은 큰 모델에 재요청하면 모든 입력을 72B로 처리하지 않아도 된다. 다만 원문에서는 이 routing을 구현했을 뿐 성능과 비용 절감 수치를 아직 제대로 측정하지 않았다.
섹션별 상세
용어 해설
- QLoRA
- — QLoRA는 4비트로 양자화한 기본 모델은 고정하고, 저순위 어댑터만 학습하는 Fine-tuning 방식이다. 이 글에서는 Qwen3-4B-Instruct-2507에 rank 16 어댑터를 붙여 4090에서 수 분 안에 반복 업무 데이터를 학습했다.
- 교사-학생 증류(Teacher–Student Distillation)
- — 큰 교사 모델의 출력을 정답처럼 사용해 작은 학생 모델이 동일한 입력-출력 행동을 재현하도록 학습하는 방식이다. 이 글의 평가는 4B 학생이 Qwen2.5-72B-Instruct의 출력을 얼마나 일치시키는지 측정했으며, 교사의 불일치도 학생 성능 상한을 낮췄다.
- 스키마 null 규칙(Schema Null Convention)
- — 구조화된 JSON 추출에서 입력에 값이 없을 때 null을 넣을지, 다른 필드에서 값을 추론할지 정하는 규칙이다. 이 글에서는 Zero-shot 모델이 subtotal·currency·quantity를 임의로 채웠지만, Fine-tuning 뒤에는 값이 없을 때 답하지 않는 행동이 크게 늘었다.
- 혼동 행렬(Confusion Matrix)
- — 분류기의 실제 클래스와 예측 클래스를 교차 집계해 어떤 범주끼리 혼동되는지 나타내는 표다. 이 글에서는 complaint가 다른 범주와 겹치면서 7건의 오답 중 5건에 관여했고, 단순 정확도만으로는 드러나지 않는 taxonomy 문제를 드러냈다.
- 필드 단위 일치율(Field-level Agreement)
- — 중첩된 JSON을 평탄화한 뒤 각 경로의 값이 교사 출력과 일치하는 비율이다. 이 글에서는 invoice의 필드 일치율이 82.9%에서 93.5%로 올랐지만, 모든 필드가 맞은 행의 비율은 1.2%에서 62.5%로 더 크게 변했다.
언급된 도구
QLoRA 어댑터 학습에 사용하는 라이브러리
Fine-tuning 실행에 사용하는 라이브러리
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.