Perdix-1.1B-Base / README.md
prismdata's picture
๋ชจ๋ธ ์นด๋“œ์— ํ•™์Šต ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ(Perdix-Pretrain-Data) ๋งํฌ ์ถ”๊ฐ€
df10b8f verified
|
Raw History Blame Contribute Delete
5.33 kB
metadata
license: apache-2.0
language:
  - ko
  - en
library_name: transformers
pipeline_tag: text-generation
tags:
  - custom_code
  - base-model
  - differential-attention
  - polynorm
datasets:
  - prismdata/Perdix-Pretrain-Data
  - mlfoundations/dclm-baseline-1.0
  - HuggingFaceFW/fineweb-2
  - HuggingFaceTB/finemath

Perdix-1.1B-Base

์ž‘์€ ์ˆ˜์ค€์˜ LLM์œผ๋กœ ์ด๋ฆ„์€ ๊ทธ๋ฆฌ์Šค ์‹ ํ™”์˜ ํŽ˜๋ฅด๋”•์Šค์—์„œ ๋”ฐ์™”์Šต๋‹ˆ๋‹ค. ๋‹ค์ด๋‹ฌ๋กœ์Šค์˜ ์–ด๋ฆฐ ์ œ์ž์˜€๊ณ  ํ†ฑ๊ณผ ์ปดํผ์Šค๋ฅผ ๋ฐœ๋ช…ํ–ˆ๋Š”๋ฐ, ํƒ‘์—์„œ ๋–จ์–ด์ง€๋‹ค ์ž๊ณ ์ƒˆ๊ฐ€ ๋˜๋Š” ๋ฐ”๋žŒ์— ๊ทธ ๋’ค๋กœ๋Š” ๋‚ฎ๊ฒŒ๋งŒ ๋‚ ์•„๋‹ค๋‹Œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ์ด ๋ชจ๋ธ ์ˆ˜์ค€์ด ๋”ฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

A 1.1B-parameter Korean/English base language model pretrained from scratch on a single machine. It only continues text; it has not been trained to chat or follow instructions.

๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฌด์—‡์„ ๋ชป ํ•˜๋‚˜

๋ฒ ์ด์Šค ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ๋ฌธ์žฅ ์•ž๋ถ€๋ถ„์„ ์ฃผ๋ฉด ๋’ค๋ฅผ ์ž‡๋Š” ๊ฒƒ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ฑฐ๋‚˜ ์ง€์‹œ๋ฅผ ๋”ฐ๋ฅด๋„๋ก ํ•™์Šต์‹œํ‚จ ์ ์ด ์—†์–ด์„œ, ๋Œ€ํ™”์šฉ์œผ๋กœ ์“ฐ๋ฉด ์—‰๋šฑํ•œ ๊ธ€์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

์ด์–ด ์“ด ๊ธ€์€ ๋ฌธ์žฅ์œผ๋กœ๋Š” ๊ทธ๋Ÿด๋“ฏํ•˜์ง€๋งŒ ๋‚ด์šฉ์€ ์ž์ฃผ ํ‹€๋ฆฝ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์‹ค์ œ ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค(temperature 0.8, top-k 50). ๊ตต์€ ๋ถ€๋ถ„์ด ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค.

๋Œ€ํ•œ๋ฏผ๊ตญ์˜ ์ˆ˜๋„ ์„œ์šธ์€ ์„ธ๊ณ„ 4๋Œ€ ๋ฌธ๋ช… ๋ฐœ์ƒ์ง€์ด์ž ์ตœ๋Œ€ ๋„์‹œ์ด์ž ๋ฏผ์ฃผ์ฃผ์˜์˜ ์ค‘์‹ฌ์ง€๋กœ ์•Œ๋ ค์ ธ ์žˆ๋‹ค. ๊ทธ๋งŒํผ ์„œ์šธ์˜ ์—ญ์‚ฌ๋„ ์˜ค๋ž˜๋˜์—ˆ๋Š”๋ฐ, 1905๋…„ 1์›” 4์ผ ์ผ๋ณธ ์ œ๊ตญ์ด ์„œ์šธ์— ์‹ ์‚ฌยท๋ถˆ๊ฐ๊ณผ ํ•จ๊ป˜ โ€ฆ

The capital city of France is Cannes, a city of the seas. And now, in Cannes, in this particular place, I'm going to speak about the culture of the city. โ€ฆ

๊น€์น˜๋Š” ํ•œ๊ตญ์˜ ์ „ํ†ต ์Œ์‹์œผ๋กœ, ๋‹ค์–‘ํ•œ ์žฌ๋ฃŒ๋ฅผ ์‚ฌ์šฉํ•ด ๊น€์น˜๋ฅผ ๋‹ด๊ทธ๋Š” ๋ฌธํ™”์™€ ์‹๋ฌธํ™”๋ฅผ ๊ฒฝํ—˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Q: ๊น€์น˜๋Š” ์–ด๋–ค ์žฌ๋ฃŒ๋กœ ๋งŒ๋“ค์–ด์ง€๋‚˜์š”? A: ๊น€์น˜๋Š” ๋‹ค์–‘ํ•œ ์žฌ๋ฃŒ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ์ฃผ๋กœ ๊ณ ์ถง๊ฐ€๋ฃจ, ๋งˆ๋Š˜, ์ƒ๊ฐ• ๋“ฑ์ด ์‚ฌ์šฉ๋˜๋ฉฐ โ€ฆ

์‚ฌ์‹ค ํ™•์ธ์ด ํ•„์š”ํ•œ ์šฉ๋„์—๋Š” ์“ฐ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ํ•™์Šต ๋ฐ์ดํ„ฐ๊ฐ€ ์›น ๋ฌธ์„œ๋ผ ํŽธํ–ฅ๋˜๊ฑฐ๋‚˜ ๋ถ€์ ์ ˆํ•œ ๋‚ด์šฉ์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

๋ชจ๋ธ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ์†Œ์— ๋“ค์–ด ์žˆ์–ด์„œ trust_remote_code=True๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "prismdata/Perdix-1.1B-Base"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(
    repo, trust_remote_code=True, dtype=torch.bfloat16).to("cuda").eval()

ids = tok("๋Œ€ํ•œ๋ฏผ๊ตญ์˜ ์ˆ˜๋„ ์„œ์šธ์€", return_tensors="pt").input_ids.to("cuda")
out = model.generate(ids, max_new_tokens=100, do_sample=True, temperature=0.8, top_k=50)
print(tok.decode(out[0], skip_special_tokens=True))

์•Œ์•„ ๋‘˜ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ๋งฅ ๊ธธ์ด๋Š” 2,048ํ† ํฐ์ž…๋‹ˆ๋‹ค.
  • KV ์บ์‹œ๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์ „์ฒด ์‹œํ€€์Šค๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธธ๊ฒŒ ์ƒ์„ฑํ•˜๋ฉด ๋А๋ฆฝ๋‹ˆ๋‹ค.
  • ํŒจ๋”ฉ ๋งˆ์Šคํฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. attention_mask๋Š” ๋ฌด์‹œ๋˜๋ฏ€๋กœ, ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅธ ๋ฌธ์žฅ์„ ํŒจ๋”ฉํ•ด์„œ ํ•œ ๋ฐฐ์น˜๋กœ ์ƒ์„ฑํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ํ‹€์–ด์ง‘๋‹ˆ๋‹ค. ํ•œ ๋ฌธ์žฅ์”ฉ ๋„ฃ์œผ์„ธ์š”.

๋ชจ๋ธ

ํ•ญ๋ชฉ ๊ฐ’
ํŒŒ๋ผ๋ฏธํ„ฐ 1,107M
๊ตฌ์กฐ decoder-only, pre-RMSNorm, RoPE, ์ž…์ถœ๋ ฅ ์ž„๋ฒ ๋”ฉ ๊ณต์œ 
์ธต / ์ฐจ์› / ํ—ค๋“œ 20 / 2048 / 16
FFN ์ฐจ์› 8192
๋ฌธ๋งฅ ๊ธธ์ด 2,048
์–ดํœ˜ 49,152 (BPE)
๊ฐ€์ค‘์น˜ ํ˜•์‹ float32 safetensors

์ผ๋ฐ˜ ํŠธ๋žœ์Šคํฌ๋จธ์™€ ๋‹ค๋ฅธ ์ ์€ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  • Differential Attention. ์–ดํ…์…˜ ๋งต์„ ๋‘ ๊ฐœ ๋งŒ๋“ค์–ด ํ•˜๋‚˜์—์„œ ๋‹ค๋ฅธ ํ•˜๋‚˜๋ฅผ ๋บ๋‹ˆ๋‹ค. ์–‘์ชฝ์— ๊ณตํ†ต์œผ๋กœ ๋ผ๋Š” ์žก์Œ์„ ์ƒ์‡„ํ•˜๋ ค๋Š” ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค.
  • PolyNorm. ํ™œ์„ฑ ํ•จ์ˆ˜ ์ž๋ฆฌ์— x, xยฒ, xยณ์„ ๊ฐ๊ฐ ์ •๊ทœํ™”ํ•ด์„œ ํ•™์Šต๋˜๋Š” ๊ฐ€์ค‘์น˜๋กœ ์„ž์–ด ์”๋‹ˆ๋‹ค.

๋‘˜ ๋‹ค ์ œ๊ฐ€ ๊ณ ์•ˆํ•œ ๊ฒŒ ์•„๋‹ˆ๊ณ  Motif-2.6B ๊ธฐ์ˆ ๋ณด๊ณ ์„œ(arXiv:2508.09148)์™€ Differential Transformer(Ye et al., 2024)๋ฅผ ์ฝ๊ณ  ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์› ์ €์ž๋“ค๊ณผ๋Š” ๊ด€๊ณ„์—†๋Š” ๊ฐœ์ธ ๊ตฌํ˜„์ด๋ผ, ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์ œ ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค.

ํ•™์Šต

  • ๋ฐ์ดํ„ฐ: 30B ํ† ํฐ. ์˜์–ด ์›น(DCLM-baseline, CC-BY-4.0), ํ•œ๊ตญ์–ด ์›น(FineWeb2 kor_Hang, ODC-By), ์ˆ˜ํ•™(FineMath 4+, ODC-By)
    • ์‹ค์ œ๋กœ ์“ด parquet ํŒŒ์ผ(335๊ฐœ, 178GB)์€ prismdata/Perdix-Pretrain-Data์— ๊ทธ๋Œ€๋กœ ์˜ฌ๋ ค ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฏน์‹ฑ: ์˜์–ด 65% / ํ•œ๊ตญ์–ด 30% / ์ˆ˜ํ•™ 5%์—์„œ ์‹œ์ž‘ํ•ด 25% / 50% / 25%๋กœ ์„œ์„œํžˆ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค.
  • ํ•™์Šต๋ฅ : ์ตœ๊ณ  3e-4. 1B ํ† ํฐ ์›Œ๋ฐ์—… ๋’ค ์œ ์ง€ํ•˜๋‹ค ๋งˆ์ง€๋ง‰ 20% ๊ตฌ๊ฐ„์—์„œ ์ตœ๊ณ ๊ฐ’์˜ 25%๊นŒ์ง€ ๋‚ด๋ ธ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฐ์น˜: ์Šคํ…๋‹น ์•ฝ 1M ํ† ํฐ, ์‹œํ€€์Šค ๊ธธ์ด 2,048, bf16
  • ๊ฒฐ๊ณผ: loss 10.7 โ†’ 2.3 ๊ทผ์ฒ˜
  • ์žฅ๋น„: DGX Spark ํ•œ ๋Œ€

ํ•™์Šต ์ฝ”๋“œ๋Š” github.com/theprismdata/Perdix์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

Apache-2.0. ํ•™์Šต ๋ฐ์ดํ„ฐ์˜ ์ถœ์ฒ˜์™€ ๋ผ์ด์„ ์Šค๋Š” ์œ„์— ์ ์—ˆ์Šต๋‹ˆ๋‹ค.