CoolFace
Modelpublic

lovelymango/qwen3-4b-curriculum-keywords-lora

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes9downloads
Model Card

Qwen3-4B Curriculum Keywords LoRA

한국 2022 개정 교육과정 성취기준 검색 모델 — 교사의 자연어 수업 질문을 받아 관련 성취기준 코드 1개와 핵심 키워드 5개를 생성하는 LoRA 어댑터입니다.

English summary: A LoRA adapter (rank 16) on 4-bit quantized Qwen3-4B that maps Korean teachers' natural-language lesson questions to national curriculum achievement-standard codes with 5 key concepts. Built as evidence for the "Semantic Compass" hypothesis: fine-tuning encodes conceptual structure into weights (semantic memory), producing concepts absent from the input — unlike the base model, which echoes input words back.

나침반 가설 (The Semantic Compass Hypothesis)

RAG가 문서를 찾아 돌려주는 episodic memory라면, 파인튜닝은 개념 구조를 가중치에 인코딩하는 semantic memory라는 가설을 검증하기 위해 만든 모델입니다.

핵심 증거 — 동일한 4-bit 양자화 Qwen3-4B에 같은 질문을 던졌을 때:

Q5. "수학에서 분수의 덧셈을 재미있게 가르치는 방법이 있을까?"
Base[21020100] \흥미, 분수, 덧셈, 수학, 활동 — 질문 단어의 에코 (코드는 환각)
FT[6수01-04] \분수의 덧셈, 분모가 같은 분수, 분모가 다른 분수, 공통분모, 계산 과정의 정확성

파인튜닝 모델은 질문에 등장하지 않은 개념(공통분모, 분모가 같은/다른 분수)을 생성하고 실제 존재하는 성취기준 코드(6수01-04)를 반환합니다. 분수의 덧셈이라는 주제의 개념적 이웃이 가중치에 인코딩되었다는 신호입니다.

추가 대조 (전체는 학습 노트북 참조):

질문BaseFT
초등 3학년 나눗셈 개념[3-4-10] 문제 해결, 분배, 반복… (에코+환각 코드)[3수01-05] 나눗셈의 의미, 나누기와 나머지…
설득 전략 비판적 분석[21C-1-10] 설득, 전략, 비판적 사고…[9국02-06] 설득 전략 비판, 주장과 근거 분석…

미학습 쿼리 10개에 대한 성취기준 코드 실존율: 9/10.

왜 4-bit 양자화 모델인가

이 대조 효과는 4-bit(NF4) 양자화된 소형 모델에서 관찰한 것입니다. 양자화된 4B 베이스는 이 태스크에서 입력 에코와 코드 환각으로 거의 완전히 실패하기 때문에, 파인튜닝이 추가한 의미 구조가 극명하게 드러납니다. 더 크거나 비양자화된 모델에서는 베이스 성능 자체가 높아 같은 대비를 기대하기 어렵습니다. 재현하려면 반드시 아래처럼 4-bit로 로드하세요.

사용법

python
from unsloth import FastModel
from peft import PeftModel

model, tokenizer = FastModel.from_pretrained(
    model_name="unsloth/Qwen3-4B",
    max_seq_length=1024,
    load_in_4bit=True,   # 필수 — 이 어댑터는 4-bit 베이스 기준으로 학습·검증됨
)
model = PeftModel.from_pretrained(model, "lovelymango/qwen3-4b-curriculum-keywords-lora")
FastModel.for_inference(model)

SYSTEM_PROMPT = (
    "당신은 2022 개정 교육과정 성취기준 전문가입니다. "
    "교사의 수업 관련 질문을 받으면, 가장 관련 있는 성취기준 코드 하나와 "
    "핵심 키워드 5개를 아래 형식으로 제공합니다.\n"
    "형식: [성취기준코드] | 키워드1, 키워드2, 키워드3, 키워드4, 키워드5"
)

messages = [
    {"role": "system", "content": SYSTEM_PROMPT},
    {"role": "user", "content": "수학에서 분수의 덧셈을 재미있게 가르치는 방법이 있을까?"},
]
text = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True, enable_thinking=False
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, temperature=0.3, max_new_tokens=128, do_sample=True)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))

학습 데이터

2022 개정 교육과정 성취기준 1,325개 (교육부 고시 — 공공저작물) 기반 5,300쌍:

  • —성취기준 원문 + 템플릿 쿼리 5종: 1,325쌍
  • —성취기준별 LLM 증강 자연어 쿼리 3개: 3,975쌍
  • —응답 형식: 성취기준코드 | 키워드1~5 (키워드는 성취기준·해설에서 LLM으로 추출)

95/5 train/eval 분할 (학습 5,035개).

학습 설정

항목값
Baseunsloth/qwen3-4b-unsloth-bnb-4bit (4-bit NF4)
LoRAr=16, α=32, dropout=0, 전체 projection 레이어 (q/k/v/o/gate/up/down)
Epochs / Steps2 / 1,260
Batch4 × grad_accum 2 = 8
LR2e-5, cosine, warmup 10%
Optimizeradamw8bit, weightdecay 0.01
환경Colab Tesla T4 (16GB), 학습 147분, 피크 VRAM 4.4GB
라이브러리Unsloth + TRL SFTTrainer, PEFT 0.18.1

전체 학습 과정은 저장소의 qwen3_4b_curriculum_finetune_v2.ipynb에 있습니다.

한계

  • —정량 벤치마크 없음. 위 증거는 소수 쿼리에 대한 정성 대조이며, 전체 성취기준 커버리지에 대한 체계적 평가는 하지 않았습니다.
  • —코드 환각 가능. 실존율 9/10이 보여주듯 존재하지 않거나 부정확한 성취기준 코드를 생성할 수 있습니다. 실서비스라면 반환 코드를 성취기준 DB와 대조 검증해야 합니다.
  • —좁은 태스크. 한국 2022 개정 교육과정 성취기준 검색 전용이며, 일반 대화·다른 교육과정에는 적합하지 않습니다.
  • —키워드 품질 편차. 일부 교과(예: 기술·가정)에서는 키워드가 반복적·피상적으로 생성되는 경향이 있습니다.

프로젝트

  • —데모 앱: https://jhlim.dev/projects/semantic-compass

License

Apache 2.0 (base model Qwen3 라이선스를 따름). 학습 데이터의 성취기준 원문은 대한민국 교육부 고시 공공저작물입니다.