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)λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. λΆ„μˆ˜μ˜ λ§μ…ˆμ΄λΌλŠ” 주제의 κ°œλ…μ  이웃이 κ°€μ€‘μΉ˜μ— μΈμ½”λ”©λ˜μ—ˆλ‹€λŠ” μ‹ ν˜Έμž…λ‹ˆλ‹€.

μΆ”κ°€ λŒ€μ‘° (μ „μ²΄λŠ” ν•™μŠ΅ λ…ΈνŠΈλΆ μ°Έμ‘°):

질문 Base FT
μ΄ˆλ“± 3ν•™λ…„ λ‚˜λˆ—μ…ˆ κ°œλ… [3-4-10] 문제 ν•΄κ²°, λΆ„λ°°, λ°˜λ³΅β€¦ (에코+ν™˜κ° μ½”λ“œ) [3수01-05] λ‚˜λˆ—μ…ˆμ˜ 의미, λ‚˜λˆ„κΈ°μ™€ λ‚˜λ¨Έμ§€β€¦
섀득 μ „λž΅ λΉ„νŒμ  뢄석 [21C-1-10] 섀득, μ „λž΅, λΉ„νŒμ  사고… [9κ΅­02-06] 섀득 μ „λž΅ λΉ„νŒ, μ£Όμž₯κ³Ό κ·Όκ±° 뢄석…

λ―Έν•™μŠ΅ 쿼리 10κ°œμ— λŒ€ν•œ μ„±μ·¨κΈ°μ€€ μ½”λ“œ μ‹€μ‘΄μœ¨: 9/10.

μ™œ 4-bit μ–‘μžν™” λͺ¨λΈμΈκ°€

이 λŒ€μ‘° νš¨κ³ΌλŠ” 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쌍:

  • μ„±μ·¨κΈ°μ€€ 원문 + ν…œν”Œλ¦Ώ 쿼리 5μ’…: 1,325쌍
  • 성취기쀀별 LLM 증강 μžμ—°μ–΄ 쿼리 3개: 3,975쌍
  • 응닡 ν˜•μ‹: μ„±μ·¨κΈ°μ€€μ½”λ“œ | ν‚€μ›Œλ“œ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에 μžˆμŠ΅λ‹ˆλ‹€.

ν•œκ³„

  • μ •λŸ‰ 벀치마크 μ—†μŒ. μœ„ μ¦κ±°λŠ” μ†Œμˆ˜ 쿼리에 λŒ€ν•œ μ •μ„± λŒ€μ‘°μ΄λ©°, 전체 μ„±μ·¨κΈ°μ€€ 컀버리지에 λŒ€ν•œ 체계적 ν‰κ°€λŠ” ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
  • μ½”λ“œ ν™˜κ° κ°€λŠ₯. μ‹€μ‘΄μœ¨ 9/10이 보여주듯 μ‘΄μž¬ν•˜μ§€ μ•Šκ±°λ‚˜ λΆ€μ •ν™•ν•œ μ„±μ·¨κΈ°μ€€ μ½”λ“œλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ„œλΉ„μŠ€λΌλ©΄ λ°˜ν™˜ μ½”λ“œλ₯Ό μ„±μ·¨κΈ°μ€€ DB와 λŒ€μ‘° 검증해야 ν•©λ‹ˆλ‹€.
  • 쒁은 νƒœμŠ€ν¬. ν•œκ΅­ 2022 κ°œμ • κ΅μœ‘κ³Όμ • μ„±μ·¨κΈ°μ€€ 검색 μ „μš©μ΄λ©°, 일반 λŒ€ν™”Β·λ‹€λ₯Έ κ΅μœ‘κ³Όμ •μ—λŠ” μ ν•©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • ν‚€μ›Œλ“œ ν’ˆμ§ˆ 편차. 일뢀 ꡐ과(예: κΈ°μˆ Β·κ°€μ •)μ—μ„œλŠ” ν‚€μ›Œλ“œκ°€ λ°˜λ³΅μ Β·ν”Όμƒμ μœΌλ‘œ μƒμ„±λ˜λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ

License

Apache 2.0 (base model Qwen3 λΌμ΄μ„ μŠ€λ₯Ό 따름). ν•™μŠ΅ λ°μ΄ν„°μ˜ μ„±μ·¨κΈ°μ€€ 원문은 λŒ€ν•œλ―Όκ΅­ κ΅μœ‘λΆ€ κ³ μ‹œ κ³΅κ³΅μ €μž‘λ¬Όμž…λ‹ˆλ‹€.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support