Text Generation
Transformers
Safetensors
Korean
English
perdix
custom_code
base-model
differential-attention
polynorm
Instructions to use prismdata/Perdix-1.1B-Base with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use prismdata/Perdix-1.1B-Base with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="prismdata/Perdix-1.1B-Base", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("prismdata/Perdix-1.1B-Base", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use prismdata/Perdix-1.1B-Base with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "prismdata/Perdix-1.1B-Base" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "prismdata/Perdix-1.1B-Base", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/prismdata/Perdix-1.1B-Base
- SGLang
How to use prismdata/Perdix-1.1B-Base with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "prismdata/Perdix-1.1B-Base" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "prismdata/Perdix-1.1B-Base", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "prismdata/Perdix-1.1B-Base" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "prismdata/Perdix-1.1B-Base", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use prismdata/Perdix-1.1B-Base with Docker Model Runner:
docker model run hf.co/prismdata/Perdix-1.1B-Base
File size: 5,326 Bytes
11d0331 df10b8f 11d0331 418a411 11d0331 df10b8f 11d0331 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | ---
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. ํ์ต ๋ฐ์ดํฐ์ ์ถ์ฒ์ ๋ผ์ด์ ์ค๋ ์์ ์ ์์ต๋๋ค.
|