ZeliDesk-sLM-1B
โ ๏ธ Work in progress โ pretraining at ~22% (4.5B / 20B tokens). Weights are intermediate and will be updated. This repository is updated continuously as training progresses. Intermediate checkpoints are pinned with git tags (e.g.
ckpt-step17000) so any published state remains reproducible.
ZeliDesk-sLM-1B is a 1.04B-parameter Korean language model pretrained entirely from scratch โ random initialization, a custom-trained tokenizer, and a fully documented, reproducible training pipeline. It is not a fine-tune, continuation, or distillation of any existing model.
The goal of this project is not leaderboard performance. It is an honest, fully backfillable Korean 1B baseline: every stage โ tokenizer training, data preprocessing, and pretraining โ is reproducible from public notebooks, and the model card reports only verifiable numbers. No benchmark scores are claimed until they are actually measured.
Architecture
Standard Llama-style decoder-only transformer (LlamaForCausalLM). Only the publicly documented architecture recipe (RMSNorm + SwiGLU + RoPE + GQA) is adopted โ no weights, tokenizer, or other artifacts are inherited from Meta Llama or any other model (see License & provenance).
| Parameters | ~1.040B (embeddings 67M, 6.5% of total) |
| Hidden size | 2048 |
| Layers | 16 |
| Attention heads | 32 (8 KV heads, GQA) |
| FFN size | 8192 (SwiGLU) |
| Context length | 2048 |
| RoPE ฮธ | 500,000 |
| Normalization | RMSNorm, no bias terms |
| Embeddings | Tied input/output |
| Vocabulary | 32,768 |
Tokenizer
Custom ByteLevel BPE with a 32,768-token vocabulary, trained from scratch on a sample of FineWeb-2 kor_Hang. Special tokens: <|endoftext|> (eos, id 0), <|pad|> (pad, id 1). This is a base model โ no chat template is defined.
Measured fertility on held-out Korean web text (FineWeb-2 kor_Hang test split, 150 docs): 5.318 UTF-8 bytes/token โ 2.310 chars/token.
Training data
Pretrained on HuggingFaceFW/fineweb-2, kor_Hang split (license: ODC-By 1.0), with a Chinchilla-style budget of 20B tokens.
The tokenized data shards used for training are kept in a private repository because they are a re-processed derivative of the source dataset; instead, the original dataset (HuggingFaceFW/fineweb-2) is linked here and the full preprocessing procedure is reproducible from the public notebooks.
Training procedure
| Hyperparameter | Value |
|---|---|
| Total token budget | 20B (~76,293 steps) |
| Effective batch size | 262,144 tokens/step (micro-batch 8 ร grad-accum 16 ร ctx 2048) |
| Learning rate | 4e-4, cosine schedule |
| Warmup | 2,000 steps |
| Precision | bf16 mixed precision |
| Optimizer | AdamW (ฮฒโ = 0.95, weight decay 0.1) |
| Hardware | Colab Pro+ G4 โ RTX PRO 6000 Blackwell (96GB), ~45k tok/s measured |
Intermediate evaluation
Every number below was actually measured on the published checkpoint โ nothing is estimated or extrapolated. BPB (bits per byte) is the project's primary pretraining metric; it will be re-measured at later checkpoints and at completion, forming a public training curve.
| Checkpoint | Training progress | BPB โ | Token perplexity โ |
|---|---|---|---|
ckpt-step17000 |
~22% (~4.5B / 20B tokens) | 0.7742 | 17.35 |
Methodology (deterministic, reproducible): first 150 documents of FineWeb-2 data/kor_Hang/test/000_00000.parquet (held-out test split, disjoint from training data), in file order. Each document is prefixed with <|endoftext|> and truncated to a 2,048-token window; cross-entropy is summed over all document tokens and divided by the UTF-8 byte length of the exact decoded scored text: BPB = NLL_nats / ln(2) / bytes. Totals: 87,539 tokens / 465,560 bytes scored, float32 inference.
No standard benchmark scores (e.g. reasoning or knowledge suites) are published yet โ the absence of those numbers is deliberate, not an oversight.
Sample outputs (step 17000)
Unedited samples from the current checkpoint (do_sample=True, top_p=0.9, temperature=0.8, seed 42), shown to set expectations honestly โ grammar and fluency are forming, factual grounding is not yet there:
๋ํ๋ฏผ๊ตญ์ ์๋๋ ์ด๋์ ๋๊น? - "์ ๋ผ๋ถ๋ ์ ์ฃผ์ ์์ฐ๊ตฌ, ์ ์ฃผ์, ์ง์๊ตฐ ์ง์์, โฆ" (fails to answer; drifts into place-name lists)
์ค๋ ๋ ์จ๊ฐ ์ข์์ ๊ฝ๋ ํ์ง ํ๋ค. ๋ด์ด ์ค๋ฉด ๋คํ์์ ์์น์ด ์ํธ๋ฏ, ๊ฝ๋ ํ์ง ํผ๊ฒ ์ง. ์ด๊ณณ, ์ด ๊ธธ์ ๊ฑท๋ ์ฐ๋ฆฌ๋ค๋ ์ด์ ๊ฝ์ฒ๋ผ ํ์ง ํผ์ด๋๊ฒ ๋ ํ ๋.
์ธ๊ณต์ง๋ฅ ๊ธฐ์ ์ ๋ฐ์ ์ ํฅํ ๋์ฑ ๊ฐ์ํ ๋ ๊ฒ์ผ๋ก ์์ธกํฉ๋๋ค. - "Software Development" ์ ๋์ ์ค๋ฆฐ โฆ (fluent register, but fabricated citation)
License & provenance
Weights are released under Apache-2.0.
This model does not inherit any weights, tokenizer, or training artifacts from Meta Llama. It adopts only the openly published architecture recipe (RMSNorm, SwiGLU, RoPE, GQA) as implemented by the standard LlamaForCausalLM class in ๐ค Transformers, and was pretrained from random initialization. The Meta Llama Community License therefore does not apply to these weights.
Training data attribution: FineWeb-2 is released by HuggingFaceFW under ODC-By 1.0.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = "cooler8/ZeliDesk-sLM-1B"
tokenizer = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, torch_dtype="bfloat16")
inputs = tokenizer("๋ํ๋ฏผ๊ตญ์ ์๋๋", return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=64, do_sample=True, top_p=0.9)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
To load the pinned intermediate checkpoint instead of the moving main branch:
model = AutoModelForCausalLM.from_pretrained(repo, revision="ckpt-step17000")
Limitations
Read this section before using the model. It is intentionally thorough.
- Training is incomplete. The current weights represent ~22% of the planned 20B-token budget (~4.5B tokens). Output quality is far below what the finished model is expected to produce, and the weights on
mainwill keep changing until training completes. - Base model only. No instruction tuning, no RLHF, no safety alignment. It does not follow instructions or chat โ it only continues text. Outputs may be incoherent, repetitive, factually wrong, or offensive, reflecting patterns in web-crawled data.
- Korean only. Trained exclusively on Korean (
kor_Hang) text. English or other languages will produce degraded output. - 1B-class capacity. This is a small language model. It cannot be expected to match larger models on knowledge, reasoning, or generation quality โ that is not its purpose.
- Short context. Maximum context length is 2,048 tokens.
- No standard benchmark results yet. Only the intermediate BPB measurement above has been published, with its full methodology. Any other capability numbers attributed to this model are not from us.
- Web-data risks. FineWeb-2 is filtered web text; despite filtering it may contain biases, inaccuracies, and personally identifiable information, which the model may reproduce.
- Not for production or high-stakes use in its current state โ including medical, legal, or financial advice and any automated decision-making affecting people.
ํ๊ตญ์ด ์์ฝ
ZeliDesk-sLM-1B๋ ์ฒ์๋ถํฐ(from scratch) ์ฌ์ ํ์ตํ ํ๊ตญ์ด 1.04B ํ๋ผ๋ฏธํฐ ์ธ์ด ๋ชจ๋ธ์ ๋๋ค. Meta Llama์ ๊ฐ์ค์นยทํ ํฌ๋์ด์ ๋ฅผ ์ผ์ ์์ํ์ง ์๊ณ , ๊ณต๊ฐ ํ์ค ์ํคํ ์ฒ ๊ท๊ฒฉ(RMSNorm + SwiGLU + RoPE + GQA)๋ง ์ฑํํ์ฌ ๋๋ค ์ด๊ธฐํ์์ ํ์ตํ์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ค์น๋ Apache-2.0์ผ๋ก ๊ณต๊ฐ๋ฉ๋๋ค.
- ํ์ฌ ์ํ: ํ์ต ์งํ ์ค (~22%, 4.5B / 20B ํ ํฐ). ๋ฏธ์์ฑ ์ค๊ฐ ๊ฐ์ค์น์ ๋๋ค.
- ํ์ต ๋ฐ์ดํฐ: FineWeb-2 ํ๊ตญ์ด(
kor_Hang) ์คํ๋ฆฟ (ODC-By 1.0), 20B ํ ํฐ ์์ฐ - ํ ํฌ๋์ด์ : FineWeb-2 ํ๊ตญ์ด ์ํ๋ก ์์ฒด ํ์ตํ ByteLevel BPE 32,768 ์ดํ
- ๋ชฉํ: ์ฑ๋ฅ ๊ฒฝ์์ด ์๋, ์ ๊ณผ์ ์ด ์ฌํ ๊ฐ๋ฅํ ์ ์งํ ํ๊ตญ์ด 1B ๋ฒ ์ด์ค๋ผ์ธ
- ์ค๊ฐ ํ๊ฐ (step 17000, ์ค์ธก): FineWeb-2 ํ๊ตญ์ด held-out ํ ์คํธ ์คํ๋ฆฟ ๊ธฐ์ค BPB 0.7742, ํ ํฐ perplexity 17.35. ์ธก์ ๋ฐฉ๋ฒ๋ก ์ ์ Intermediate evaluation ์น์ ์ ์ ๋ถ ๊ณต๊ฐ.
- ๋ฒ ์ด์ค ๋ชจ๋ธ์ด๋ฏ๋ก ์ง์ ๋ฐ๋ฅด๊ธฐยท๋ํ ๋ฅ๋ ฅ์ด ์์ผ๋ฉฐ, ํ์ค ๋ฒค์น๋งํฌ ์ ์๋ ์์ง ์ธก์ ์ ์ ๋๋ค. ๊ฒ์ฆ๋ ์ซ์๋ง ๊ธฐ์ฌํ๋ ๊ฒ์ด ์ด ํ๋ก์ ํธ์ ์์น์ ๋๋ค.
Citation
@misc{zelidesk-slm-1b,
title = {ZeliDesk-sLM-1B: A from-scratch Korean 1B language model},
author = {ZeliAI},
year = {2026},
url = {https://huggingface.co/cooler8/ZeliDesk-sLM-1B}
}