Qwen 3:0.6B 모델을 질문 분류를 위해 파인튜닝하기
작은 로컬 LLM을 파인튜닝하면 성능이 낮은 일반 모델을 매우 정확한 특화 분류기로 바꿀 수 있습니다. 최근 실험에서 Qwen 3:0.6B 모델을 메타데이터 인식 RAG(검색 강화 생성) 시스템을 위한 가정 관련 질문 분류에 파인튜닝하여 정확도를 기본 10%에서 91% 이상으로 끌어올렸습니다.
메타데이터 인식 RAG를 활용한 향상된 검색
질문을 벡터 데이터베이스에 전달하기 전에 분류하면 시스템이 벡터 랭킹을 위한 검색 범위를 좁힐 수 있습니다. 예를 들어 "When did we replace our pool pump?" 같은 질문을 특정 카테고리(예: "pool")에 매핑하면 시스템은 해당 카테고리와 일치하는 인덱스 항목만 필터링하여 잡음을 줄이고 검색된 컨텍스트의 정밀도를 향상시킵니다.
기본 성능: Zero-Shot 프롬프팅의 실패
Qwen 3:0.6B처럼 작은 모델에 대해 zero-shot 프롬프팅만으로는 신뢰할 수 있는 분류를 수행하기에 부족합니다. 131개의 통합 테스트를 사용한 기본 테스트에서 모델은 겨우 9.92%의 정확도만을 기록했습니다.
- Label Overuse: 모델이 종종 "electric"이나 "appliances"와 같은 광범위한 라벨을 기본값으로 사용하고, "pool"이나 "hvac"와 같은 구체적인 카테고리를 무시했습니다.
- Hallucinations: 모델이 제공된 목록에 없는 카테고리를 만들어냈습니다(예: 유효한 카테고리 대신 "apartments"를 반환).
파인튜닝 전략 및 결과
성능 향상을 위해 모델을 Unsloth 프레임워크와 QLoRA를 사용해 파인튜닝했습니다. 학습 데이터셋은 약 850개의 항목으로 구성되었으며, 훈련/평가/테스트 세트로 70/15/15 비율로 나누었습니다.
첫 번째 시도: 직접 카테고리 매핑
첫 번째 파인튜닝 시도는 모델이 질문을 직접 카테고리 이름에 매핑하도록 학습하는 데 초점을 맞췄습니다. 정확도가 79.39%로 상승했지만, 두 가지 주요 문제가 남았습니다:
- Syntactic Inconsistency: 모델이 종종 올바른 카테고리의 일부만 출력했습니다(예: "hvac" 대신 "ac" 또는 "air").
- Semantic Overlap: 모델이 의미가 비슷한 카테고리, 예를 들어 "fountain", "water heater", "pool" 등을 구분하는 데 어려움을 겪었습니다.
두 번째 시도: 불투명 ID 매핑
구문 오류를 해결하고 의미 혼동을 줄이기 위해 프롬프트를 수정하여 카테고리를 두 글자 불투명 ID(예: appliances는 "AA", hvac는 "KK")에 매핑하도록 했습니다. 이렇게 하면 출력 토큰 자체에서 의미가 사라져 모델이 엄격한 매핑을 학습하도록 강제됩니다.
이 변경으로 성능이 크게 향상되어 91.6% 정확도에 도달했습니다. 남은 오류는 주로 "watery" 카테고리에서 집중되었으며, 모델이 여전히 가끔 "water heater"와 "pool"을 혼동했습니다.
기술적 대안 및 커뮤니티 인사이트
실험을 통해 파인튜닝된 sLLM의 유용성을 성공적으로 입증했지만, 기술 토론에서는 텍스트 분류를 위한 여러 대안 접근법이 강조됩니다.
전통적인 머신러닝
일부 실무자는 폐쇄형 분류의 경우 전통적인 머신러닝이 종종 더 효율적이라고 제안합니다.
"주제 분류와 같은 사소한 문제에 대해 파인튜닝까지 할 생각이라면, 2-gram을 사용한 SGDClassifier와 Scikit Learn이 아마도 비슷한 성능을 내면서 학습된 분류기의 크기가 1MB 이하가 될 것이라고 생각합니다."
인코더 기반 모델
다른 사람들은 디코더 전용 LLM보다 BERT 기반 인코더 모델이 순수 분류 작업에 더 적합하다고 주장합니다.
- ModernBERT: 분류 헤드를 갖춘 BERT 기반 모델을 사용하는 것이 이 특정 사용 사례에서 더 빠르고 성능이 좋습니다.
- Embedding-Based Classification: 임베딩 모델(예: Stella)을 사용해 쿼리와 사전 임베딩된 카테고리 라벨 간 코사인 거리를 기반으로 kNN을 수행하는 "lazy learner" 접근법은 구현이 빠른 베이스라인이 되는 경우가 많습니다.
고급 튜닝 기법
소형 모델을 더욱 정교하게 다듬고자 하는 사람들을 위해 커뮤니티는 다음을 탐색할 것을 제안했습니다:
- Zero-shot encoders (예: GliNER).
- GRPO training 또는 GEPA prompt tuning.
- Synthetic Dataset Generation: 여러 카테고리가 유효할 수 있는 "hard examples"를 생성하기 위해 대형 LLM을 사용하고, 이후 DPO(Direct Preference Optimization) 튜닝을 수행합니다.