Korean LLM Fine-tuning Project

이 ν”„λ‘œμ νŠΈλŠ” Llama 3.2 1B λͺ¨λΈμ„ ν•œκ΅­μ–΄ QA λ°μ΄ν„°λ‘œ νŒŒμΈνŠœλ‹ν•˜λŠ” μ˜ˆμ‹œμž…λ‹ˆλ‹€. LoRA(μ €λž­ν¬ μ–΄λŒ‘ν„°) 방법을 μ‚¬μš©ν•˜μ—¬ 효율적인 νŒŒμΈνŠœλ‹μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

🎯 λͺ©ν‘œ

  • Llama 3.2 1B λͺ¨λΈμ„ ν•œκ΅­μ–΄ λ°μ΄ν„°λ‘œ νŒŒμΈνŠœλ‹
  • LoRAλ₯Ό ν†΅ν•œ λ©”λͺ¨λ¦¬ 효율적인 ν•™μŠ΅
  • ν•œκ΅­μ–΄ μ§ˆμ˜μ‘λ‹΅ λŠ₯λ ₯ ν–₯상
  • 기술λ ₯ μž…μ¦μ„ μœ„ν•œ 데λͺ¨ ν”„λ‘œμ νŠΈ

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

korean-llm-finetune/
β”œβ”€β”€ README.md                 # ν”„λ‘œμ νŠΈ μ„€λͺ…
β”œβ”€β”€ requirements.txt          # ν•„μš”ν•œ νŒ¨ν‚€μ§€ λͺ©λ‘
β”œβ”€β”€ model_card.md            # λͺ¨λΈ μΉ΄λ“œ
β”œβ”€β”€ configs/
β”‚   └── lora_config.yaml     # LoRA μ„€μ •
β”œβ”€β”€ data/
β”‚   └── ko_samples.jsonl     # ν•œκ΅­μ–΄ μƒ˜ν”Œ 데이터
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ train_lora.py        # νŒŒμΈνŠœλ‹ 슀크립트
β”‚   β”œβ”€β”€ evaluate.py          # 평가 슀크립트
β”‚   └── preprocess.py        # μ „μ²˜λ¦¬ 슀크립트
β”œβ”€β”€ inference_demo.ipynb     # μΆ”λ‘  데λͺ¨ λ…ΈνŠΈλΆ
└── outputs/                 # ν•™μŠ΅ κ²°κ³Ό μ €μž₯

πŸš€ μ‹œμž‘ν•˜κΈ°

1. ν™˜κ²½ μ„€μ •

# ν•„μš”ν•œ νŒ¨ν‚€μ§€ μ„€μΉ˜
pip install -r requirements.txt

2. 데이터 μ€€λΉ„

data/ko_samples.jsonl νŒŒμΌμ— ν•œκ΅­μ–΄ QA 데이터λ₯Ό μ€€λΉ„ν•©λ‹ˆλ‹€:

{"instruction": "λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš”", "input": "ν•œκ΅­μ˜ AI 정책은?", "output": "μ •λΆ€λŠ” 2025λ…„λΆ€ν„° λ…μž AI νŒŒμš΄λ°μ΄μ…˜ λͺ¨λΈμ„ 개발 μ€‘μž…λ‹ˆλ‹€."}

3. λͺ¨λΈ λ‹€μš΄λ‘œλ“œ

Llama 3.2 1B λͺ¨λΈμ„ Hugging Faceμ—μ„œ λ‹€μš΄λ‘œλ“œν•©λ‹ˆλ‹€:

from transformers import AutoTokenizer, AutoModelForCausalLM

# ν† ν¬λ‚˜μ΄μ € λ‹€μš΄λ‘œλ“œ
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.2-1B")

# λͺ¨λΈ λ‹€μš΄λ‘œλ“œ (Meta λΌμ΄μ„ μŠ€ λ™μ˜ ν•„μš”)
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-1B")

4. νŒŒμΈνŠœλ‹ μ‹€ν–‰

cd scripts
python train_lora.py \
    --model_name_or_path meta-llama/Llama-3.2-1B \
    --data_path ../data/ko_samples.jsonl \
    --output_dir ../outputs \
    --num_train_epochs 3 \
    --per_device_train_batch_size 1 \
    --learning_rate 2e-4

5. λͺ¨λΈ 평가

python evaluate.py \
    --base-model meta-llama/Llama-3.2-1B \
    --adapter-path ../outputs/final_model \
    --test-data ../data/ko_samples.jsonl

6. μΆ”λ‘  데λͺ¨

Jupyter λ…ΈνŠΈλΆμ„ μ‹€ν–‰ν•˜μ—¬ λͺ¨λΈμ„ ν…ŒμŠ€νŠΈν•©λ‹ˆλ‹€:

jupyter notebook inference_demo.ipynb

πŸ”§ μ£Όμš” κΈ°λŠ₯

LoRA νŒŒμΈνŠœλ‹

  • μ €λž­ν¬ μ–΄λŒ‘ν„°λ₯Ό ν†΅ν•œ λ©”λͺ¨λ¦¬ νš¨μœ¨μ„±
  • LoRAλ₯Ό ν†΅ν•œ μ μ‘ν˜• ν•™μŠ΅
  • CPU/M1/M2 ν™˜κ²½μ—μ„œλ„ ν•™μŠ΅ κ°€λŠ₯

ν•œκ΅­μ–΄ μ΅œμ ν™”

  • ν•œκ΅­μ–΄ ν”„λ‘¬ν”„νŠΈ ν¬λ§·νŒ…
  • ν•œκ΅­μ–΄ QA 데이터셋
  • ν•œκ΅­μ–΄ νŠΉν™” ν† ν¬λ‚˜μ΄μ§•

평가 및 데λͺ¨

  • μžλ™ν™”λœ 평가 슀크립트
  • Jupyter λ…ΈνŠΈλΆ 데λͺ¨
  • κ²°κ³Ό μ‹œκ°ν™”

πŸ“Š μ„±λŠ₯ μ§€ν‘œ

  • λͺ¨λΈ 크기: 1.2B νŒŒλΌλ―Έν„°
  • ν•™μŠ΅ κ°€λŠ₯ν•œ νŒŒλΌλ―Έν„°: ~0.85M (LoRA)
  • λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰: CPU/M1/M2 ν™˜κ²½ κΈ°μ€€
  • μ»¨ν…μŠ€νŠΈ 길이: 4096 토큰

πŸ“Š μ΅œμ‹  평가 κ²°κ³Ό μš”μ•½ (2025-07-03 17:44:47)

  • λͺ¨λΈ: meta-llama/Llama-3.2-1B
  • μ–΄λŒ‘ν„°: outputs/final_model
  • ν…ŒμŠ€νŠΈ 데이터: data/ko_samples.jsonl
  • ν…ŒμŠ€νŠΈ μƒ˜ν”Œ 수: 10
  • 평가 쑰건: max_new_tokens=128, temperature=0.7
  • μ‹œμŠ€ν…œ: macOS-15.5-arm64, Python 3.10.11
# 질문 μž…λ ₯ μ˜ˆμƒ λ‹΅λ³€ 생성 λ‹΅λ³€(μš”μ•½)
1 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” ν•œκ΅­μ˜ AI 정책은? μ •λΆ€λŠ” 2025λ…„λΆ€ν„° λ…μž AI νŒŒμš΄λ°μ΄μ…˜ λͺ¨λΈ... ν•œκ΅­μ˜ AI 정책은 AI 기술의 λ°œμ „κ³Ό λ™μ‹œμ—...
2 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” λŒ€ν•œλ―Όκ΅­μ˜ μˆ˜λ„λŠ”? μ„œμšΈμž…λ‹ˆλ‹€. μ„œμšΈμ€ λŒ€ν•œλ―Όκ΅­μ˜ μˆ˜λ„μ΄μž... μ„œμšΈ, μ„œμšΈμ€ ν•œκ΅­μ—μ„œ κ°€μž₯ 인ꡬ가 λ§Žμ€ λ„μ‹œ...
3 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” 인곡지λŠ₯μ΄λž€ λ¬΄μ—‡μΈκ°€μš”? 인곡지λŠ₯(AI)은 μΈκ°„μ˜ ν•™μŠ΅λŠ₯λ ₯κ³Ό... 인곡지λŠ₯은 컴퓨터가 인간과 λΉ„μŠ·ν•œ νŠΉμ„±μ„...
4 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” ν•œκ΅­μ˜ λŒ€ν‘œμ μΈ μŒμ‹μ€? κΉ€μΉ˜, 뢈고기, λΉ„λΉ”λ°₯ λ“± ν•œκ΅­μ˜ λŒ€ν‘œμ μΈ μŒμ‹μ€ κΉ€μΉ˜μ΄λ‹€...
5 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” λ¨Έμ‹ λŸ¬λ‹κ³Ό λ”₯λŸ¬λ‹μ˜ 차이점은? λ¨Έμ‹ λŸ¬λ‹μ€ λ°μ΄ν„°λ‘œλΆ€ν„° νŒ¨ν„΄μ„... λ¨Έμ‹ λŸ¬λ‹κ³Ό λ”₯λŸ¬λ‹μ˜ 차이점은...
6 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” ν•œκ΅­μ˜ 4κ³„μ ˆμ€? λ΄„, 여름, 가을, 겨울 ν•œκ΅­μ€ 4κ³„μ ˆμ΄ μ•„λ‹ˆλΌ 4κ°€μ§€ μ‹œκΈ°μ—...
7 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” μžμ—°μ–΄μ²˜λ¦¬λž€ λ¬΄μ—‡μΈκ°€μš”? NLPλŠ” μΈκ°„μ˜ μ–Έμ–΄λ₯Ό 컴퓨터가... μžμ—°μ–΄μ²˜λ¦¬λž€ μΈκ°„μ˜ μ–Έμ–΄λ₯Ό μ»΄ν“¨ν„°μ—κ²Œ...
8 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” ν•œκ΅­μ˜ μ „ν†΅λ¬Έν™”λŠ”? ν•œλ³΅, ν•œκΈ€, νƒœκ·ΉκΈ° λ“± ν•œκ΅­μ˜ μ „ν†΅λ¬Έν™”λŠ” κ³ λ €μ‹œλŒ€λΆ€ν„°...
9 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” λΉ…λ°μ΄ν„°λž€ λ¬΄μ—‡μΈκ°€μš”? λΉ…λ°μ΄ν„°λŠ” 기쑴의 λ°μ΄ν„°λ² μ΄μŠ€... λΉ…λ°μ΄ν„°λŠ” λ§Žμ€ 데이터λ₯Ό μˆ˜μ§‘, 뢄석...
10 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” ν•œκ΅­μ˜ 경제 ν˜„ν™©μ€? ν•œκ΅­μ€ 세계 10μœ„κΆŒμ˜ κ²½μ œλŒ€κ΅­... ν•œκ΅­μ˜ 경제 ν˜„ν™©μ€ λ¬Όκ°€μƒμŠΉλ₯ μ΄ 10%...

πŸ“Š 였늘(2025-07-04) ν…ŒμŠ€νŠΈ κ²°κ³Ό μš”μ•½

  • λͺ¨λΈ: meta-llama/Llama-3.2-1B
  • μ–΄λŒ‘ν„°: outputs/final_model
  • ν…ŒμŠ€νŠΈ 데이터: data/ko_samples.jsonl (우주/천문 QA)
  • ν…ŒμŠ€νŠΈ μƒ˜ν”Œ 수: 10
  • 평가 쑰건: max_new_tokens=128, temperature=0.7
  • μ‹œμŠ€ν…œ: Windows-11-10.0.26100-SP0, Intel64 Family 6 Model 183 Stepping 1, Python 3.13.5
# 질문 μž…λ ₯ μ˜ˆμƒ λ‹΅λ³€ 생성 λ‹΅λ³€(μš”μ•½)
1 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” 우주 νƒμ‚¬μ˜ μ£Όμš” λͺ©μ μ€? 우주의 기원, 생λͺ…체 탐ꡬ, μžμ›Β·κΈ°μˆ  개발 우주 νƒμ‚¬μ˜ μ£Όμš” λͺ©μ μ€ νƒμ‚¬ν•˜λŠ” 것...
2 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” νƒœμ–‘κ³„μ˜ 쀑심은? νƒœμ–‘ νƒœμ–‘κ³„μ˜ 쀑심은 지ꡬ에 κ°€κΉŒμš΄ λΆ€λΆ„...
3 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” λΈ”λž™ν™€μ΄λž€ λ¬΄μ—‡μΈκ°€μš”? κ°•λ ₯ν•œ 쀑λ ₯, 빛도 λΉ μ Έλ‚˜μ˜¬ 수 μ—†μŒ λΈ”λž™ν™€μ€ κ±°λŒ€ν•œ κ»μ§ˆμ„ κ°€μ§€κ³  μžˆλ‹€...
4 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” νƒœμ–‘κ³„μ˜ μ£Όμš” 행성은? μˆ˜μ„±, κΈˆμ„±, 지ꡬ, ν™”μ„±, λͺ©μ„±, ν† μ„±, μ²œμ™•μ„±, ν•΄μ™•μ„± νƒœμ–‘, λͺ©μ„±, 지ꡬ, λ§ˆμš°λ‘œνƒ€μš°λ£¨μŠ€, ν† μš”ν† λ§ˆμŠ€...
5 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” 우주 망원경과 지상 λ§μ›κ²½μ˜ 차이점은? λŒ€κΈ° κ°„μ„­, 파μž₯ κ΄€μΈ‘, μœ μ§€λ³΄μˆ˜ 우주 망원경은 μ§€κ΅¬μ—μ„œ κ΄€μΈ‘ν•  수 μžˆλŠ” λ²”μœ„λ₯Ό 더 λ„“κ²Œ...
6 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” κ³„μ ˆμ  λ³€ν™”κ°€ μ—†λŠ” 행성은? μˆ˜μ„±, κΈˆμ„± κ³„μ ˆμ  λ³€ν™”κ°€ μ—†λŠ” 행성은 별이 λ³€ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—...
7 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” μš°μ£Όμ—μ„œ 데이터 뢄석은 μ–΄λ–»κ²Œ μ΄λ£¨μ–΄μ§€λ‚˜μš”? 망원경·탐사선 데이터, AI ν™œμš© μš°μ£Όμ—μ„œ 데이터 뢄석은 ν•΄λ³Έ μ‚¬λžŒλ“€κ³Όμ˜ λŒ€ν™”...
8 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” 우주 νƒμ‚¬μ˜ λŒ€ν‘œμ μΈ μ„±κ³ΌλŠ”? μ•„ν΄λ‘œ 달 μ°©λ₯™, ν™”μ„± λ‘œλ²„, ν—ˆλΈ”Β·μ œμž„μŠ€μ›Ή 망원경 우주 νƒμ‚¬μ˜ λŒ€ν‘œμ μΈ μ„±κ³ΌλŠ” κ±°λŒ€ν•œ 파편이 발견...
9 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” μš°μ£Όμ—μ„œ λΉ…λ°μ΄ν„°μ˜ 역할은? 천체 νŠΉμ„±, 우주 ꡬ쑰, μ•”ν‘λ¬Όμ§ˆ 연ꡬ λΉ…λ°μ΄ν„°λŠ” 데이터 뢄석, λ°μ΄ν„°λ² μ΄μŠ€, 데이터 μ›¨μ–΄ν•˜μš°μŠ€...
10 λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš” ꡭ제 우주 μ •κ±°μž₯의 역할은? κ³Όν•™ μ‹€ν—˜, 기술 개발, ꡭ제 ν˜‘λ ₯ 우주 μ •κ±°μž₯의 역할은 μ§€κ΅¬μ˜ λŒ€κΈ°μ™€ 같은 μ˜¨λ„, 기온, κ°•μˆ˜...

πŸ› οΈ 기술 μŠ€νƒ

  • Transformers: Hugging Face Transformers 라이브러리
  • PEFT: Parameter-Efficient Fine-Tuning
  • PyTorch: λ”₯λŸ¬λ‹ ν”„λ ˆμž„μ›Œν¬
  • Datasets: 데이터 처리

πŸ“ μ‚¬μš© μ˜ˆμ‹œ

from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel

# λͺ¨λΈ λ‘œλ“œ
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.2-1B")
base_model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-1B")
model = PeftModel.from_pretrained(base_model, "./outputs/final_model")

# μΆ”λ‘ 
prompt = "### 질문: λ‹€μŒ μ§ˆλ¬Έμ— λ‹΅ν•˜μ„Έμš”\nμž…λ ₯: ν•œκ΅­μ˜ μˆ˜λ„λŠ”?\n### λ‹΅λ³€:"
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=128)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)

🀝 κΈ°μ—¬ν•˜κΈ°

  1. 이 μ €μž₯μ†Œλ₯Ό ν¬ν¬ν•©λ‹ˆλ‹€
  2. μƒˆλ‘œμš΄ κΈ°λŠ₯ 브랜치λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€
  3. 변경사항을 μ»€λ°‹ν•©λ‹ˆλ‹€
  4. λΈŒλžœμΉ˜μ— ν‘Έμ‹œν•©λ‹ˆλ‹€
  5. Pull Requestλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€

πŸ“„ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ μŠ€ ν•˜μ— λ°°ν¬λ©λ‹ˆλ‹€. Llama 3.2 λͺ¨λΈ μ‚¬μš©μ„ μœ„ν•΄μ„œλŠ” Meta의 λΌμ΄μ„ μŠ€ λ™μ˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

πŸ™ κ°μ‚¬μ˜ 말

  • Meta AI의 Llama 3.2 λͺ¨λΈ
  • Hugging Face νŒ€μ˜ Transformers 라이브러리
  • Microsoft의 PEFT 라이브러리

πŸ“ž 문의

ν”„λ‘œμ νŠΈμ— λŒ€ν•œ λ¬Έμ˜μ‚¬ν•­μ΄ μžˆμœΌμ‹œλ©΄ 이슈λ₯Ό μƒμ„±ν•΄μ£Όμ„Έμš”.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for netgamer/korean-llm-finetune

Adapter
(508)
this model