KJH / README.md
coderecode95's picture
Update README.md
ec0e4c0 verified
|
Raw
History Blame Contribute Delete
8.74 kB
---
language: ko
license: apache-2.0
library_name: transformers
pipeline_tag: text-generation
tags:
- korean
- rag
- small-language-model
- scratch-pretrained
---
# kjh-model
**Scratch pretrained. Llama-style architecture. No Meta weights used.**
๊น€์žฌํ˜„์ด ๊ฐœ์ธ์ ์œผ๋กœ ์—ฐ๊ตฌยทํ•™์Šต ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•œ ๋กœ์ปฌ ํ•œ๊ตญ์–ด ์–ธ์–ด๋ชจ๋ธ์ด๋‹ค.
RAG(๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ) ํ™˜๊ฒฝ์—์„œ, ์ฐพ์•„์˜จ ์ž๋ฃŒ๋ฅผ ๊ทผ๊ฑฐ๋กœ ๋‹ตํ•˜๋„๋ก ๋งŒ๋“ค์–ด์กŒ๋‹ค.
---
## 1. ์ด ๋ชจ๋ธ์˜ ์ถœ์ฒ˜ โ€” ์™œ ๋žœ๋ค ์ดˆ๊ธฐํ™”๋ถ€ํ„ฐ ํ•™์Šตํ–ˆ๋‚˜
์ด ๋ชจ๋ธ์˜ ๊ฐ€์ค‘์น˜๋Š” **๋žœ๋ค ์ดˆ๊ธฐํ™”์—์„œ ์ง์ ‘ ์‚ฌ์ „ํ•™์Šต(scratch pretrained)** ํ•œ ๊ฒƒ์ด๋‹ค.
Meta ์˜ Llama ์ฒดํฌํฌ์ธํŠธ๋ฅผ ๋‚ด๋ ค๋ฐ›์•„ ํŒŒ์ธํŠœ๋‹ํ•˜๊ฑฐ๋‚˜ ์ด์–ด ํ•™์Šตํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๊ณ ,
์–ด๋–ค ํ˜•ํƒœ๋กœ๋„ Llama ๊ฐ€์ค‘์น˜๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
### `architectures` / `model_type` ์ด `"llama"` ์ธ ์ด์œ 
`config.json` ์˜
```json
"architectures": ["LlamaForCausalLM"],
"model_type": "llama"
```
๋Š” **์ถœ์ฒ˜ ํ‘œ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ตฌ์กฐ ํ‘œ๊ธฐ**๋‹ค. `transformers` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ด ๊ฐ€์ค‘์น˜ ํ…์„œ๋ฅผ
์–ด๋–ค forward ์ฝ”๋“œ๋กœ ๋Œ๋ฆด์ง€ ๊ณ ๋ฅด๋Š” ๋กœ๋” ์ง€์‹œ์ž์ผ ๋ฟ, "์ด ๋ชจ๋ธ์ด Meta ์—์„œ ์™”๋‹ค"๋Š”
๋œป์ด ์•„๋‹ˆ๋‹ค.
Pre-norm Transformer + RMSNorm + SwiGLU + RoPE + GQA ๋ผ๋Š” ๊ณต๊ฐœ๋œ(๋ˆ„๊ตฌ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๋Š”)
์„ค๊ณ„ ์กฐํ•ฉ์„ ์“ฐ๋ฉด, `transformers` ์•ˆ์—์„œ์˜ ๊ตฌํ˜„ ์ด๋ฆ„์ด `llama` ๊ฐ€ ๋œ๋‹ค. ์ด ์กฐํ•ฉ ์ž์ฒด๋Š”
Meta ์˜ ์ „์œ ๋ฌผ์ด ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๋…ผ๋ฌธ์—์„œ ์กฐํ•ฉํ•ด ์“ฐ๋Š” ํ‘œ์ค€ ๊ตฌ์„ฑ์ด๋‹ค. ๊ทธ๋ž˜์„œ TinyLlama,
OpenLLaMA, SmolLM ์ฒ˜๋Ÿผ ์™„์ „ํžˆ ์ž์ฒด์ ์œผ๋กœ ์‚ฌ์ „ํ•™์Šตํ•œ ๋ชจ๋ธ๋“ค๋„ ๊ฐ™์€ ์ด์œ ๋กœ
`LlamaForCausalLM` ์„ ๊ทธ๋Œ€๋กœ ์“ด๋‹ค โ€” ์ด ํ”„๋กœ์ ํŠธ๋งŒ์˜ ์˜ˆ์™ธ์ ์ธ ํ‘œ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋‹ค.
์ด ํ‘œ๊ธฐ๋ฅผ ์ปค์Šคํ…€ ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊พธ๋ ค๋ฉด `auto_map` + `modeling_*.py` ๋ฅผ ์ง์ ‘
์ž‘์„ฑํ•ด ๋„ฃ๊ณ  `trust_remote_code=True` ๋กœ ๋ถˆ๋Ÿฌ์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿฌ๋ฉด vLLM ยท llama.cpp ยท
GGUF ๋ณ€ํ™˜ ๊ฐ™์€ ์™ธ๋ถ€ ๋„๊ตฌ์™€์˜ ํ˜ธํ™˜์ด ๋Œ€๋ถ€๋ถ„ ๋Š๊ธด๋‹ค. ๊ทธ๋ž˜์„œ **์˜๋„์ ์œผ๋กœ ํ‘œ์ค€ ํ‘œ๊ธฐ๋ฅผ
์œ ์ง€**ํ–ˆ๋‹ค. (`architectures`, `model_type` ์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค.)
---
## 2. ์‚ฌ์–‘
| ํ•ญ๋ชฉ | ๊ฐ’ |
| --- | --- |
| ์ด ํŒŒ๋ผ๋ฏธํ„ฐ | ์•ฝ 172M (๋ณธ์ฒด 107M + ์ž„๋ฒ ๋”ฉ/์ถœ๋ ฅ์ธต 66M) |
| ๋ ˆ์ด์–ด | 12 |
| hidden / intermediate | 1024 / 2048 |
| attention head | 16 (KV head 4, GQA) |
| head_dim | 64 |
| ์ปจํ…์ŠคํŠธ ๊ธธ์ด | 4096 |
| vocab | 32,001 (์ž์ฒด ํ† ํฌ๋‚˜์ด์ € + ํŠน์ˆ˜ํ† ํฐ 1) |
| dtype | float16 |
| ํ•™์Šต ๋ฐฉ์‹ | ๋žœ๋ค ์ดˆ๊ธฐํ™” โ†’ scratch pretraining โ†’ RAG ํ˜•์‹ SFT |
ํฌ๊ธฐ๋ถ€ํ„ฐ๊ฐ€ Meta Llama ๊ณ„์—ด(์ตœ์†Œ 1B)์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ตฌ์„ฑ์ด๋‹ค. ์ฐธ๊ณ ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ
`0.1B` ๊ธ‰์œผ๋กœ ์ค„์—ฌ ๋ถ€๋ฅด๋Š” ๊ฒฝ์šฐ, ์ž„๋ฒ ๋”ฉ/์ถœ๋ ฅ์ธต์„ ์ œ์™ธํ•œ ๋ณธ์ฒด(107M) ๊ธฐ์ค€์ด๋‹ค โ€” ์ •ํ™•ํ•œ
์ด๋Ÿ‰์€ 172M ์ด๋‹ค.
---
## 3. ์“ฐ๋Š” ๋ฒ• โ€” ๋ฐ˜๋“œ์‹œ `[์ž๋ฃŒ] / [์งˆ๋ฌธ]` ํ˜•์‹์œผ๋กœ ๋ฌผ์„ ๊ฒƒ
์ด ๋ชจ๋ธ์€ ๊ทผ๊ฑฐ ๋ฌธ์„œ์™€ ์งˆ๋ฌธ์„ ์•„๋ž˜ ํ˜•์‹์œผ๋กœ ๊ฐ์‹ธ ์ฃผ๋Š” ๊ฒƒ์„ ์ „์ œ๋กœ SFT ๋˜์—ˆ๋‹ค.
**์ด ํ˜•์‹์„ ์ง€ํ‚ค์ง€ ์•Š์œผ๋ฉด ์•„๋Š” ๊ฒƒ๋„ ์ง€์–ด๋‚ด๋Š” ๋นˆ๋„๊ฐ€ ํฌ๊ฒŒ ๋Š˜์–ด๋‚œ๋‹ค.**
```
[์ž๋ฃŒ]
(๊ฒ€์ƒ‰ํ•ด ์™”๊ฑฐ๋‚˜ ์†์œผ๋กœ ๋„ฃ์€ ๊ทผ๊ฑฐ ๋ฌธ์žฅ๋“ค)
[์งˆ๋ฌธ] (์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ)
```
### Transformers ๋กœ ์ง์ ‘ ๋ถˆ๋Ÿฌ ์“ฐ๊ธฐ
```python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
token = "hf_xxxxxxxxxxxx" # ๋ณธ์ธ ํ† ํฐ
MODEL = "coderecode95/KJH" # ์‹ค์ œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฒฝ๋กœ๋กœ ๋ฐ”๊ฟ€ ๊ฒƒ
tok = AutoTokenizer.from_pretrained(MODEL, token=token)
model = AutoModelForCausalLM.from_pretrained(MODEL, token=token, dtype=torch.float16).to("cuda").eval()
# context = "" ์ฐธ๊ณ ์ž๋ฃŒ๋ฅผ ๋„ฃ์„ ๊ฒฝ์šฐ ์ž๋ฃŒ๋ฅผ ๊ธฐ๋ฐ˜ํ•˜์—ฌ ๋‹ต๋ณ€ํ•ฉ๋‹ˆ๋‹ค.
question = "๊ฑด๊ฐ•์„ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?"
# prompt = f"[์ž๋ฃŒ]\n{context}\n\n[์งˆ๋ฌธ] {question}"
prompt = f"{question}"
messages = [{"role": "user", "content": prompt}]
inputs = tok.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="pt",
return_dict=True, # ๋ช…์‹œ์ ์œผ๋กœ dict(BatchEncoding) ๋ฐ˜ํ™˜ํ•˜๋„๋ก
).to("cuda")
output = model.generate(
**inputs,
max_new_tokens=200,
do_sample=True,
temperature=0.55,
top_p=0.85,
repetition_penalty=1.15,
no_repeat_ngram_size=4,
pad_token_id=tok.pad_token_id or tok.eos_token_id,
)
print(tok.decode(output[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))
```
์œ„ ๋””์ฝ”๋”ฉ ํŒŒ๋ผ๋ฏธํ„ฐ(`temperature=0.55`, `repetition_penalty=1.15`,
`no_repeat_ngram_size=4`)๋Š” `generation_config.json` ์—๋„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋“ค์–ด ์žˆ์œผ๋ฏ€๋กœ,
๋ณ„๋„๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  `model.generate(input_ids, attention_mask=...)` ๋งŒ ํ˜ธ์ถœํ•ด๋„
๊ฐ™์€ ๊ฐ’์ด ์ ์šฉ๋œ๋‹ค.
### ๊ทผ๊ฑฐ ์—†์ด ๋ฌผ์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜
`[์ž๋ฃŒ]` ๋ธ”๋ก ์—†์ด ์งˆ๋ฌธ๋งŒ ๋˜์ง€๋ฉด(`"[์งˆ๋ฌธ] ์„ธ์ข…๋Œ€์™•์€ ๋ˆ„๊ตฌ์•ผ?"` ๋˜๋Š” ๊ทธ๋ƒฅ
ํ‰๋ฌธ ์งˆ๋ฌธ) ๋ชจ๋ธ์ด ๊ฐ–๊ณ  ์žˆ๋Š” ์–•์€ ์ง€์‹์œผ๋กœ ๋‹ต์„ ์‹œ๋„ํ•˜๋ฉฐ, ์ด ๊ฒฝ์šฐ ์‚ฌ์‹ค ๊ด€๊ณ„๋ฅผ ์ง€์–ด๋‚ผ
ํ™•๋ฅ ์ด ๋šœ๋ ท์ด ์˜ฌ๋ผ๊ฐ„๋‹ค. ์ •ํ™•ํ•œ ๋‹ต์ด ํ•„์š”ํ•œ ์งˆ๋ฌธ์€ ๋ฐ˜๋“œ์‹œ ๊ทผ๊ฑฐ๋ฅผ ํ•จ๊ป˜ ์ค€๋‹ค.
### ์ฑ„ํŒ… ํ…œํ”Œ๋ฆฟ
```
<|im_start|>{role}
{content}<|endoftext|>
<|im_start|>assistant
```
ChatML ๊ณผ ์œ ์‚ฌํ•œ ํ˜•์‹์ด๋ฉฐ, `tokenizer_config.json` ์— `chat_template.jinja` ๋กœ
๋“ฑ๋ก๋˜์–ด ์žˆ์–ด `apply_chat_template()` ์„ ๊ทธ๋Œ€๋กœ ์“ฐ๋ฉด ๋œ๋‹ค.
---
## 4. ๋ฌด์—‡์„ ์ž˜ํ•˜๊ณ , ๋ฌด์—‡์„ ๋ชปํ•˜๋Š”๊ฐ€ (์‹ค์ธก ๊ธฐ์ค€)
์ž‘์€ ๋ชจ๋ธ์ด๋ผ๋Š” ์ ์„ ์ˆจ๊ธฐ์ง€ ์•Š๋Š”๋‹ค. ์ˆ˜๋ฐฑ ๊ฐœ์˜ ์งˆ๋ฌธ์„ ์ง์ ‘ ๋Œ๋ ค ํ™•์ธํ•œ ๊ฒฐ๊ณผ๋‹ค.
### ์ž˜ํ•˜๋Š” ๊ฒƒ
- **๊ทผ๊ฑฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ฒจ ์งง๊ฒŒ ๋‹ตํ•˜๊ธฐ** โ€” `[์ž๋ฃŒ]` ์— ์‹ค์ œ ๋‹ต์ด ์žˆ๋Š” ์‚ฌ์‹คํ˜• ์งˆ๋ฌธ
("OO ํ…Œ์ด๋ธ”์— ์–ด๋–ค ์ปฌ๋Ÿผ์ด ์žˆ์–ด?", "์„ค๋ฆฝ๋…„๋„๊ฐ€ ์–ธ์ œ์•ผ?")
- **์ •ํ•ด์ง„ ํ˜•์‹์˜ ๋ฐ˜๋ณต ์ž‘์—…** โ€” ์ธ์‚ฌ, ์ž๊ธฐ์†Œ๊ฐœ, ์ •ํ˜•ํ™”๋œ ๋ฌธ์„œ ์š”์•ฝ
- **ํ•œ๊ตญ์–ด ๋ฌธ์žฅ ์ƒ์„ฑ** โ€” ํ•™์Šต ๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ๊ตญ์–ด ์œ„์ฃผ๋ผ ์ด ๋ฒ”์œ„์—์„œ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๋‹ค
### ๋ชปํ•˜๋Š” ๊ฒƒ
- **์˜์–ด ์งˆ๋ฌธ** โ€” ํ•œ๊ตญ์–ด ์ „์šฉ ๋ฐ์ดํ„ฐ๋กœ ํ•™์Šต๋˜์–ด ์˜์–ด๋กœ ๋ฌผ์œผ๋ฉด ๋‹ต์ด ๋ฌด๋„ˆ์ง„๋‹ค
(๋ฌธ๋ฒ•์ด ๊นจ์ง€๊ฑฐ๋‚˜ ๊ด€๋ จ ์—†๋Š” ํ† ํฐ์„ ๋Š˜์–ด๋†“๋Š”๋‹ค).
- **๊ธด ์ ˆ์ฐจํ˜• ๋‹ต๋ณ€** โ€” ๋ ˆ์‹œํ”ผ, ์„ค์น˜ ์ˆœ์„œ์ฒ˜๋Ÿผ ๋‹จ๊ณ„ ์ˆœ์„œ๋ฅผ ์ง€์ผœ์•ผ ํ•˜๋Š” ๋‹ต๋ณ€์€
์ˆœ์„œ๊ฐ€ ๋’ค์„ž์ด๊ฑฐ๋‚˜ ์—†๋Š” ๋‹จ๊ณ„๋ฅผ ์ง€์–ด๋‚ธ๋‹ค.
- **๋ฉ€ํ‹ฐํ„ด ๋งฅ๋ฝ ์œ ์ง€** โ€” ๋ช‡ ํ„ด๋งŒ ์ง€๋‚˜๋„ ์ด์ „ ๋Œ€ํ™” ๋‚ด์šฉ์„ ์—‰๋šฑํ•˜๊ฒŒ ๋˜์งš์–ด
๋‹ต์ด ๋ฌด๋„ˆ์ง€๋Š” ๊ฒฝํ–ฅ์ด ๋šœ๋ ทํ•˜๋‹ค. ๋งค ์งˆ๋ฌธ์— ํ•„์š”ํ•œ ์ •๋ณด(์ฃผ์–ด ๋“ฑ)๋ฅผ ๋‹ค์‹œ ๋„ฃ๋Š”
๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.
- **๊ณ ์œ ๋ช…์‚ฌยท์ˆซ์ž๋ฅผ ์ •ํ™•ํžˆ ๊ทธ๋Œ€๋กœ ๋ฒ ๋ผ๊ธฐ** โ€” ๊ทผ๊ฑฐ์— ์žˆ๋Š” ์ด๋ฆ„์ด๋‚˜ ์ˆซ์ž๋ฅผ
๋น„์Šทํ•˜์ง€๋งŒ ํ‹€๋ฆฐ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ” ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค (์˜ˆ: ํšŒ์‚ฌ๋ช…์˜ ์Œ์ ˆ์ด ํ•˜๋‚˜ ๋น ์ง,
์—ฐ๋„๊ฐ€ ํ•œ๋‘ ์ž๋ฆฌ ๋ฐ”๋€œ). **๋ฒ•์ ยท์žฌ๋ฌด์ ์œผ๋กœ ์ •ํ™•ํ•ด์•ผ ํ•˜๋Š” ์ˆซ์žยท๊ณ ์œ ๋ช…์‚ฌ๋Š”
๋ชจ๋ธ ์ถœ๋ ฅ์„ ๊ทธ๋Œ€๋กœ ์‹ ๋ขฐํ•˜์ง€ ๋ง๊ณ  ์›๋ฌธ ๋Œ€์กฐ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.**
- **SQLยท์ฝ”๋“œ ์ƒ์„ฑ** โ€” ํ•™์Šต ๋ฒ”์œ„ ๋ฐ–์ด๋ผ ๋ฌธ๋ฒ•์ด ๊นจ์ง„ ์ฝ”๋“œ๋ฅผ ๋‚ธ๋‹ค. (์ฐธ๊ณ : ์ด ๋ชจ๋ธ์„
์‹ค์ œ๋กœ ์„œ๋น„์Šค์— ์–น์„ ๋•Œ๋Š” SQL ์ƒ์„ฑ์„ ๋ชจ๋ธ์— ๋งก๊ธฐ์ง€ ์•Š๊ณ , ์Šคํ‚ค๋งˆ ์ •๋ณด๋ฅผ ์ฝ”๋“œ๋กœ
ํŒŒ์‹ฑํ•ด ๊ทœ์น™ ๊ธฐ๋ฐ˜์œผ๋กœ ์กฐ๋ฆฝํ•˜๋Š” ๋ฐฉ์‹์„ ํ•จ๊ป˜ ์ผ๋‹ค.)
### ์š”์•ฝ
์ด ๋ชจ๋ธ ๋‹จ๋…์œผ๋กœ๋Š” "๋ฌด์—‡์ด๋“  ์ž˜ ๋‹ตํ•˜๋Š” ์–ด์‹œ์Šคํ„ดํŠธ"๊ฐ€ ์•„๋‹ˆ๋‹ค. **๊ทผ๊ฑฐ๋ฅผ ๋ถ™์—ฌ ์ข์€
์งˆ๋ฌธ์— ์งง๊ฒŒ ๋‹ตํ•˜๊ฒŒ ํ•˜๋Š” ์šฉ๋„**๋กœ ์„ค๊ณ„๋˜์—ˆ๊ณ , ๊ทธ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํžˆ
๋–จ์–ด์ง„๋‹ค. ์ •ํ™•๋„๊ฐ€ ์ค‘์š”ํ•œ ๋ถ€๋ถ„(์ˆซ์ž ๊ณ„์‚ฐ, SQL, ์Šคํ‚ค๋งˆ ์กฐํšŒ ๋“ฑ)์€ ๋ชจ๋ธ์ด ์•„๋‹ˆ๋ผ
์ฃผ๋ณ€ ์ฝ”๋“œ๊ฐ€ ๋‹ด๋‹นํ•˜๊ณ , ๋ชจ๋ธ์€ "์ฐพ์•„์˜จ ๋ฌธ์žฅ์„ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ•œ๊ตญ์–ด๋กœ ํ’€์–ด ์„ค๋ช…ํ•˜๋Š”"
์—ญํ• ์— ์ง‘์ค‘์‹œํ‚ค๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.
---
## 5. ํ•™์Šต ๊ฐœ์š”
- **1๋‹จ๊ณ„ โ€” ์‚ฌ์ „ํ•™์Šต(pretraining)**: ๋žœ๋ค ์ดˆ๊ธฐํ™” ๊ฐ€์ค‘์น˜์—์„œ ์‹œ์ž‘ํ•ด ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ๋กœ
์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šต.
- **2๋‹จ๊ณ„ โ€” RAG ํ˜•์‹ SFT**: `[์ž๋ฃŒ]\n(๊ทผ๊ฑฐ)\n\n[์งˆ๋ฌธ] (์งˆ๋ฌธ)` ํ˜•์‹์˜ ๋Œ€ํ™” ๋ฐ์ดํ„ฐ๋กœ
์ง€๋„ ๋ฏธ์„ธ์กฐ์ •. ๊ทผ๊ฑฐ ์—†์ด ๋ฌป๋Š” ์ผ๋ฐ˜ ๋Œ€ํ™”ยท์ธ์‚ฌยท์ž๊ธฐ์†Œ๊ฐœ๋„ ์ผ๋ถ€ ํฌํ•จ.
## 6. ๋ผ์ด์„ ์Šค
Apache License 2.0. ์ƒ์—…์  ์ด์šฉ์„ ํฌํ•จํ•ด ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉยท์ˆ˜์ •ยท์žฌ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
์›์ €์ž‘์ž ํ‘œ์‹œ๋ฅผ ๋‚จ๊ฒจ์•ผ ํ•œ๋‹ค. ์ž์„ธํ•œ ์กฐ๊ฑด์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ `LICENSE` ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•  ๊ฒƒ.
## 7. ์ธ์šฉ
```
@misc{kjh-model,
title = {kjh-model: A Scratch-Pretrained Korean Small Language Model for RAG},
author = {Kim, Jaehyeon},
year = {2026}
}
```
## 8. ์‹ค์ œ ์‚ฌ์šฉ ์˜ˆ์‹œ
์ด ๋ชจ๋ธ์„ RAG ํŒŒ์ดํ”„๋ผ์ธ์— ์ ์šฉํ•ด ์„ฑ๋Šฅ์„ ํ™•์ธํ•œ ๋ฐ๋ชจ ์˜์ƒ์ž…๋‹ˆ๋‹ค.
- [A์—์„œ Z๊นŒ์ง€ ์ง์ ‘ ๋งŒ๋“  ์ง€์‹œ๊ธฐ๋ฐ˜ ๋ชจ๋ธ โ€” RAG ์ ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ํ™•์ธํ•˜๊ธฐ](https://www.youtube.com/watch?v=PE42VEW-nZo)