Ilikemechuri's picture
Upload folder using huggingface_hub
83926c5 verified
|
Raw History Blame Contribute Delete
25.7 kB
# RWKV7-G1j-1.5B ๋ฐ˜๋ณต ๋ถ•๊ดด ์‹คํ—˜
์‹คํ—˜์ผ: 2026-09-27
## ์š”์•ฝ
- Greedy baseline์—์„œ ์ฆ๋ช… ์ค‘ ๋™์ผํ•œ ์‹ ํ–‰์ด 5ํšŒ ๋ฐ˜๋ณต๋๋‹ค. ์‹œ์ž‘ ํ† ํฐ์€ 241, 299, 357, 415, 473์œผ๋กœ 58ํ† ํฐ ๊ฐ„๊ฒฉ์ด๋‹ค. ๋ณ„๋„๋กœ 48ํ† ํฐ ๊ตฌ์ ˆ์ด 229โ†’287์—์„œ ๋ฐ˜๋ณต๋˜๊ณ , 57ํ† ํฐ ๊ตฌ์ ˆ์€ 284โ†’342์—์„œ ๋ฐ˜๋ณต๋œ๋‹ค.
- โ€œ๋ชจ๋ฅด๋ฉด ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค๋ผ๊ณ  ๋‹ตํ•˜๊ณ  ๋ฉˆ์ถ”๋ผโ€๋Š” system ๋ฉ”์‹œ์ง€๋งŒ์œผ๋กœ๋Š” ์ค‘๋‹จ๋˜์ง€ ์•Š์•˜๋‹ค. 512ํ† ํฐ์„ ๋ชจ๋‘ ์ƒ์„ฑํ–ˆ๊ณ , ๊ฑฐ์ ˆ ๋ฌธ๊ตฌ์™€ EOS๊ฐ€ ์—†์—ˆ๋‹ค. ๊ฐ™์€ ์ˆ˜ํ•™ ํ’€์ด๋ฅผ ๋˜ํ’€์ดํ•˜๋Š” ๋Œ€์‹  ์ˆœํ™˜ ๋…ผ์ฆ์ด ๋‚˜์™”๋‹ค.
- system ๋ฉ”์‹œ์ง€์— `repetition_penalty=1.1`์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐ˜๋ณต๋Ÿ‰์€ ์ค„์—ˆ๋‹ค. rolling 64ํ† ํฐ ์ฐฝ์˜ ์ค‘๋ณต 8-gram ํ‰๊ท ์€ 0.063์—์„œ 0.028๋กœ, peak๋Š” 0.316์—์„œ 0.175๋กœ ๋‚ฎ์•„์กŒ๋‹ค.
- penalty๋ฅผ ์ ์šฉํ•ด๋„ 512ํ† ํฐ๊นŒ์ง€ ์ƒ์„ฑํ–ˆ๊ณ  ์ˆ˜ํ•™ ์ฆ๋ช…์€ ์—ฌ์ „ํžˆ ํ‹€๋ ธ๋‹ค. ๋ฐ˜๋ณต ํŒจ๋„ํ‹ฐ๋Š” ๋ฐ˜๋ณต์„ ์™„ํ™”ํ–ˆ์ง€๋งŒ ์ข…๋ฃŒ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์•˜๋‹ค.
- ์„ธ ์กฐ๊ฑด์—์„œ recurrent state RMS๋Š” ๋น„์Šทํ•œ ๋ฒ”์œ„์˜€๋‹ค. ๋ฐ˜๋ณต์€ state norm ํญ๋ฐœ๊ณผ ํ•จ๊ป˜ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์•˜๋‹ค.
- ์˜์–ด system ๋ฉ”์‹œ์ง€๋ฅผ ๋„ฃ์€ ์ถ”๊ฐ€ ์‹คํ–‰์—์„œ๋„ ๋‘ ๋ชจ๋ธ ๋ชจ๋‘ 512ํ† ํฐ๊นŒ์ง€ ๊ฐ”๊ณ  ๊ฑฐ์ ˆํ•˜์ง€ ์•Š์•˜๋‹ค. RWKV ๋ฐ˜๋ณต๋ฅ ์€ ๋‚ฎ์•„์กŒ์ง€๋งŒ OLMo๋Š” ํ‰๊ท  ๋ฐ˜๋ณต๋ฅ ์ด ๊ฑฐ์˜ ๊ฐ™๊ณ  peak๋Š” ์•ฝ๊ฐ„ ์˜ฌ๋ž๋‹ค.
- ์‘๋‹ต์„ 2,048ํ† ํฐ์œผ๋กœ ๋Š˜๋ฆฌ๊ณ  256ํ† ํฐ๋งˆ๋‹ค ์‚ฌ์šฉ๋Ÿ‰ ์•Œ๋ฆผ์„ ์ฃผ๋Š” harness๋ฅผ ์ ์šฉํ–ˆ๋‹ค. RWKV๋Š” ๋™์ผํ•œ 256ํ† ํฐ chunk๋ฅผ 8ํšŒ ๋ฐ˜๋ณตํ–ˆ๊ณ , OLMo๋Š” 184ํ† ํฐ ๊ตฌ๊ฐ„์„ ๋’ค์ชฝ์—์„œ ๋ฐ˜๋ณตํ–ˆ๋‹ค. ๋‘˜ ๋‹ค ๊ฑฐ์ ˆ์ด๋‚˜ EOS ์—†์ด ๋๋‚ฌ๋‹ค.
## ๋ชจ๋ธ๊ณผ ๊ณตํ†ต ์„ค์ •
- ๋ชจ๋ธ: `RWKV/RWKV7-G1j-1.5B-20260831`
- ๊ณ„์ธก์— ์‚ฌ์šฉํ•œ ๋กœ์ปฌ HF snapshot revision: `2c18b29ab7fbece25ff6112281eea0fa41fcb30f`
- ์‹คํ–‰ ํ™˜๊ฒฝ: PyTorch 2.11.0+cu128, Transformers 5.17.0, RTX 3060, BF16
- ์ž…๋ ฅ์€ ๋ชจ๋ธ chat template์„ ์‚ฌ์šฉํ•˜๊ณ  `thinking=False`๋กœ ๊ตฌ์„ฑํ–ˆ๋‹ค.
- ๊ณตํ†ต ์ƒ์„ฑ ์„ค์ •: greedy (`do_sample=False`), `max_new_tokens=512`, `eos_token_id=0`, stop string์€ ๋‘ ๊ฐœ์˜ ๊ฐœํ–‰ ๋’ค `User:`.
- system ์—†๋Š” prompt๋Š” 73ํ† ํฐ, system ๋ฉ”์‹œ์ง€ ํฌํ•จ prompt๋Š” 122ํ† ํฐ์ด์—ˆ๋‹ค.
- ๊ณ„์ธก์€ `model.generate()` ์ž์ฒด์— forward hook์„ ์—ฐ๊ฒฐํ•ด ํ–ˆ๋‹ค. ๊ฐ call์—์„œ raw logits์™€ 24๊ฐœ ์ธต์˜ WKV/attention-shift/FFN-shift state๋ฅผ ์ฝ์—ˆ๋‹ค. baseline ์žฌ์ƒ์„ฑ์€ ์ด์ „ ํ† ํฐ ๊ณ„์ธก๊ณผ ํ† ํฐ ID ์ „์ฒด๊ฐ€ ์ผ์น˜ํ–ˆ๋‹ค.
- ๋ณ„๋„ ์ˆ˜๋™ token-by-token loop๋Š” ์ฒ˜์Œ 64ํ† ํฐ ์ดํ›„ ์ƒ์„ฑ ๊ถค์ ์ด ๋‹ฌ๋ผ ์ตœ์ข… ๊ฒฐ๊ณผ์—์„œ ์ œ์™ธํ–ˆ๋‹ค. ๊ฒฐ๊ณผ CSV๋Š” direct `generate()` ๊ฒฝ๋กœ์—์„œ ์–ป์€ ๊ฐ’์ด๋‹ค.
### ํ”„๋กฌํ”„ํŠธ
์‚ฌ์šฉ์ž ํ”„๋กฌํ”„ํŠธ:
> ์ •์ˆ˜ a,b๊ฐ€ ab+1 | a^2+b^2๋ฅผ ๋งŒ์กฑํ•  ๋•Œ, (a^2+b^2)/(ab+1)์ด ์™„์ „์ œ๊ณฑ์ˆ˜์ž„์„ ์ฆ๋ช…ํ•ด. ๋‹จ, a,b๋Š” ์–‘์˜ ์ •์ˆ˜๋‹ค.
system ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋Š” ๋‘ ์กฐ๊ฑด:
> ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋‹ต์„ ๋ชจ๋ฅด๊ฒ ์œผ๋ฉด, ์–ต์ง€๋กœ ๊ณ„์† ์ถ”์ธกํ•˜์ง€ ๋ง๊ณ  โ€œ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹คโ€๋ผ๊ณ  ๋‹ตํ•œ ๋’ค ๋ฉˆ์ถฐ๋ผ.
### ์ง€ํ‘œ ์ •์˜
- **Entropy / top-1 probability / margin**: ๋‹ค์Œ ํ† ํฐ logits ๋ถ„ํฌ์˜ ๋ถˆํ™•์‹ค๋„, top-1 ํ™•๋ฅ , 1์œ„์™€ 2์œ„ logit ์ฐจ์ด. penalty run CSV์—๋Š” ์›์‹œ `raw_*`์™€ repetition processor ์ ์šฉ ํ›„ `penalty_*` ์ ์ˆ˜๊ฐ€ ๋ชจ๋‘ ์žˆ๋‹ค.
- **WKV state RMS**: ๊ฐ ์ธต์˜ `[heads, head_dim, head_dim]` recurrent matrix์—์„œ `sqrt(mean(xยฒ))`๋ฅผ ๊ณ„์‚ฐํ–ˆ๋‹ค. shift state๋Š” ์ธต๋ณ„ hidden-size ๋ฒกํ„ฐ์˜ RMS๋‹ค. `*_mean`๊ณผ `*_max`๋Š” 24๊ฐœ ์ธต์— ๋Œ€ํ•œ ์ง‘๊ณ„๋‹ค.
- **State์™€ token ์ •๋ ฌ**: `predicts_token_step`์€ ๋‹ค์Œ ํ† ํฐ์˜ 1-based ๋ฒˆํ˜ธ๋‹ค. ํ•ด๋‹น row์˜ recurrent state๋Š” ๊ทธ ํ† ํฐ ์ง์ „ context, ์ฆ‰ `context_generated_tokens`๊ฐœ ์ƒ์„ฑ ํ† ํฐ๊นŒ์ง€ ์ฒ˜๋ฆฌํ•œ ์ƒํƒœ๋‹ค.
- **rolling_dup8_rate_64**: ์ตœ๊ทผ ์ตœ๋Œ€ 64๊ฐœ ์ƒ์„ฑ ํ† ํฐ์˜ 8-gram ์ค‘๋ณต ๋น„์œจ.
- **Cycle similarity**: baseline์—์„œ ๋ฐ˜๋ณต ์ˆ˜์‹ ์ฒซ ํ† ํฐ์„ ์˜ˆ์ธกํ•˜๋Š” step 241๊ณผ ์ดํ›„ ๊ฐ™์€ ์ˆ˜์‹ ์‹œ์ž‘ step 299/357/415/473์„ ๋น„๊ตํ–ˆ๋‹ค. CSV์˜ cosine์€ ์ธต๋ณ„ state ๋ฐฉํ–ฅ ์œ ์‚ฌ๋„ ํ‰๊ท /์ตœ์†Ÿ๊ฐ’์ด๊ณ , `sym_kl_nats`๋Š” step241 logits ๋ถ„ํฌ์™€ ๋น„๊ตํ•œ ๋Œ€์นญ KL์ด๋‹ค.
## ์‚ฌ์ „ prompt/sampler ํ™•์ธ
์•„๋ž˜๋Š” 512ํ† ํฐ ๊ณ„์ธก ์‹คํ—˜ ์ „์˜ ์งง์€ screening์ด๋‹ค. ์งง์€ ์žฅ๋ฌธ ์˜์–ด ์„ค๋ช…๊ณผ ํ•œ๊ตญ์–ด ์ด์•ผ๊ธฐ๋Š” ๋ฐ˜๋ณต ๋ฃจํ”„ ์žฌํ˜„์— ์‹คํŒจํ–ˆ๋‹ค. ์–ด๋ ค์šด ์ •์ˆ˜๋ก  prompt์— `thinking=True`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋„ค decode ์„ค์ • ๋ชจ๋‘ ๋ฌธ์ œ๋ฅผ ๋˜ํ’€์ดํ•˜๊ฑฐ๋‚˜ ํ’€์ด๋ฅผ ๋ฏธ๋ฃจ๋Š” ํ˜„์ƒ์ด ๋ณด์—ฌ, ๋ณธ ๊ณ„์ธก์—์„œ๋Š” `thinking=False`๋กœ ๊ณ ์ •ํ–ˆ๋‹ค.
| Prompt | ์„ค์ • | ๊ธธ์ด | ๊ด€์ฐฐ |
|---|---|---:|---|
| ๊ณต๊ณต ๋„์„œ๊ด€์— ๊ณ„์† ํˆฌ์žํ•ด์•ผ ํ•˜๋Š” ์ด์œ  (์˜์–ด) | greedy / T=1,p=.5 / T=.8,p=.95 / T=1,p=.95 | 153โ€“160 | ๋„ค ์ถœ๋ ฅ ๋ชจ๋‘ ๋šœ๋ ทํ•œ ๋ฐ˜๋ณต ๋ฃจํ”„ ์—†์Œ. duplicate 4-gram ๋น„์œจ 0โ€“.026. |
| ๋‚ก์€ ์šฐ์‚ฐ ์ด์•ผ๊ธฐ (ํ•œ๊ตญ์–ด) | ๊ฐ™์€ ๋„ค ์„ค์ • | 160 | ๊ณ ์ • ์ฃผ๊ธฐ ๋ฃจํ”„๋Š” ์—†์Œ. T=1,p=.95๋Š” ๋ฌธ์žฅ์ด ํฌ๊ฒŒ ํํŠธ๋Ÿฌ์ง. |
| ์ •์ˆ˜๋ก  ์ฆ๋ช… (ํ•œ๊ตญ์–ด), `thinking=True` | ๊ฐ™์€ ๋„ค ์„ค์ • | 220 | ๋„ค ์ถœ๋ ฅ ๋ชจ๋‘ ์ฆ๋ช…์„ ์™„์„ฑํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ๋งํ•˜๊ฑฐ๋‚˜ ์ž๊ธฐ ์„ค๋ช…์„ ๋ฐ˜๋ณตํ•จ. duplicate 4-gram ๋น„์œจ .088โ€“.198. |
์ด screening์˜ raw ์ถœ๋ ฅ์€ ๋ณ„๋„ ์ €์žฅํ•˜์ง€ ์•Š์•˜๋‹ค. ์ž์„ธํ•œ ํ† ํฐ๋ณ„ ์ง„๋‹จ ๋ฐ ๋ณด๊ด€๋œ generation ํ…์ŠคํŠธ๋Š” ์•„๋ž˜ ์„ธ controlled run์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.
## ์กฐ๊ฑด๋ณ„ ๊ฒฐ๊ณผ
| ์กฐ๊ฑด | ์ถœ๋ ฅ | ๋ฐ˜๋ณต ๊ด€์ฐฐ | rolling 8-gram ํ‰๊ท  / peak | ํ‰๊ท  WKV / attention shift / FFN shift RMS |
|---|---:|---|---:|---:|
| Greedy baseline | 512ํ† ํฐ, EOS ์—†์Œ | 39-token ์ˆ˜์‹ ํ–‰ 5ํšŒ, 58ํ† ํฐ ๊ฐ„๊ฒฉ | 0.099 / 0.263 | 0.579 / 0.987 / 0.880 |
| System ๋ฉ”์‹œ์ง€ | 512ํ† ํฐ, EOS ์—†์Œ, ๊ฑฐ์ ˆ ๋ฌธ๊ตฌ ์—†์Œ | 64-token ๊ตฌ์ ˆ์ด 75โ†’354์—์„œ ์žฌ๋“ฑ์žฅ; ์ˆœํ™˜ ๋…ผ์ฆ | 0.063 / 0.316 | 0.582 / 0.988 / 0.889 |
| System + repetition penalty 1.1 | 512ํ† ํฐ, EOS ์—†์Œ, ๊ฑฐ์ ˆ ๋ฌธ๊ตฌ ์—†์Œ | ๊ฐ€์žฅ ๊ธด ๋™์ผ n-gram 19ํ† ํฐ (402โ†’449); ์‹ ํ–‰ ๊ณ ์ • ๋ฐ˜๋ณต ์—†์Œ | 0.028 / 0.175 | 0.586 / 0.999 / 0.897 |
### Baseline์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ์‹์˜ logits์™€ state
| ํ† ํฐ step | top-1 ํ™•๋ฅ  | entropy (nats) | top-1โˆ’top-2 margin | WKV RMS | attention shift RMS | FFN shift RMS |
|---:|---:|---:|---:|---:|---:|---:|
| 241 | 0.333 | 1.416 | 0.035 | 0.583 | 0.989 | 0.884 |
| 299 | 0.592 | 1.237 | 1.324 | 0.580 | 0.984 | 0.873 |
| 357 | 0.969 | 0.193 | 4.405 | 0.573 | 0.963 | 0.841 |
| 415 | 0.993 | 0.058 | 6.020 | 0.570 | 0.952 | 0.827 |
| 473 | 0.998 | 0.022 | 6.856 | 0.568 | 0.946 | 0.819 |
๊ฐ™์€ ์‹ ํ–‰์˜ ์ฒซ token์—์„œ ๋งˆ์ง€๋ง‰ ๋ฐ˜๋ณต๊นŒ์ง€:
- top-1 ํ™•๋ฅ : 0.333 โ†’ 0.998, entropy: 1.416 โ†’ 0.022 nats, margin: 0.035 โ†’ 6.856.
- WKV RMS ํ‰๊ท : 0.583 โ†’ 0.568; attention shift RMS: 0.989 โ†’ 0.946; FFN shift RMS: 0.884 โ†’ 0.819.
- WKV state cosine์€ 24๊ฐœ ์ธต ํ‰๊ท  0.972 (์ตœ์†Ÿ๊ฐ’ 0.931), ์ƒ๋Œ€ L2 ์ฐจ์ด๋Š” ํ‰๊ท  0.220์ด์—ˆ๋‹ค. raw logit cosine์€ 0.999์˜€์ง€๋งŒ ๋Œ€์นญ KL์€ 2.361 nats๊นŒ์ง€ ์ฆ๊ฐ€ํ–ˆ๋‹ค.
์ฆ‰ ๋ฐ˜๋ณต ์ˆ˜์‹์˜ ํ† ํฐ ์„ ํƒ์€ ์ ์  ๋” ํ™•์‹ ์ ์œผ๋กœ ๋ณ€ํ–ˆ์ง€๋งŒ, state norm์€ ์•ฝ๊ฐ„ ๊ฐ์†Œํ–ˆ๋‹ค. State ๋ฐฉํ–ฅ์€ ์œ ์‚ฌํ•˜๊ฒŒ ์œ ์ง€๋˜๋‚˜ ๋งค ๋ฐ˜๋ณต์—์„œ ์™„์ „ํžˆ ๊ฐ™์€ state๋กœ ๋˜๋Œ์•„์˜ค์ง€๋Š” ์•Š์•˜๋‹ค. ์ด ๊ด€์ธก์€ norm ๋ฐœ์‚ฐ๋ณด๋‹ค ์ถœ๋ ฅ ๋ถ„ํฌ์˜ ํ™•์‹ ๋„ ์ฆ๊ฐ€์™€ ๋ฐ˜๋ณต ์„ ํƒ์˜ ๊ณ ์ฐฉ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
### System prompt ์กฐ๊ฑด์˜ ์˜ค๋ฅ˜ ์˜ˆ
๋ชจ๋ธ์€ `k(ab+1) โ‰ก 0 (mod ab+1)`์—์„œ `k โ‰ก 0 (mod ab+1)`๋ฅผ ๊ฒฐ๋ก ๋‚ด๋ ธ๋‹ค. ์•ž ์‹์€ ๋ชจ๋“  ์ •์ˆ˜ `k`์— ๋Œ€ํ•ด ์„ฑ๋ฆฝํ•˜๋ฏ€๋กœ ๋’ค ๊ฒฐ๋ก ์€ ๋”ฐ๋ผ์˜ค์ง€ ์•Š๋Š”๋‹ค. ๋‹ต์„ ๋ชจ๋ฅด๊ฒ ์œผ๋ฉด ๋ฉˆ์ถ”๋ผ๋Š” system ์ง€์‹œ๋Š” ์‹คํ–‰ ์ข…๋ฃŒ๋ฅผ ์œ ๋ฐœํ•˜์ง€ ์•Š์•˜๋‹ค.
### Repetition penalty ์กฐ๊ฑด์˜ ํ•ด์„
Penalty๋Š” ์ƒ์„ฑ๋œ ํ† ํฐ์˜ ์ ์ˆ˜๋ฅผ ๋ฐ”๊ฟ” ๋™์ผ ๊ตฌ์ ˆ ์žฌํ˜„์„ ์ค„์˜€์ง€๋งŒ, EOS ํ† ํฐ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ refusal์„ ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ถœ๋ ฅ์€ ๋‹ค๋ฅธ ์ž˜๋ชป๋œ ์ฆ๋ช… ๊ฒฝ๋กœ๋กœ ์ด๋™ํ–ˆ๊ณ  512ํ† ํฐ ํ•œ๋„๊นŒ์ง€ ๊ณ„์†๋๋‹ค. ์ด ์กฐ๊ฑด์˜ CSV๋Š” raw logits์™€ penalty ์ ์šฉ ํ›„ scores๋ฅผ ๋ณ„๋„๋กœ ์ €์žฅํ•œ๋‹ค.
## OLMo 2 1B ๋น„๊ต
๋น„๊ต ๋ชจ๋ธ์€ [๊ณต์‹ OLMo 2 1B Instruct ์ฒดํฌํฌ์ธํŠธ](https://huggingface.co/allenai/OLMo-2-0425-1B-Instruct)์ธ `allenai/OLMo-2-0425-1B-Instruct`๋‹ค. revision `48d788eca847d4d7548f375ad03d3c9312f6139e`๋ฅผ ๊ณ ์ •ํ•ด ๋‹ค์šด๋กœ๋“œํ–ˆ์œผ๋ฉฐ, `model.safetensors`๋Š” 2,969,854,224 bytes๋‹ค. ๋ชจ๋ธ ์นด๋“œ์— ์ฃผ ์–ธ์–ด๊ฐ€ ์˜์–ด๋กœ ํ‘œ์‹œ๋œ ๋ชจ๋ธ์— ํ•œ๊ตญ์–ด prompt๋ฅผ ๋„ฃ์€ ์‹คํ—˜์ด๋ฏ€๋กœ, ์•„๋ž˜ ๋น„๊ต๋Š” ์ด ํ•œ๊ตญ์–ด ๋ฌธ์ œ์— ํ•œ์ •ํ•ด์„œ ํ•ด์„ํ•ด์•ผ ํ•œ๋‹ค.
๊ฐ™์€ ํ•œ๊ตญ์–ด ๋ฌธ์ œ์™€ system ๋ฉ”์‹œ์ง€, greedy, `max_new_tokens=512`, BF16์„ ์‚ฌ์šฉํ–ˆ๋‹ค. OLMo ์ž…๋ ฅ์€ ๋ชจ๋ธ์˜ chat template๋กœ ๋งŒ๋“ค์—ˆ๊ณ , prompt ๊ธธ์ด๋Š” baseline 75ํ† ํฐ, system ํฌํ•จ 138ํ† ํฐ์ด์—ˆ๋‹ค. OLMo EOS๋Š” tokenizer์˜ `<|endoftext|>` (`100257`)๋กœ ์„ค์ •ํ–ˆ๋‹ค. ๋ฐ˜๋ณต ํŒจ๋„ํ‹ฐ ์กฐ๊ฑด์—์„œ๋Š” `repetition_penalty=1.1`์„ ์ ์šฉํ–ˆ๋‹ค.
| OLMo ์กฐ๊ฑด | ํ† ํฐ | ์ตœ์žฅ ๋ฐ˜๋ณต n-gram (์‹œ์ž‘โ†’์žฌ๋“ฑ์žฅ) | rolling 8-gram ํ‰๊ท  / peak | raw logits ํ‰๊ท  top-1 / entropy | EOS / ๊ฑฐ์ ˆ ๋ฌธ๊ตฌ |
|---|---:|---|---:|---:|---|
| Greedy baseline | 512 | 21 (33โ†’109) | 0.056 / 0.491 | 0.782 / 0.880 | ์—†์Œ / ์—†์Œ |
| System ๋ฉ”์‹œ์ง€ | 512 | 40 (302โ†’344) | 0.102 / 0.386 | 0.850 / 0.666 | ์—†์Œ / ์—†์Œ |
| System + repetition penalty 1.1 | 512 | 23 (217โ†’310) | 0.024 / 0.246 | 0.806 / 0.791 | ์—†์Œ / ์—†์Œ |
์„ธ ์ถœ๋ ฅ ๋ชจ๋‘ 512ํ† ํฐ ํ•œ๋„๊นŒ์ง€ ์ƒ์„ฑ๋๋‹ค. baseline์€ ์ •์ˆ˜๋ผ๋Š” ์กฐ๊ฑด์„ `a,b โˆˆ {โˆ’1,1}`์ฒ˜๋Ÿผ ์ž˜๋ชป ํ•ด์„ํ•˜๊ณ  ์‹์„ ๋ฐ˜๋ณตํ–ˆ๋‹ค. system ๋ฉ”์‹œ์ง€ ์กฐ๊ฑด์€ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š” ์ธ์ˆ˜๋ถ„ํ•ด๋ฅผ ์ „์ œ๋กœ ๊ฒฐ๋ก ์„ ๋ฐ€์–ด๋ถ™์˜€๋‹ค. repetition penalty ์กฐ๊ฑด์€ `๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค`๋กœ ๋ฉˆ์ถ”์ง€ ์•Š์•˜๊ณ , ๊ฑฐ๋“ญ์ œ๊ณฑ ํ‘œ๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ž˜๋ชป๋œ ์ฆ๋ช…์„ ๋งŒ๋“ค์—ˆ๋‹ค.
OLMo ์•ˆ์—์„œ system-only์™€ penalty ์กฐ๊ฑด์„ ๋น„๊ตํ•˜๋ฉด ํ‰๊ท  rolling ์ค‘๋ณต 8-gram ๋น„์œจ์€ 0.102์—์„œ 0.024๋กœ ์•ฝ 77% ๊ฐ์†Œํ–ˆ๊ณ , peak๋Š” 0.386์—์„œ 0.246์œผ๋กœ ์•ฝ 36% ๊ฐ์†Œํ–ˆ๋‹ค. ์ตœ์žฅ ๋™์ผ token span๋„ 40์—์„œ 23ํ† ํฐ์œผ๋กœ ์งง์•„์กŒ๋‹ค. ๋ฐ˜๋ณต์€ ์™„ํ™”๋์ง€๋งŒ ๋‹ต์˜ ์ •ํ™•์„ฑ๊ณผ ์ข…๋ฃŒ๋Š” ๊ฐœ์„ ๋˜์ง€ ์•Š์•˜๋‹ค. penalty ์กฐ๊ฑด์—์„œ raw logits ํ‰๊ท  top-1/entropy๋Š” 0.806/0.791์ด๊ณ , penalty ์ ์šฉ ํ›„๋Š” 0.774/1.048์ด์—ˆ๋‹ค. ์ฆ‰ penalty๊ฐ€ ํ† ํฐ ๋ถ„ํฌ๋ฅผ ๋” ํ‰ํ‰ํ•˜๊ฒŒ ํ–ˆ์œผ๋‚˜ ์ƒ์„ฑ ์ข…๋ฃŒ๋ฅผ ์œ ๋„ํ•˜์ง€๋Š” ์•Š์•˜๋‹ค.
### ๋‘ ๋ชจ๋ธ์˜ ๊ด€์ฐฐ
| ์กฐ๊ฑด | RWKV ํ‰๊ท  / peak ์ค‘๋ณต๋ฅ  | OLMo ํ‰๊ท  / peak ์ค‘๋ณต๋ฅ  | ์ตœ์žฅ ๋™์ผ token span (RWKV / OLMo) |
|---|---:|---:|---:|
| Greedy baseline | 0.099 / 0.263 | 0.056 / 0.491 | 57 / 21 |
| System ๋ฉ”์‹œ์ง€ | 0.063 / 0.316 | 0.102 / 0.386 | 64 / 40 |
| System + penalty 1.1 | 0.028 / 0.175 | 0.024 / 0.246 | 19 / 23 |
๊ฐ ๋ชจ๋ธ ๋‚ด์—์„œ ๋ณด๋ฉด repetition penalty 1.1์ด ์„ธ ์กฐ๊ฑด์˜ ํ‰๊ท  ๋ฐ˜๋ณต๋ฅ ์„ ๋‚ฎ์ท„์ง€๋งŒ, ๋‘ ๋ชจ๋ธ ๋ชจ๋‘ EOS ์—†์ด ํ•œ๋„๊นŒ์ง€ ์ถœ๋ ฅํ–ˆ๋‹ค. baseline์˜ OLMo ํ‰๊ท  ์ค‘๋ณต๋ฅ ์€ RWKV๋ณด๋‹ค ๋‚ฎ์•˜์œผ๋‚˜, ์งง์€ ๊ตฌ๊ฐ„ peak๋Š” ๋” ๋†’์•˜๋‹ค. ๋”ฐ๋ผ์„œ ๋‹จ์ผ ๋ฐ˜๋ณต๋ฅ  ์ˆ˜์น˜๋งŒ์œผ๋กœ ์–ด๋А ๋ชจ๋ธ์ด ๋” loop์— ์ทจ์•ฝํ•˜๋‹ค๊ณ  ๊ฒฐ๋ก ๋‚ด๋ฆฌ๊ธฐ ์–ด๋ ต๋‹ค.
์ฃผ์˜ํ•  ์ ์€ ๋‘ ๋ชจ๋ธ์˜ tokenizer๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. `8-gram`๊ณผ ๋ฐ˜๋ณต span ๊ธธ์ด๋Š” ๋ชจ๋ธ token ๋‹จ์œ„์ด๋ฏ€๋กœ ๋ชจ๋ธ ๊ฐ„ ์ ˆ๋Œ€ ๊ธธ์ด๋ฅผ ์ง์ ‘ ๋น„๊ตํ•˜๋ฉด ์•ˆ ๋œ๋‹ค. ๋™์ผ ๋ชจ๋ธ ๋‚ด ์„ธ ์กฐ๊ฑด์˜ ๋ณ€ํ™”๋Š” ๋น„๊ตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ชจ๋ธ ๊ฐ„ ๋น„๊ต๋Š” ํ…์ŠคํŠธ์˜ ์ค„ยท๋ฌธ์ž ๋‹จ์œ„ ๋ถ„์„๊ณผ ํ•จ๊ป˜ ๋ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ OLMo 2๋Š” Transformer๋ผ RWKV์˜ WKV recurrent state๊ฐ€ ์—†๋‹ค. OLMo์—์„œ๋Š” raw/processed logits์™€ ์ถœ๋ ฅ ๋ฐ˜๋ณต๋„๋ฅผ ๊ธฐ๋กํ–ˆ๊ณ , RWKV state RMS์™€ ๊ฐ™์€ ์ˆ˜์น˜๋ผ๊ณ  ํ•ด์„ํ•  OLMo state norm์€ ๋งŒ๋“ค์ง€ ์•Š์•˜๋‹ค.
## ์˜์–ด system ๋ฉ”์‹œ์ง€ ์ถ”๊ฐ€ ๋น„๊ต
system ์ง€์‹œ์˜ ์–ธ์–ด ํšจ๊ณผ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ๊ฐ™์€ ์˜๋ฏธ์˜ ์˜์–ด ๋ฌธ์žฅ์„ ๋‘ ๋ชจ๋ธ์— ๋„ฃ์–ด ํ•œ ๋ฒˆ์”ฉ ์ถ”๊ฐ€ ์‹คํ–‰ํ–ˆ๋‹ค. ํ•œ๊ตญ์–ด ์ˆ˜ํ•™ prompt, greedy decoding, penalty ์—†์Œ, 512ํ† ํฐ ํ•œ๋„๋Š” ์œ ์ง€ํ–ˆ๋‹ค.
> If you cannot solve the problem or do not know the answer, do not keep guessing. Say โ€œI don't knowโ€ and stop.
| ๋ชจ๋ธ | system ์–ธ์–ด | ์ž…๋ ฅ prompt ํ† ํฐ | ์ตœ์žฅ ๋ฐ˜๋ณต ๊ตฌ๊ฐ„ (step) | ์ค‘๋ณต 8-gram ํ‰๊ท  / peak | raw top-1 ํ‰๊ท  / entropy ํ‰๊ท  | EOS / ๊ฑฐ์ ˆ ๋ฌธ๊ตฌ |
|---|---|---:|---|---:|---:|---|
| RWKV | ํ•œ๊ตญ์–ด | 122 | 64 (75โ†’354) | 0.063 / 0.316 | 0.881 / 0.419 | ์—†์Œ / ์—†์Œ |
| RWKV | ์˜์–ด | 104 | 17 (383โ†’454) | 0.009 / 0.140 | 0.833 / 0.604 | ์—†์Œ / ์—†์Œ |
| OLMo 2 1B | ํ•œ๊ตญ์–ด | 138 | 40 (302โ†’344) | 0.102 / 0.386 | 0.850 / 0.666 | ์—†์Œ / ์—†์Œ |
| OLMo 2 1B | ์˜์–ด | 108 | 34 (423โ†’462) | 0.098 / 0.404 | 0.898 / 0.401 | ์—†์Œ / ์—†์Œ |
RWKV์—์„œ๋Š” ์ด ํ•œ ๋ฒˆ์˜ greedy ์‹คํ–‰์—์„œ ์˜์–ด system ์กฐ๊ฑด์˜ ํ‰๊ท  8-gram ์ค‘๋ณต๋ฅ ์ด 0.063์—์„œ 0.009๋กœ, peak๊ฐ€ 0.316์—์„œ 0.140์œผ๋กœ ๋‚ฎ์•„์กŒ๋‹ค. ์ตœ์žฅ ๋ฐ˜๋ณต span๋„ 64์—์„œ 17ํ† ํฐ์œผ๋กœ ์ค„์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋ธ์€ `I don't know`๋ผ๊ณ  ๋‹ตํ•˜์ง€ ์•Š์•˜๊ณ , `b`๊ฐ€ 1์„ ๋‚˜๋ˆˆ๋‹ค๊ณ  ์ž˜๋ชป ๊ฒฐ๋ก ๋‚ธ ๋’ค ์ž˜๋ชป๋œ ์ฆ๋ช…์„ ์ด์–ด๊ฐ”๋‹ค. raw logits์˜ top-1/entropy ํ‰๊ท ์€ 0.881/0.419์—์„œ 0.833/0.604๋กœ ๋ฐ”๋€Œ์—ˆ๊ณ , ๋งˆ์ง€๋ง‰ top-1/entropy๋Š” 0.9999/0.0014์—์„œ 0.9256/0.4040์œผ๋กœ ๋‚ฎ์•„์กŒ๋‹ค. WKV RMS ํ‰๊ท ์€ ํ•œ๊ตญ์–ด system์˜ 0.582์—์„œ ์˜์–ด system์˜ 0.585๋กœ ๊ฑฐ์˜ ๊ฐ™์•˜๊ณ , ๋งˆ์ง€๋ง‰ RMS๋„ 0.577์—์„œ 0.590์œผ๋กœ norm ํญ๋ฐœ์€ ์—†์—ˆ๋‹ค.
OLMo์—์„œ๋Š” ํ‰๊ท  ์ค‘๋ณต๋ฅ ์ด 0.102์—์„œ 0.098๋กœ ๊ฑฐ์˜ ๊ฐ™์•˜๊ณ , peak๋Š” 0.386์—์„œ 0.404๋กœ ์กฐ๊ธˆ ๋†’์•„์กŒ๋‹ค. ์ตœ์žฅ ๋ฐ˜๋ณต ๊ตฌ๊ฐ„์€ 40์—์„œ 34ํ† ํฐ์œผ๋กœ ์งง์•„์กŒ์ง€๋งŒ ๋” ๋’ค์ธ step 423์—์„œ ๋‹ค์‹œ ๋‚˜ํƒ€๋‚ฌ๋‹ค. ์˜์–ด system ์กฐ๊ฑด์—์„œ๋Š” ํ‰๊ท  raw entropy๊ฐ€ 0.666์—์„œ 0.401๋กœ ๋‚ฎ์•„์กŒ์œผ๋‚˜, ๋งˆ์ง€๋ง‰ ํ† ํฐ ๋ถ€๊ทผ์€ top-1 0.638 / entropy 1.640์œผ๋กœ ์˜คํžˆ๋ ค ๋ถˆํ™•์‹คํ–ˆ๋‹ค. ์ถœ๋ ฅ์€ ์ž˜๋ชป๋œ ๋Œ€์ˆ˜ ์ „๊ฐœ์™€ ๊ตฌ์ ˆ ๋ฐ˜๋ณต์œผ๋กœ ๋๋‚ฌ๊ณ  ๊ฑฐ์ ˆ ๋ฌธ๊ตฌ๋Š” ์—†์—ˆ๋‹ค.
์ด๋Š” ๊ฐ ์„ค์ •์„ ํ•œ ๋ฒˆ์”ฉ greedy๋กœ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋‹ค. system์˜ ์˜๋ฏธ๋Š” ๋งž์ท„์ง€๋งŒ ์˜์–ด ๋ฒˆ์—ญ์€ ํ† ํฐ ๊ธธ์ด์™€ ๋ฌธ๊ตฌ๊ฐ€ ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ, ์ด ์ฐจ์ด๋งŒ์œผ๋กœ system ์–ธ์–ด์˜ ์ผ๋ฐ˜์ ์ธ ํšจ๊ณผ๋ผ๊ณ  ๋‹จ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. RWKV/OLMo์˜ tokenizer๋„ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค. ํ† ํฐ ๋ฐ˜๋ณต ์ˆ˜์น˜๋Š” ๊ฐ ๋ชจ๋ธ ์•ˆ์˜ ํ•œ๊ตญ์–ด/์˜์–ด system ์กฐ๊ฑด ๋น„๊ต์— ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
## 256ํ† ํฐ๋งˆ๋‹ค ๋Š๋Š” ์‚ฌ์šฉ๋Ÿ‰ ์•Œ๋ฆผ harness
์ด์ „ ์˜์–ด system ๋ฉ”์‹œ์ง€์™€ ํ•œ๊ตญ์–ด ์ˆ˜ํ•™ ๋ฌธ์ œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘๊ณ , repetition penalty ์—†์ด ์‘๋‹ต ์˜ˆ์‚ฐ์„ 2,048ํ† ํฐ์œผ๋กœ ๋Š˜๋ ธ๋‹ค. ๋งค 256๊ฐœ์˜ ์ƒ์„ฑ ์‘๋‹ต ํ† ํฐ๋งˆ๋‹ค generation์„ ์ค‘๋‹จํ•˜๊ณ , ๋‹ค์Œ user turn์— ๋ˆ„์  ํ† ํฐ ์ˆ˜์™€ โ€œ์ด์ „ ๋‚ด์šฉ์„ ๋ฐ˜๋ณตํ•˜์ง€ ๋ง๊ณ  ์ด์–ด์„œ ๋‹ตํ•˜๋ผโ€๋Š” ์•ˆ๋‚ด๋ฅผ ๋„ฃ์–ด ์žฌ๊ฐœํ–ˆ๋‹ค. ๋ชจ๋ธ์€ ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰ ์•Œ๋ฆผ์„ 256, 512, โ€ฆ, 1,792์—์„œ 7ํšŒ ๋ฐ›์•˜๋‹ค. controller ๋กœ๊ทธ์—๋Š” ๋งˆ์ง€๋ง‰ 2,048/2,048 checkpoint๋„ ๊ธฐ๋กํ–ˆ๋‹ค.
| ๋ชจ๋ธ | ์‘๋‹ต ์ƒ์„ฑ๋Ÿ‰ | chunk / ์•Œ๋ฆผ | ์•Œ๋ฆผ๋ฌธ ๋‚ด์šฉ ํ† ํฐ | ๊ฐ chunk ์ž…๋ ฅ ๋ฌธ๋งฅ ํ† ํฐ ์ˆ˜ | ๋ˆ„์  ์žฌ์ž…๋ ฅ ๋ฌธ๋งฅ ํ† ํฐ | EOS / ๊ฑฐ์ ˆ |
|---|---:|---:|---:|---|---:|---|
| RWKV | 2,048 | 8 / 7 | 525 | 104, 442, 780, 1,118, 1,456, 1,794, 2,132, 2,470 | 10,296 | ์—†์Œ / ์—†์Œ |
| OLMo 2 1B | 2,048 | 8 / 7 | 522 | 108, 450, 792, 1,134, 1,477, 1,819, 2,162, 2,505 | 10,447 | ์—†์Œ / ์—†์Œ |
์‘๋‹ต ์ƒ์„ฑ๋Ÿ‰์€ ๋ชจ๋ธ์ด ๋งŒ๋“  assistant token๋งŒ ์„ผ๋‹ค. ์•Œ๋ฆผ๋ฌธ ๋‚ด์šฉ ํ† ํฐ ์ˆ˜๋Š” harness ๋ฌธ์žฅ๋งŒ ํ† ํฐํ™”ํ•œ ๊ฐ’์ด๊ณ  chat-template์˜ role marker๋Š” ์ œ์™ธํ•œ๋‹ค. ๊ฐ chunk ์ž…๋ ฅ ๋ฌธ๋งฅ ํ† ํฐ ์ˆ˜์™€ ๊ทธ ํ•ฉ๊ณ„๋Š” system/user ๋ฉ”์‹œ์ง€, ์ด์ „ assistant ์‘๋‹ต, harness ๋ฉ”์‹œ์ง€๋ฅผ ๋งค ํ˜ธ์ถœ๋งˆ๋‹ค ๋‹ค์‹œ tokenizeํ•ด ๋ชจ๋ธ์— ๋„ฃ์€ ๊ธธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ˆ„์  ์žฌ์ž…๋ ฅ ๋ฌธ๋งฅ ํ† ํฐ์€ ์‘๋‹ต ์ƒ์„ฑ๋Ÿ‰์ด๋‚˜ ์„œ๋น„์Šค ์ฒญ๊ตฌ๋Ÿ‰๊ณผ ๋‹ค๋ฅธ ๊ณ„์ธก์น˜๋‹ค.
| ๋ชจ๋ธ | ์ตœ์žฅ ๋ฐ˜๋ณต span (step) | rolling 8-gram ํ‰๊ท  / peak | raw top-1 ํ‰๊ท  / entropy ํ‰๊ท  | chunk ์ฒซ ํ† ํฐ top-1 / entropy | chunk ๋‚ด๋ถ€ top-1 / entropy | state RMS |
|---|---|---:|---:|---:|---:|---|
| RWKV | 1,024 (1โ†’1,025) | 0.017 / 0.140 | 0.971 / 0.119 | 0.486 / 2.714 | 0.972 / 0.109 | WKV ํ‰๊ท  0.568, ๋งˆ์ง€๋ง‰ 0.558 |
| OLMo 2 1B | 184 (1,281โ†’1,793) | 0.037 / 0.404 | 0.854 / 0.514 | 0.391 / 2.763 | 0.856 / 0.505 | ํ•ด๋‹น ์—†์Œ |
RWKV์˜ ์—ฌ๋Ÿ assistant chunk๋Š” token ID ๋‹จ์œ„๋กœ ๋ชจ๋‘ ๊ฐ™์•˜๋‹ค. ์ฆ‰ โ€œ์ด์ „ ๋ฌธ์žฅ์„ ๋ฐ˜๋ณตํ•˜์ง€ ๋ง๋ผโ€๋Š” ์•ˆ๋‚ด ๋’ค์—๋„ ๋งค๋ฒˆ ์ฒซ chunk๋ฅผ ๋‹ค์‹œ ๋ƒˆ๊ณ , 1โ€“1,024 ํ† ํฐ ๊ตฌ๊ฐ„ ์ „์ฒด๊ฐ€ 1,025โ€“2,048์—์„œ ์žฌํ˜„๋๋‹ค. ์ค‘๋‹จ ์งํ›„ chunk ์ฒซ ํ† ํฐ์—์„œ๋Š” top-1์ด ํ‰๊ท  0.486์ด๊ณ  entropy๊ฐ€ 2.714์˜€์ง€๋งŒ, chunk ๋‚ด๋ถ€์—์„œ๋Š” 0.972์™€ 0.109๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค. WKV RMS ํ‰๊ท ์€ 0.568, ๋งˆ์ง€๋ง‰์€ 0.558๋กœ norm ๋ฐœ์‚ฐ์€ ๋ณด์ด์ง€ ์•Š์•˜๋‹ค.
OLMo๋Š” ๋งค chunk๋งˆ๋‹ค ๋‹ต์„ ์กฐ๊ธˆ์”ฉ ๋ฐ”๊พธ์—ˆ์ง€๋งŒ, ์ˆ˜ํ•™์ ์œผ๋กœ ํ‹€๋ฆฐ ์ „๊ฐœ๋ฅผ ์ด์–ด๊ฐ”๋‹ค. ๋งˆ์ง€๋ง‰ ๋‘ chunk ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ โ€œLet's revisit the equationโ€ฆโ€์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” 184-token ๊ตฌ๊ฐ„์„ ๋ฐ˜๋ณตํ–ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ํ† ํฐ์€ raw top-1 0.99998 / entropy 0.00023์œผ๋กœ ๋งค์šฐ ํ™•์‹ ์ ์ด์—ˆ์œผ๋ฉฐ, EOS๋‚˜ โ€œI don't knowโ€๋Š” ์ถœ๋ ฅํ•˜์ง€ ์•Š์•˜๋‹ค.
์ด harness๋Š” ์ด์ „ assistant chunk๋ฅผ ์™„๋ฃŒ๋œ turn์œผ๋กœ ๋„ฃ๊ณ , usage update๋ฅผ ์ƒˆ๋กœ์šด user turn์œผ๋กœ ์ถ”๊ฐ€ํ•œ ๋’ค **์ „์ฒด ๋Œ€ํ™” ๋ฌธ๋งฅ์„ ๋งค chunk๋งˆ๋‹ค ๋‹ค์‹œ ์ž…๋ ฅ**ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ cache/state๋ฅผ ๋ณด์กดํ•œ ์ฑ„ ์™ธ๋ถ€์—์„œ ์ž ๊น ๋ฉˆ์ถ”๋Š” passive streaming ์‹คํ—˜์ด ์•„๋‹ˆ๋ผ, ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰ ์•ˆ๋‚ด๋ฅผ ๋ฐ›์œผ๋ฉฐ ๋Œ€ํ™”๋ฅผ ์ด์–ด๊ฐ€๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋‹ค. ์‘๋‹ต ํ† ํฐ ์ˆ˜์™€ ์žฌ์ž…๋ ฅ ๋ฌธ๋งฅ ์ˆ˜๋ฅผ ๋ถ„๋ฆฌํ•ด ๊ธฐ๋กํ–ˆ๋‹ค.
## ์˜์–ด ๊ฒฉ์ž ๋ฌธ์ œ sampled pass@10
์‚ฌ์šฉ์ž๊ฐ€ ์ œ์‹œํ•œ ์˜์–ด 2ร—3 ๊ฒฉ์ž ๋ฌธ์ œ๋ฅผ ๋„ค ๋ชจ๋ธ์— ๊ฐ๊ฐ 10๊ฐœ์˜ ๋…๋ฆฝ ์ƒ˜ํ”Œ๋กœ ์ž…๋ ฅํ–ˆ๋‹ค. ๊ฐ ์ž…๋ ฅ์€ ๋ชจ๋ธ๋ณ„ chat template๋ฅผ ๊ฑฐ์นœ ๋‹จ์ผ user ๋ฉ”์‹œ์ง€์ด๊ณ  system ๋ฉ”์‹œ์ง€๋Š” ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜๋‹ค. Qwen3.5๋Š” Base ์ฒดํฌํฌ์ธํŠธ์ด๋ฉฐ, ๋Œ€ํ™” ์ž…๋ ฅ ํ˜•์‹์€ ๋ชจ๋ธ tokenizer์˜ template๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ์ƒ˜ํ”Œ๋ง ์„ค์ •์€ do_sample=true, temperature=1.0, top_p=0.95, top_k ์—†์Œ, repetition penalty 1.0, seed 260928โ€“260937, ์ตœ๋Œ€ ์ƒˆ ํ† ํฐ 4096์ด๋‹ค. ํ‘œ๋ณธ์€ ์ˆœ์ฐจ ์‹คํ–‰ํ–ˆ๋‹ค.
RWKV ์ฒดํฌํฌ์ธํŠธ๋Š” ๊ฐ๊ฐ RWKV 1.5B revision 2c18b29ab7fbece25ff6112281eea0fa41fcb30f์™€ RWKV 2.9B revision c6202c9e1b5de80640fa487b112da621067967ad๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. OLMo 2 1B Instruct๋Š” revision 48d788eca847d4d7548f375ad03d3c9312f6139e, [Qwen/Qwen3.5-2B-Base](https://huggingface.co/Qwen/Qwen3.5-2B-Base)๋Š” revision b1485b2fa6dfa1287294f269f5fb618e03d52d7c๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ฐ sample ๋””๋ ‰ํ† ๋ฆฌ์— ์‹ค์ œ prompt, ๋ชจ๋ธ revision, seed, ์„ค์ •, ์ƒ์„ฑ transcript์™€ ํ† ํฐ๋ณ„ ์ง€ํ‘œ๊ฐ€ ์žˆ๋‹ค.
๋ฌธ์ œ์˜ ์ •๋‹ต์€ **45**๋‹ค. ๊ฒฉ์ž๋ฅผ a b c / d e f๋กœ ์“ฐ๋ฉด ๊ฐ€๋กœํ•ฉ์€ 100(a+d)+10(b+e)+(c+f)=999๋‹ค. ๊ฐ ๊ด„ํ˜ธ์˜ ํ•ฉ์€ 0โ€“18์ด๋ฏ€๋กœ ๊ฐ ์ž๋ฆฌ์Œ์€ 9์—ฌ์•ผ ํ•œ๋‹ค. ์œ„ ํ–‰์˜ ์ˆซ์ž ํ•ฉ์„ S=a+b+c๋ผ ํ•˜๋ฉด ์•„๋ž˜ ํ–‰ ํ•ฉ์€ 27โˆ’S์ด๊ณ , ์„ธ๋กœํ•ฉ ์กฐ๊ฑด์€ 10S+(27โˆ’S)=99์ด๋ฏ€๋กœ S=8์ด๋‹ค. ํ•ฉ์ด 8์ธ ์„ธ ์ž๋ฆฌ ์ˆซ์ž ์กฐํ•ฉ์€ C(10,2)=45๊ฐœ์ด๋ฉฐ, ๊ฐ ์œ„ ํ–‰์€ ์•„๋ž˜ ํ–‰์„ ์นธ๋ณ„๋กœ 9์—์„œ ๋บ€ ๊ฐ’์œผ๋กœ ์œ ์ผํ•˜๊ฒŒ ์ •ํ•œ๋‹ค. ์˜ˆ์‹œ์˜ 0์ฒ˜๋Ÿผ ์„ ํ–‰ 0๋„ ํ—ˆ์šฉํ–ˆ๋‹ค.
| ๋ชจ๋ธ | ์ •๋‹ต ์ƒ˜ํ”Œ | ๊ฒฝํ—˜์  pass@1 | ๊ด€์ธก pass@10 | ํ‰๊ท  ์ƒ์„ฑ ํ† ํฐ | ์ข…๋ฃŒ: EOS / loop / token cap |
|---|---:|---:|---:|---:|---:|
| RWKV 1.5B | 0/10 | 0.0 | 0 | 368.2 | 10 / 0 / 0 |
| RWKV 2.9B | 0/10 | 0.0 | 0 | 644.1 | 10 / 0 / 0 |
| OLMo 2 1B Instruct | 0/10 | 0.0 | 0 | 804.3 | 10 / 0 / 0 |
| Qwen3.5 2B Base | 0/10 | 0.0 | 0 | 4096.0 | 0 / 0 / 10 |
| ๋ชจ๋ธ | ํ‰๊ท  raw entropy (nats) | ํ‰๊ท  WKV RMS |
|---|---:|---:|
| RWKV 1.5B | 0.9860 | 0.5716 |
| RWKV 2.9B | 0.6245 | 0.3494 |
| OLMo 2 1B Instruct | 0.4801 | ํ•ด๋‹น ์—†์Œ |
| Qwen3.5 2B Base | 0.6925 | ํ•ด๋‹น ์—†์Œ |
Entropy๋Š” ๊ฐ ํ‘œ๋ณธ ์•ˆ์—์„œ ํ† ํฐ๋ณ„ ํ‰๊ท ์„ ๋‚ธ ๋’ค ๋‹ค์‹œ ํ‘œ๋ณธ ํ‰๊ท ์„ ์ทจํ–ˆ๋‹ค. Tokenizer์™€ ๋ชจ๋ธ ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฅด๋ฏ€๋กœ ๋ชจ๋ธ ๊ฐ„ entropy ์ ˆ๋Œ€๊ฐ’์€ ์ง์ ‘์ ์ธ ํ’ˆ์งˆ ์ˆœ์œ„๊ฐ€ ์•„๋‹ˆ๋‹ค. WKV RMS๋Š” RWKV recurrent state์—์„œ๋งŒ ์ •์˜๋œ๋‹ค. ํ•œ ๋ฌธ์ œ์—์„œ n=k=10์ด๋ฏ€๋กœ ๊ด€์ธก pass@10์€ ํ•˜๋‚˜๋ผ๋„ ๋งž์•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 0/1์ด๋ฉฐ, ๋„ค ๋ชจ๋ธ ๋ชจ๋‘ 0/10์ด๋‹ค.
RWKV 1.5B, RWKV 2.9B, OLMo 2์˜ ํ˜„์žฌ 30๊ฐœ transcript์™€ token_metrics.csv๋Š” ๋ณด๊ด€๋œ ์ฒซ ๋ฐฐ์น˜์˜ ๋Œ€์‘ ํŒŒ์ผ๊ณผ ๋ชจ๋‘ SHA-256์ด ์ผ์น˜ํ–ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋ณด๊ด€ ๋ฐฐ์น˜๋ฅผ ์ด์ค‘ ์ด์Šค์ผ€์ดํ”„ ํ”„๋กฌํ”„ํŠธ๋กœ ์ž˜๋ชป ํŒ์ •ํ–ˆ์œผ๋‚˜, ์‹ค์ œ ์ €์žฅ๋œ prompt์™€ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™๋‹ค๋Š” ํ™•์ธ ๋’ค ๊ทธ ํŒ์ •์„ ์ทจ์†Œํ–ˆ๋‹ค. ๋ณด๊ด€ ํด๋” ์ด๋ฆ„์€ archived_first_pass_duplicate_outputs๋กœ ์ •์ •ํ–ˆ์œผ๋ฉฐ, ์ค‘๋ณต ํ‘œ๋ณธ์œผ๋กœ ์ง‘๊ณ„ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ฒซ ๋ฐฐ์น˜๋ฅผ ์ž˜๋ชป๋œ ์ž…๋ ฅ์œผ๋กœ ์ œ์™ธํ•˜๋Š” ์ผ์€ ์—†๋‹ค.
Qwen์€ 10๊ฐœ ํ‘œ๋ณธ ๋ชจ๋‘ EOS๋‚˜ loop stop ๋Œ€์‹  4096-token ์ƒ์„ฑ ์ƒํ•œ์— ๋„๋‹ฌํ–ˆ๋‹ค. ํ‰๊ท  ์‹คํ–‰ ์‹œ๊ฐ„์€ ํ‘œ๋ณธ๋‹น ์•ฝ 215์ดˆ์˜€๋‹ค. transcript๋Š” ๊ฒฉ์ž ํ•ด์„์„ ๋˜ํ’€์ดํ•ด ๊ฒ€ํ† ํ–ˆ์ง€๋งŒ, ์–ด๋А ํ‘œ๋ณธ๋„ 45๋ฅผ ๋‹ต์œผ๋กœ ์ œ์‹œํ•˜์ง€ ์•Š์•˜๋‹ค. ๊ณต์‹ ๋ชจ๋ธ ์„ค์ •์˜ text context๋Š” 262,144 ํ† ํฐ์ด๋ฏ€๋กœ ์ด ์‹คํ–‰์—์„œ ์ž˜๋ฆฐ ์›์ธ์€ context cap์ด ์•„๋‹ˆ๋ผ ์š”์ฒญํ•œ ์ƒˆ ํ† ํฐ ์ƒํ•œ์ด๋‹ค. ์„ ํƒ์  causal-conv1d ๋ฐ flash-linear-attention ์ปค๋„์ด ์„ค์น˜๋˜์ง€ ์•Š์•„ ์ฐธ์กฐ PyTorch ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ์‹คํ–‰์€ ์ •์ƒ ์™„๋ฃŒ๋์œผ๋ฉฐ, ์ด ๊ฒฝ๋กœ๊ฐ€ Qwen ์ƒ˜ํ”Œ ์ƒ์„ฑ ์‹œ๊ฐ„์„ ๋Š˜๋ ธ๋‹ค.
๋ฐ˜๋ณต ๊ฐ์ง€๊ธฐ๋Š” ๋งค 4ํ† ํฐ๋งˆ๋‹ค ํ™•์ธํ–ˆ๋‹ค. prompt์— ์ด๋ฏธ ์žˆ๋Š” ๊ตฌ์ ˆ์„ ์ œ์™ธํ•˜๊ณ  96/64-token span์ด ํ•œ ๋ฒˆ ๋” ๋‚˜์˜ค๊ฑฐ๋‚˜, 48/32-token span์ด ์„ธ ๋ฒˆ ๋‚˜ํƒ€๋‚˜๊ฑฐ๋‚˜, ๊ธธ์ด 8โ€“47์˜ ๋™์ผ ์ฃผ๊ธฐ๊ฐ€ ์„ธ ๋ฒˆ ์—ฐ์† ๋‚˜ํƒ€๋‚˜๊ฑฐ๋‚˜, ์ตœ๊ทผ 64ํ† ํฐ์˜ ์ค‘๋ณต 8-gram ๋น„์œจ์ด 0.55 ์ด์ƒ์ธ ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์—ฐ์† ๋‘ ๋ฒˆ์ด๋ฉด ํ•ด๋‹น ํ‘œ๋ณธ์„ ๋ฉˆ์ถ˜๋‹ค. ์ด ๊ธฐ์ค€์—์„œ **40๊ฐœ ํ‘œ๋ณธ ์ค‘ loop ์ž๋™ ์ข…๋ฃŒ๋Š” 0๊ฑด**์ด๋‹ค. RWKV/OLMo 30๊ฐœ๋Š” EOS, Qwen 10๊ฐœ๋Š” token cap์œผ๋กœ ๋๋‚ฌ๋‹ค. ์ด ๊ฒฐ๊ณผ๋Š” ์ •ํ•œ ์ž„๊ณ„๊ฐ’์˜ ํƒ์ง€ ๊ฒฐ๊ณผ์ด๋ฉฐ, ๋ฐ˜๋ณต์ ์ธ ๋ฌธ์žฅ ์ „๊ฐœ๊ฐ€ ์—†์—ˆ๋‹ค๋Š” ๋œป์€ ์•„๋‹ˆ๋‹ค.
์ดˆ๊ธฐ looser detector๋Š” RWKV 2.9B sample 2์˜ ์˜ˆ์‹œ ๊ฒฉ์ž ๋ฌธ๊ตฌ์™€ OLMo sample 4์˜ ์ฝ”๋“œ ๋ฌธ๊ตฌ๋ฅผ loop๋กœ ์˜ค์ธํ–ˆ๋‹ค. ๋‘ span์€ ๊ฐ๊ฐ 1608โ†’2065, 456โ†’837์—์„œ ๋‹ค์‹œ ๋‚˜์™”์œผ๋‚˜ ๊ทธ ์‚ฌ์ด rolling duplicate 8-gram ๋น„์œจ์€ 0์ด์—ˆ๋‹ค. ๊ฐ™์€ seed๋ฅผ ํ˜„์žฌ ๊ฐ์ง€ ๊ธฐ์ค€์œผ๋กœ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ RWKV๋Š” 2180ํ† ํฐ, OLMo๋Š” 1321ํ† ํฐ์—์„œ EOS๋กœ ์ข…๋ฃŒํ–ˆ๋‹ค. ์ด ๋‘ ์ดˆ๊ธฐ threshold ์˜คํƒ์€ pass@10 ์ง‘๊ณ„์—์„œ ์ œ์™ธํ•˜๊ณ  initial_loose_detector_false_positives์— ๋ณด๊ด€ํ–ˆ๋‹ค.
๋ชจ๋“  ๋„ค ๋ชจ๋ธ์˜ 40๊ฐœ transcript๋ฅผ ๋‹ต ๊ธฐ์ค€์œผ๋กœ ๊ฒ€ํ† ํ–ˆ๋‹ค. ์ •๋‹ต 45 ํ‘œ๋ณธ์€ ์—†์œผ๋ฉฐ, ์ƒ์„ธ ํ‘œ๋ณธ๋ณ„ ํŒ์ •์€ runs/passk_10_sampled_autostop/manual_answer_audit.md์— ๊ธฐ๋กํ–ˆ๋‹ค. Qwen ํ‘œ๋ณธ์€ 4096ํ† ํฐ์—์„œ ๋‹ต๋ณ€ ์ค‘๊ฐ„์— ์ž˜๋ฆด ์ˆ˜ ์žˆ์–ด, ๊ฐ ์ตœ์ข… 550์ž์™€ 45 ์–ธ๊ธ‰ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ–ˆ๋‹ค. ์ž๋™ grader๋Š” ๋‹ต ํ‘œํ˜„ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ manual review์™€ ํ•จ๊ป˜ ํ•ด์„ํ–ˆ๋‹ค.
![๋„ค ๋ชจ๋ธ์˜ ํ‘œ๋ณธ๋ณ„ ์‘๋‹ต ๊ธธ์ด์™€ ์ข…๋ฃŒ ์‚ฌ์œ ](runs/passk_10_sampled_autostop/sample_lengths_and_stops.png)
๊ฐ ํ‘œ๋ณธ์˜ token_metrics.csv์—๋Š” ์›์‹œ logits, ์ƒ˜ํ”Œ๋ง ์ฒ˜๋ฆฌ logits, ํ† ํฐ๋ณ„ ๋ฐ˜๋ณต๋ฅ ์ด ์žˆ๋‹ค. RWKV์—๋Š” ๊ฐ ์ธต์˜ WKV/attention-shift/FFN-shift RMS์™€ ๋ณ€ํ™”๋Ÿ‰๋„ ๊ธฐ๋กํ–ˆ๋‹ค. ์ด๋ฒˆ ๋„ค ๋ชจ๋ธ 40๊ฐœ run์—์„œ ์ตœ์ข… ๊ฐ์ง€ ๊ทœ์น™์œผ๋กœ ์žกํžŒ loop span์€ ์—†๋‹ค. ๋А์Šจํ•œ ๊ธฐ์ค€์œผ๋กœ ์ธํ•œ ๋‘ ์˜คํƒ์˜ transcript์™€ ๋น„๊ต ๊ทธ๋ž˜ํ”„๋Š” ๋ณ„๋„ ํด๋”์— ๋‚จ๊ฒจ ๋‘์—ˆ๋‹ค.
## ํŒŒ์ผ ๊ตฌ์„ฑ
- run_manifest.json: ๋ชจ๋ธ revision, ํ™˜๊ฒฝ, ๊ณตํ†ต prompt์™€ ์ƒ์„ฑ ์„ค์ •
- ๊ฐ run ๋””๋ ‰ํ† ๋ฆฌ์˜ run_config.json: sample๋ณ„ ์‹ค์ œ ์ž…๋ ฅ, generation ์„ค์ •, ๊ฐ์ง€ ์ •์ฑ…
- runs/00_exploratory_sampler_screening.md: ์‚ฌ์ „ ์งง์€ prompt/sampler ํ™•์ธ
- comparison.csv ๋ฐ comparison_all_models.csv: ์ด์ „ controlled runs ๋น„๊ต
- english_system_language_comparison.csv ๋ฐ english_system_comparison.json: ์˜์–ด system ์ถ”๊ฐ€ ์‹คํ–‰ ๋น„๊ต
- periodic_harness_comparison.csv, periodic_harness_events.csv, periodic_harness_comparison.json: ์ฃผ๊ธฐ์  2,048-token harness ๋น„๊ต
- models/OLMo-2-0425-1B-Instruct/: ๊ณ ์ • revision OLMo model๊ณผ tokenizer
- models/RWKV7-G1j-2.9B-20260831/: RWKV ๊ณต์‹ 2.9B ์ฒดํฌํฌ์ธํŠธ, ๊ณ ์ • revision
- models/Qwen3.5-2B-Base/: Qwen ๊ณต์‹ Base ์ฒดํฌํฌ์ธํŠธ, ๊ณ ์ • revision b1485b2fa6dfa1287294f269f5fb618e03d52d7c
- runs/11_rwkv_1_5b_pass10_sampled_autostop/: RWKV 1.5B sample 10๊ฐœ, transcript์™€ logits/state
- runs/12_rwkv_2_9b_pass10_sampled_autostop/: RWKV 2.9B sample 10๊ฐœ, transcript์™€ logits/state
- runs/13_olmo2_1b_pass10_sampled_autostop/: OLMo 2 sample 10๊ฐœ์™€ logits
- runs/14_qwen3_5_2b_base_pass10_sampled_autostop/: Qwen3.5 Base sample 10๊ฐœ์™€ logits
- runs/passk_10_sampled_autostop/passk_summary.csv ๋ฐ passk_summary.json: ๋„ค ๋ชจ๋ธ pass@10 ํ†ต๊ณ„
- runs/passk_10_sampled_autostop/sample_results.csv: 40๊ฐœ ํ‘œ๋ณธ๋ณ„ ์ •๋‹ต flag, ์ข…๋ฃŒ, ํ† ํฐ ์ˆ˜์™€ metrics ์š”์•ฝ
- runs/passk_10_sampled_autostop/manual_answer_audit.md: transcript ์ˆ˜๋™ ์ •๋‹ต ํ™•์ธ
- runs/passk_10_sampled_autostop/experiment_notes.md: ์‹คํ–‰ ์กฐ๊ฑด, prompt ๊ฐ์‚ฌ, ๊ฐ์ง€ ๊ทœ์น™, ๊ฒฐ๊ณผ ์ƒ์„ธ
- runs/passk_10_sampled_autostop/sample_lengths_and_stops.png: ๋„ค ๋ชจ๋ธ๋ณ„ ํ‘œ๋ณธ ๊ธธ์ด์™€ ์ข…๋ฃŒ ์ด์œ 
- runs/passk_10_sampled_autostop/loop_span_comparisons.json: ๊ฐ•ํ™”๋œ ๊ธฐ์ค€์œผ๋กœ ๊ฒ€์ถœ๋œ loop ๋น„๊ต; ์ด๋ฒˆ์—๋Š” ๋น„์–ด ์žˆ์Œ
- runs/passk_10_sampled_autostop/archived_first_pass_duplicate_outputs/: ์ฒซ ๋ฐฐ์น˜์˜ RWKV/OLMo ๊ฒฐ๊ณผ ๋ณต์‚ฌ๋ณธ; ํ˜„์žฌ ํ‘œ๋ณธ๊ณผ transcript ๋ฐ token metrics SHA-256 ์ผ์น˜, ๋ณ„๋„ ์ง‘๊ณ„ํ•˜์ง€ ์•Š์Œ
- runs/passk_10_sampled_autostop/initial_loose_detector_false_positives/: ์ฒซ detector ๊ธฐ์ค€์˜ ์˜คํƒ ๋‘ sample๊ณผ ์‚ฌํ›„ metrics
- scripts/run_passk_sampled_autostop.py: ๋„ค ๋ชจ๋ธ sampled pass@k ์‹คํ–‰, ๋ฐ˜๋ณต ์ž๋™ ์ข…๋ฃŒ์™€ ํ† ํฐ๋ณ„ ๊ณ„์ธก
- scripts/analyze_passk_diagnostics.py: pass@10 ๊ทธ๋ž˜ํ”„์™€ ๋ฐ˜๋ณต span diagnostics ์ƒ์„ฑ
์ด Vast ์ธ์Šคํ„ด์Šค์—์„œ /workspace๋Š” host volume์ด ์•„๋‹ˆ๋ฏ€๋กœ instance recycle/destroy ์‹œ ๋ชจ๋ธ๊ณผ ์‹คํ—˜ ๊ฒฐ๊ณผ๊ฐ€ ์‚ญ์ œ๋œ๋‹ค.