Perdix-1.1B-Base / README.md
prismdata's picture
๋ชจ๋ธ ์นด๋“œ์— ํ•™์Šต ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ(Perdix-Pretrain-Data) ๋งํฌ ์ถ”๊ฐ€
df10b8f verified
|
Raw History Blame Contribute Delete
5.33 kB
---
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`๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
```python
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](https://arxiv.org/abs/2508.09148))์™€ Differential Transformer(Ye et al., 2024)๋ฅผ ์ฝ๊ณ  ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์› ์ €์ž๋“ค๊ณผ๋Š” ๊ด€๊ณ„์—†๋Š” ๊ฐœ์ธ ๊ตฌํ˜„์ด๋ผ, ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์ œ ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค.
## ํ•™์Šต
- **๋ฐ์ดํ„ฐ**: 30B ํ† ํฐ. ์˜์–ด ์›น([DCLM-baseline](https://huggingface.co/datasets/mlfoundations/dclm-baseline-1.0), CC-BY-4.0), ํ•œ๊ตญ์–ด ์›น([FineWeb2](https://huggingface.co/datasets/HuggingFaceFW/fineweb-2) kor_Hang, ODC-By), ์ˆ˜ํ•™([FineMath](https://huggingface.co/datasets/HuggingFaceTB/finemath) 4+, ODC-By)
- ์‹ค์ œ๋กœ ์“ด parquet ํŒŒ์ผ(335๊ฐœ, 178GB)์€ [prismdata/Perdix-Pretrain-Data](https://huggingface.co/datasets/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](https://github.com/theprismdata/Perdix)์— ์žˆ์Šต๋‹ˆ๋‹ค.
## ๋ผ์ด์„ ์Šค
Apache-2.0. ํ•™์Šต ๋ฐ์ดํ„ฐ์˜ ์ถœ์ฒ˜์™€ ๋ผ์ด์„ ์Šค๋Š” ์œ„์— ์ ์—ˆ์Šต๋‹ˆ๋‹ค.