Downloads · 30 days
3
5% of all-time downloads
lovelymango/qwen3-4b-curriculum-keywords-lora
qwen3-4b-curriculum-keywords-lora is a text generation model from lovelymango. Use it when you need the model to write or continue text. It is set up for peft. The card lists the license as apache-2.0.
한국 2022 개정 교육과정 성취기준 검색 모델 — 교사의 자연어 수업 질문을 받아 관련 성취기준 코드 1개와 핵심 키워드 5개를 생성하는 LoRA 어댑터입니다.
Downloads · 30 days
3
5% of all-time downloads
All-time downloads
56
Public
Repo size
144 MB
Likes
0
Public
Click a slice to open those files.
.safetensors132 MB · 92%
From the Hugging Face model README
한국 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.
RAG가 문서를 찾아 돌려주는 episodic memory라면, 파인튜닝은 개념 구조를 가중치에 인코딩하는 semantic memory라는 가설을 검증하기 위해 만든 모델입니다.
핵심 증거 — 동일한 4-bit 양자화 Qwen3-4B에 같은 질문을 던졌을 때:
| Q5. "수학에서 분수의 덧셈을 재미있게 가르치는 방법이 있을까?" | |
|---|---|
| Base | [21020100] | 흥미, 분수, 덧셈, 수학, 활동 — 질문 단어의 에코 (코드는 환각) |
| FT | [6수01-04] | 분수의 덧셈, 분모가 같은 분수, 분모가 다른 분수, 공통분모, 계산 과정의 정확성 |
파인튜닝 모델은 질문에 등장하지 않은 개념(공통분모, 분모가 같은/다른 분수)을 생성하고 실제 존재하는 성취기준 코드(6수01-04)를 반환합니다. 분수의 덧셈이라는 주제의 개념적 이웃이 가중치에 인코딩되었다는 신호입니다.
추가 대조 (전체는 학습 노트북 참조):
| 질문 | Base | FT |
|---|---|---|
| 초등 3학년 나눗셈 개념 | [3-4-10] 문제 해결, 분배, 반복… (에코+환각 코드) | [3수01-05] 나눗셈의 의미, 나누기와 나머지… |
| 설득 전략 비판적 분석 | [21C-1-10] 설득, 전략, 비판적 사고… | [9국02-06] 설득 전략 비판, 주장과 근거 분석… |
미학습 쿼리 10개에 대한 성취기준 코드 실존율: 9/10.
이 대조 효과는 4-bit(NF4) 양자화된 소형 모델에서 관찰한 것입니다. 양자화된 4B 베이스는 이 태스크에서 입력 에코와 코드 환각으로 거의 완전히 실패하기 때문에, 파인튜닝이 추가한 의미 구조가 극명하게 드러납니다. 더 크거나 비양자화된 모델에서는 베이스 성능 자체가 높아 같은 대비를 기대하기 어렵습니다. 재현하려면 반드시 아래처럼 4-bit로 로드하세요.
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쌍:
성취기준코드 | 키워드1~5 (키워드는 성취기준·해설에서 LLM으로 추출)95/5 train/eval 분할 (학습 5,035개).
| 항목 | 값 |
|---|---|
| Base | unsloth/qwen3-4b-unsloth-bnb-4bit (4-bit NF4) |
| LoRA | r=16, α=32, dropout=0, 전체 projection 레이어 (q/k/v/o/gate/up/down) |
| Epochs / Steps | 2 / 1,260 |
| Batch | 4 × grad_accum 2 = 8 |
| LR | 2e-5, cosine, warmup 10% |
| Optimizer | adamw_8bit, weight_decay 0.01 |
| 환경 | Colab Tesla T4 (16GB), 학습 147분, 피크 VRAM 4.4GB |
| 라이브러리 | Unsloth + TRL SFTTrainer, PEFT 0.18.1 |
전체 학습 과정은 저장소의 qwen3_4b_curriculum_finetune_v2.ipynb에 있습니다.
Apache 2.0 (base model Qwen3 라이선스를 따름). 학습 데이터의 성취기준 원문은 대한민국 교육부 고시 공공저작물입니다.