KAWK-1.5-50M Korean Base

ํ•œ๊ตญ์–ด์— ์ง‘์ค‘ํ•œ ์ž‘์€ ์–ธ์–ด๋ชจ๋ธ์„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ํ† ํฌ๋‚˜์ด์ €, ์‚ฌ์ „ํ•™์Šต, ํ‰๊ฐ€๊นŒ์ง€ ์ง์ ‘ ๋งŒ๋“ค๊ณ , ์ ์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์–ด๋А ์ •๋„์˜ ํ•œ๊ตญ์–ด ๋Šฅ๋ ฅ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœํ•œ 51.5M ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฒ ์ด์Šค ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.

๊ธฐ์กด ๋‹ค๊ตญ์–ด ๋ชจ๋ธ์„ ํ•œ๊ตญ์–ด๋กœ ๋ฏธ์„ธ์กฐ์ •ํ•œ ๋ชจ๋ธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ•œ๊ตญ์–ด ์ค‘์‹ฌ ๋ง๋ญ‰์น˜๋กœ SentencePiece ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์ƒˆ๋กœ ํ•™์Šตํ•˜๊ณ , Llama ๊ณ„์—ด ๋ชจ๋ธ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‚ฌ์ „ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค. Supra-50M ๊ณ„์—ด์€ ์ž‘์€ ๋ชจ๋ธ์˜ ๊ฐœ๋ฐœ ์ˆœ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜๋Š” ์ถœ๋ฐœ์ ์ด์—ˆ์œผ๋ฉฐ, ์–ดํœ˜ ํฌ๊ธฐ, ๋ ˆ์ด์–ด ์ˆ˜, ๋ฐ์ดํ„ฐ ๊ตฌ์„ฑ์€ ํ•œ๊ตญ์–ด์— ๋งž๊ฒŒ ๋‹ค์‹œ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋ธ์€ ๋ฒ ์ด์Šค next-token predictor์ž…๋‹ˆ๋‹ค. ์งˆ๋ฌธ์— ๋‹ตํ•˜๋„๋ก ํ•™์Šต๋œ ์ฑ—๋ด‡์ด ์•„๋‹ˆ๋ฉฐ, ์ž…๋ ฅ ๋’ค์— ์ด์–ด์งˆ ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์™œ 50M๋ถ€ํ„ฐ ๋งŒ๋“ค์—ˆ๋‚˜

50M์€ ์ตœ๊ณ  ์„ฑ๋Šฅ์˜ ์ฑ—๋ด‡์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํฌ๊ธฐ๋ผ๊ธฐ๋ณด๋‹ค, ๊ฐœ์ธ์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” GPU์—์„œ ๋‹ค์Œ ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ์—”์ง€๋‹ˆ์–ด๋ง ํ”„๋กœํ† ํƒ€์ž…์ž…๋‹ˆ๋‹ค.

  • ํ•œ๊ตญ์–ด ์ „์šฉ ํ† ํฌ๋‚˜์ด์ € ์„ค๊ณ„
  • ์›น ๋ง๋ญ‰์น˜ ์ •์ œยท์ค‘๋ณต ์ œ๊ฑฐยทํŒจํ‚น
  • scratch pretraining๊ณผ checkpoint ์žฌ๊ฐœ
  • ์˜ฌ๋ฐ”๋ฅธ causal LM objective ๊ฒ€์ฆ
  • validation loss์™€ UTF-8 byte-normalized ํ‰๊ฐ€
  • Hugging Face ๊ณต๊ฐœ์™€ ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ํ•™์Šต ์ด๋ ฅ ๋ณด์กด

์ด 50M ๊ฒฝํ—˜๊ณผ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ดํ›„ KAWK-500M์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ ๊ตฌ์กฐ

ํ•ญ๋ชฉ ๊ฐ’
์•„ํ‚คํ…์ฒ˜ LlamaForCausalLM, decoder-only
ํŒŒ๋ผ๋ฏธํ„ฐ 51,542,528
์–ดํœ˜ ํ•œ๊ตญ์–ด SentencePiece Unigram 20,000
๋ ˆ์ด์–ด 14
Hidden / MLP 512 / 1,408
Attention / KV heads 8 / 4
Head dimension 64
์ตœ๋Œ€ ๋ฌธ๋งฅ 1,024 tokens
ํ™œ์„ฑํ™” / ์ •๊ทœํ™” SwiGLU(SiLU) / RMSNorm
์œ„์น˜ ํ‘œํ˜„ RoPE, theta 10,000
์ž…๋ ฅยท์ถœ๋ ฅ ์ž„๋ฒ ๋”ฉ ๊ณต์œ 

32K ์–ดํœ˜๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด 50M ๋ชจ๋ธ์˜ ๋งŽ์€ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ž„๋ฒ ๋”ฉ์— ์†Œ๋น„๋ฉ๋‹ˆ๋‹ค. KAWK-50M์€ ์–ดํœ˜๋ฅผ 20K๋กœ ์ค„์ด๊ณ  ๋‚จ๋Š” ์˜ˆ์‚ฐ์„ 14๊ฐœ Transformer ๋ ˆ์ด์–ด์— ๋ฐฐ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•œ๊ตญ์–ด ํ† ํฌ๋‚˜์ด์ €์™€ ๋ฐ์ดํ„ฐ ์›์น™

  • ์™ธ๋ถ€ Unicode NFC ์ •๊ทœํ™”
  • SentencePiece Unigram, ๋‚ด๋ถ€ normalization์€ identity
  • byte fallback๊ณผ ์ˆซ์ž ๋ถ„๋ฆฌ ์‚ฌ์šฉ
  • ์˜์–ดยท์ฝ”๋“œยท์ˆ˜ํ•™ ์ „์šฉ ๋ง๋ญ‰์น˜๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
  • KTX, Windows, ์ œํ’ˆ๋ช…, ์ˆซ์ž, ๋‹จ์œ„์ฒ˜๋Ÿผ ํ•œ๊ตญ์–ด ๋ฌธ์žฅ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํฌํ•จ๋œ ์˜๋ฌธยท์ˆซ์ž๋Š” ์œ ์ง€
  • HTML, URL ๊ณผ๋‹ค, ๋ฐ˜๋ณต ๋ฌธ์žฅ, code/math-heavy ๋ฌธ์„œ, ๋‚ฎ์€ ํ•œ๊ธ€ ๋น„์œจ ๋ฌธ์„œ ํ•„ํ„ฐ๋ง
  • ์ด๋ฉ”์ผยท์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ ๊ฐœ์ธ์ •๋ณด ํ˜•ํƒœ ๋งˆ์Šคํ‚น
  • exact/near duplicate ์ œ๊ฑฐ

์ฃผ์š” ์‚ฌ์ „ํ•™์Šต ์›์ฒœ์€ HuggingFaceFW/fineweb-2์˜ kor_Hang์ด๋ฉฐ, ์›์ฒœ revision๊ณผ ์ด์šฉ ์กฐ๊ฑด์€ ํ•™์Šต ์•„์นด์ด๋ธŒ์— ๊ณ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ์ด๋ ฅ๊ณผ ์ค‘์š”ํ•œ ์ •์ •

ํ˜„์žฌ ๊ณต๊ฐœ ๋ชจ๋ธ์€ ์˜ฌ๋ฐ”๋ฅธ next-token objective๋กœ ๋ณต๊ตฌยท๊ฒ€์ฆํ•œ ์•ฝ 6B-token Base ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์ค‘ ์ดˆ๊ธฐ ๋Œ€๊ทœ๋ชจ ์‹คํ—˜์—์„œ๋Š” dataset์ด labels๋ฅผ ํ•œ token ์ด๋™ํ•œ ์ƒํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ณ  LlamaForCausalLM์ด ๋‚ด๋ถ€์—์„œ ๋‹ค์‹œ shiftํ•˜์—ฌ ์‚ฌ์‹ค์ƒ ๋‘ token ์•ž์„ ์˜ˆ์ธกํ•˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ์ž˜๋ชป๋œ ๊ธฐ์ค€์œผ๋กœ training/validation loss๋ฅผ ๊ณ„์‚ฐํ•ด ๋Šฆ๊ฒŒ ๋ฐœ๊ฒฌ๋์Šต๋‹ˆ๋‹ค.

  • ์ดˆ๊ธฐ ์ž˜๋ชป๋œ 20B Base + 3B CPT ์‹คํ—˜์€ ์ •์ƒ์ ์ธ 23B next-token ํ•™์Šต๋Ÿ‰์œผ๋กœ ๊ณ„์‚ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • raw next-token NLL, generation, unit test๋กœ ์›์ธ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  • objective ์ˆ˜์ • ํ›„ 100M A/B ๊ฒ€์ฆ โ†’ 1B recovery โ†’ ์ถ”๊ฐ€ 5B recovery๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์‹คํŒจ run์€ ์žฌํ˜„์„ ์œ„ํ•ด ๋ณ„๋„ archive์— ๋ณด์กดํ•˜์ง€๋งŒ ์ตœ์ข… ์ •์ƒ ๋ชจ๋ธ๋กœ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์ •์ •์€ ํ•™์Šต๋Ÿ‰์„ ํฌ๊ฒŒ ๋ณด์ด๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค ์‹ค์ œ objective์™€ ์žฌํ˜„์„ฑ์„ ์šฐ์„ ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

ํ‰๊ฐ€

ํ•ญ๋ชฉ ๊ฒฐ๊ณผ
Validation loss 2.89026
Validation perplexity 17.9979
Bits per UTF-8 byte 0.92329
์ด์ „ 1B checkpoint loss 2.97448
Gate passed

ํ‰๊ฐ€๋Š” ๊ณ ์ •๋œ ํ•œ๊ตญ์–ด validation ๋ฌธ์„œ์—์„œ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์“ฐ๋Š” ๋ชจ๋ธ๊ณผ token-level perplexity๋ฅผ ์ง์ ‘ ๋น„๊ตํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

repo_id = "Infinity08/KAWK-1.5-50M-Korean-Base"
tokenizer = AutoTokenizer.from_pretrained(repo_id, use_fast=False)
model = AutoModelForCausalLM.from_pretrained(repo_id)

prompt = "๋Œ€ํ•œ๋ฏผ๊ตญ์˜ ์ˆ˜๋„๋Š”"
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(
    **inputs,
    max_new_tokens=80,
    do_sample=True,
    temperature=0.8,
    top_p=0.9,
    repetition_penalty=1.1,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

์ ํ•ฉํ•œ ์šฉ๋„

  • ์†Œํ˜• ํ•œ๊ตญ์–ด LM ์—ฐ๊ตฌ์™€ ๊ต์œก
  • ํ† ํฌ๋‚˜์ด์ €ยท์‚ฌ์ „ํ•™์ŠตยทCPT ์‹คํ—˜
  • ํ•œ๊ตญ์–ด ์ž๋™์™„์„ฑ๊ณผ ์ œํ•œ์ ์ธ ํ…์ŠคํŠธ ์ƒ์„ฑ
  • ์†Œ๋น„์ž GPU/CPU ์ถ”๋ก  ํ…Œ์ŠคํŠธ
  • ๋” ํฐ ํ•œ๊ตญ์–ด ๋ชจ๋ธ์˜ ํŒŒ์ดํ”„๋ผ์ธ ๊ฒ€์ฆ

ํ•œ๊ณ„

  • 50M๊ธ‰์ด๋ฏ€๋กœ ์ง€์‹๋Ÿ‰, ์‚ฌ์‹ค์„ฑ, ๋ณต์žกํ•œ ์ถ”๋ก  ๋Šฅ๋ ฅ์ด ๋งค์šฐ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.
  • ์ฑ—๋ด‡์ฒ˜๋Ÿผ ์ง€์‹œ๋ฅผ ๋”ฐ๋ฅด๋„๋ก ํ•™์Šต๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต, ์ž˜๋ชป๋œ ์‚ฌ์‹ค, ์›น ๋ฐ์ดํ„ฐ์˜ ํŽธํ–ฅยท๊ด‘๊ณ ์„ฑ ๋ฌธ๊ตฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜๋ฃŒยท๋ฒ•๋ฅ ยท๊ธˆ์œตยท์•ˆ์ „ ๊ด€๋ จ ํŒ๋‹จ์— ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฐœ์ธ์ •๋ณด ์žฌํ˜„, ํŽธํ–ฅ, ์œ ํ•ด์„ฑ์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ์•ˆ์ „ ํ‰๊ฐ€๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ ์ž๋ฃŒ

์›์ฒœ ๋ฐ์ดํ„ฐ์—๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ด์šฉ ์กฐ๊ฑด์ด ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ ์นด๋“œ๋Š” ์›์ฒœ ๋ฐ์ดํ„ฐ์˜ ์žฌ๋ฐฐํฌ ๊ถŒ๋ฆฌ๋ฅผ ๋ณ„๋„๋กœ ๋ถ€์—ฌํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๋Š” ๊ฐ upstream dataset์˜ ๋ผ์ด์„ ์Šค์™€ ๊ท€์† ์กฐ๊ฑด์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Downloads last month
16
Safetensors
Model size
51.5M params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Dataset used to train Infinity08/KAWK-1.5-50M-Korean-Base