KJH / README.md
coderecode95's picture
Update README.md
ec0e4c0 verified
|
Raw
History Blame Contribute Delete
8.74 kB
metadata
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 ์˜

"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 ๋กœ ์ง์ ‘ ๋ถˆ๋Ÿฌ ์“ฐ๊ธฐ

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 ํŒŒ์ดํ”„๋ผ์ธ์— ์ ์šฉํ•ด ์„ฑ๋Šฅ์„ ํ™•์ธํ•œ ๋ฐ๋ชจ ์˜์ƒ์ž…๋‹ˆ๋‹ค.