๋ชจ๋ธ๋ช ยท์๋น ์ค์ ยทprefill/decode ์ค์ธก์น๊น์ง ์ ๋ถ ๊ณต๊ฐํฉ๋๋ค
์ง๋ ๊ธ(์ ์ฐฝ)์์ ๊ทธ๋ํฝ์นด๋๋ฅผ 5090์ผ๋ก ๋ฐ๊พผ ์๊ธฐ๋ฅผ ํ์ต๋๋ค. ์ด๋ฒ์ ํจ์ฌ ๋ ํ๊ณ ๋ค์ด์, ์ค์ ๋ก ์ด๋ค ๋ชจ๋ธ์ ์ด๋ค ์ค์ ์ผ๋ก ๋๋ฆฌ๊ณ ์๋์ง, ํ๋์จ์ด๋ณ prefill/decode ์๋๊ฐ ์ ํํ ์ผ๋ง์ธ์ง, ๊ทธ๋ฆฌ๊ณ ์ง๊ธ ์งํ ์ค์ธ ๋ชจ๋ธ ๊ต์ฒด ํ์ ์ ์ค๊ฐ ๊ฒฐ๊ณผ๊น์ง ์ ๋ถ ๊ณต๊ฐํฉ๋๋ค.
๊ฑฐ์ณ์จ ํ๋์จ์ด
์ด ๋ด์ ๋ก์ปฌ LLM ์นด๋๋ 4070 Ti Super ํ ์ฅ โ ๋ ์ฅ โ 7900 XTX ํ ์ฅ โ RTX 5090 ํ ์ฅ ์์ผ๋ก ๋ฐ๋์ด ์์ต๋๋ค.
| ๊ตฌ์ฑ | VRAM | ๊ฒฐ๊ณผ |
|---|---|---|
| 4070 Ti Super ร1 | 16GB | ๋น์ ๋ชจ๋ธ์ด ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ ์ฌ๋ผ๊ฐ |
| 4070 Ti Super ร2 (tensor-split) | 32GB | 100์ข ๋ชฉ ์ผ๊ฐ ๋ฐฐ์น 5.81์๊ฐ |
| RX 7900 XTX ร1 | 24GB | ๊ฐ์ ๋ฐฐ์น 6.15์๊ฐ(์นด๋ 1์ฅ์ด 2์ฅ ๋์ฒด) |
| RTX 5090 ร1 | 32GB | ์๋ ์ฐธ๊ณ |
์ค์ ์ฐ๋ ๋ชจ๋ธ๊ณผ ์๋น ์ค์
์ง๊ธ production์์ ๋ฐค๋ง๋ค ๋๋ ๋ชจ๋ธ์ Qwen3.6-35B-A3B(MoE, active 3B), GGUF Q4_K_M ์์ํ์
๋๋ค. ๊ฐ์ค์น 20.75GiB + KV/์ฐ์ฐ ๋ฒํผ 1.16GiB = ์ค์ฌ์ฉ 21.91GiB(XTX 24GB์ 91%). vLLM ์๋ฒ๋ ํฌํธ 8200, max-num-seqs 14, KV ์บ์ fp8, prefix caching ๋, temperature 0.8, thinking ๋ชจ๋ ๋์ผ๋ก ๋๊ฒฐํด์ ์๋๋ค.
๋์์ Qwen3.8-27B(dense) ์ฑํ ์ฌ๋ถ๋ฅผ ํ์ ์ค์
๋๋ค. ๊ฐ์ ์กฐ๊ฑด(KV fp8, prefix caching ๋, temp 0.8, thinking ๋)์ด์ง๋ง max-num-seqs๋ 3์ผ๋ก ํจ์ฌ ๋ฎ์ถฐ์ ๋๋ฆฝ๋๋ค โ dense๋ MoE์ ๋ฉ๋ชจ๋ฆฌ/์ฐ์ฐ ํน์ฑ์ด ๋ฌ๋ผ์ ๋์ ์ฒ๋ฆฌ ๊ฐ์๋ฅผ ์ค์ฌ์ผ ์์ ์ ์
๋๋ค.
MTP(speculative decoding)๋ ์์ ์ผ์ ธ ์์ต๋๋ค. ์์ฉ๋ฅ ์ ์ฐ๋ฆฌ MoE ๋ชจ๋ธ ๊ธฐ์ค 50.1%, ์ธ๋ถ์์ ์ฐ 27B dense๋ 66.95%, ๋ค๋ฅธ ์ธ๋ถ ์ค์ธก์ 81~97%๊น์ง๋ ๋์ต๋๋ค โ ๋ชจ๋ธยท์ค์ ์ ๋ฐ๋ผ ํธ์ฐจ๊ฐ ํฝ๋๋ค.
Prefill/decode ์ค์ธก โ 27B dense ๊ธฐ์ค
๊ฐ์ 27B dense ๋ชจ๋ธ, ์ฝ๋น prefill ์ฝ 12.7k ํ ํฐ ๊ธฐ์ค์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ง์ ๋๋ ค๋ณธ ์นด๋๋ง ์ ๋ฆฌํ๋ฉด(AMD R9700์ ์ฐ๋ฆฌ๊ฐ ์ง์ ์ฌ๋ณธ ์ ์ด ์์ด์ ๋บ์ต๋๋ค โ ์๋ ๊ณต๊ฐ ๋ฒค์น๋งํฌ ์ ์์ ์ฐธ๊ณ ์๋ฃ๋ก๋ง ๋ค๋ฃน๋๋ค):
| ๊ตฌ์ฑ | decode | 100์ข ๋ชฉ ํ์ฐ | ๋น๊ณ |
|---|---|---|---|
| RX 7900 XTX, Q4_K_M, MTP on | 62.5 t/s(๋จ์ผ ์คํธ๋ฆผ) | 21.7์๊ฐ | prefill 768 t/s, ์ฐ๋ฆฌ ์ค์ธก |
| RTX 5090, 27B dense | 118 t/s(์ง๊ณ ์ฒ๋ฆฌ๋) | ์ฝ 6.3์๊ฐ | ์ค๋ ๋ญํน์ ์ด 100์ข ๋ชฉ ์์ฃผ 1ํ๋ถ โ ์๋ "์ค๋ ์ค์ ๋ญํน ์คํ" ์ ์ฐธ๊ณ |
๋ ์์น๋ ์ฌ๋ ๋ฐฉ์์ด ๋ฌ๋ผ์(๋จ์ผ์คํธ๋ฆผ vs ๋์์์ฒญ ํ๊ท ) ์ง์ ๋๋ ์ "๋ช ๋ฐฐ"๋ผ๊ณ ๋งํ๊ธด ์ด๋ ต์ง๋ง, 100์ข ๋ชฉ ํ์ฐ ์๊ฐ๋ง ๋ณด๋ฉด XTX 21.7์๊ฐ โ 5090 dense ์ฝ 6.3์๊ฐ์ผ๋ก ์ค์์ต๋๋ค. ๋ค๋ง ๊ฐ์ 5090์์ MoE์ ์ง์ ๋ง๋๊ฒฐ์ํค๋ฉด ์๊ธฐ๊ฐ ๋ ๋ฌ๋ผ์ง๋๋ฐ, ์๋์์ ๋ค๋ฃน๋๋ค.
์นด๋๋ณ ์์ decode ์๋ โ ๊ณต๊ฐ ํฌ๋ก์ค-GPU ๋ฒค์น๋งํฌ
๊ฐ์ 27B dense๊ธ ๋ชจ๋ธ, MTP ์ผ ์ํ์์ ์นด๋๋ณ decode ์๋(์ถ์ฒ: arca.live ํฌ๋ก์ค-GPU ์ค๋ ๋(์ ์ฐฝ), ์ปจํ ์คํธ ๊น์ด ๋ฏธํต์ ๋ผ ์ฐธ๊ณ ์ฉ):
| ์นด๋ | decode(t/s) |
|---|---|
| RTX 3090 | 40~45 |
| AMD R9700 | 56 |
| RTX PRO 6000 Max-Q | 70 |
| RX 7900 XTX | 71 |
| RTX 5090 | 80 |
XTX ๋๋น 5090์ด ์ฝ 1.13๋ฐฐ ๋น ๋ฆ ๋๋ค. ์ฒ์์ ๋์ญํญ ๋น์จ(1.81๋ฐฐ)๋ก ํ์ฐํด์ 5090์ด ํจ์ฌ ๋น ๋ฅผ ๊ฑฐ๋ผ ๊ธฐ๋ํ๋๋ฐ, MTP๊ฐ ์ผ์ ธ ์์ผ๋ฉด ๋์ฝ๋๊ฐ ๋์ญํญ ํ๊ณ์์ ํ๋ ค๋๊ธฐ ๋๋ฌธ์ ๊ทธ ํ์ฐ์ด ํ๋ ธ๋ค๋ ๊ฒ ๋์ค์ ๋๋ฌ๋ฌ์ต๋๋ค.
์ฐ๋ฆฌ ์ค์ธก ๋ก๊ทธ ๊ธฐ์ค decode ์๋ (ํ๋์จ์ด ์ธ๋๋ณ)
ta_usage_tracker๊ฐ ๋ชจ๋ LLM ํธ์ถ์ input/output ํ ํฐ๊ณผ ์์์๊ฐ์ ์ข
๋ชฉ๋ณ๋ก ๊ธฐ๋กํฉ๋๋ค. ์ฒ์์ ์ฝ ๋จ์๋ก output_tokens รท elapsed_s๋ฅผ ํ๊ท ๋๋๋ฐ, vLLM์ด ์ฌ๋ฌ ์ข
๋ชฉ ์์ฒญ์ ๋์์ ๋ฐฐ์นญ ์ฒ๋ฆฌ(continuous batching)ํ๊ธฐ ๋๋ฌธ์ ๊ทธ ์๊ฐ GPU์ ๋ช ๊ฑด์ด ๋ชฐ๋ ค ์์๋์ง์ ๋ฐ๋ผ ์ฝ 1๊ฑด์ ์ฒด๊ฐ ์๋๊ฐ ์ถ๋ ์ฌ์ ํ๋์จ์ด ๋น๊ต๋ก ๋ชป ์ธ ์ซ์๊ฐ ๋์์ต๋๋ค. ๊ทธ๋์ ์ฝ ๋จ์ ํ๊ท ๋์ , ๊ทธ ๋ฐฐ์น๊ฐ ์ค์ ๋ก ๋๋ ๋์ ๋ง๋ output ํ ํฐ ์ด๋ รท ๊ทธ ๋ฐฐ์น์ ์ค์ ์์์๊ฐ(์ฒซ ์ฝ~๋ง์ง๋ง ์ฝ) ์ผ๋ก ๋ค์ ๊ณ์ฐํ์ต๋๋ค.
| ์๋ | ์ง๊ณ ์ฒ๋ฆฌ๋(t/s) | ๋น๊ณ |
|---|---|---|
| 4070 Ti Super ร2, MoE (33์ผ ํ๊ท ) | 62.4 | ์ ์ ์ผ๊ฐ ์ ์ฒด๋ฐฐ์น |
| RX 7900 XTX, MoE (10์ผ ํ๊ท ) | 71.6 | ์ ์ ์ผ๊ฐ ์ ์ฒด๋ฐฐ์น |
5090์ ๋ํด์๋ "์ ์ ์ผ๊ฐ ์ ์ฒด๋ฐฐ์น" ๋์ , ์ค๋ ์ค์ ๋ญํน์ ๋ง๋๋ ๋ฐ ์ด ์คํ ๊ทธ๋๋ก๋ฅผ ์๋์ ์ ๋ฆฌํฉ๋๋ค โ ์ด์ชฝ์ด ์ ์ผ ์ ํํฉ๋๋ค.
์ค๋ ์ค์ ๋ญํน ์คํ โ 5090์์ MoE vs dense
MoE์ dense๋ฅผ ๋๋ํ ๋๋ ค์ ๋น๊ตํ๊ณ , ์ต์ข ์ ์ผ๋ก ์ค๋ ๋ญํน์๋ dense ๊ฒฐ๊ณผ๋ฅผ ์ผ์ต๋๋ค. ๊ฐ ๋ชจ๋ธ์ด 100์ข ๋ชฉ์ ํ ๋ฐํด ์์ฃผํ๋ ๋ฐ ์ค์ ๋ก ๊ฑธ๋ฆฐ ์๊ฐ์ ๋๋ค(MoE๋ ์ด์ ์ ๋ , dense๋ ์ค๋ ์๋ฒฝ โ ๋ ๋ค ๊ทธ ๋ชจ๋ธ์ ์ฒซ ์์ฃผ 1ํ๋ถ):
| ๋ชจ๋ธ | ์ข ๋ชฉ ์ | ์คํ ์๊ฐ | ์ ๋ ฅ ํ ํฐ | ์ถ๋ ฅ ํ ํฐ | ๊ฑธ๋ฆฐ ์๊ฐ | ์ง๊ณ ์ฒ๋ฆฌ๋ |
|---|---|---|---|---|---|---|
| MoE(๊ธฐ์กด) | 100๊ฐ | ์ด์ 20:41~21:27 | 18,315,222 | 2,497,437 | 46๋ถ | 911 t/s |
| 27B dense(์ค๋ ๋ญํน์ ์ด ํ๋ณด) | 100๊ฐ | ์ค๋ 00:13~06:31 | 18,982,363 | 2,680,713 | 6์๊ฐ 18๋ถ | 118 t/s |
๊ฐ์ 5090, ๊ฐ์ 100์ข ๋ชฉ์ธ๋ฐ MoE๊ฐ dense๋ณด๋ค ์ฝ 7.7๋ฐฐ ๋น ๋ฆ ๋๋ค. dense๊ฐ ๋๋ฆฐ ๊ฑด ํ๋์จ์ด ๋ฌธ์ ๊ฐ ์๋๋ผ ๋ชจ๋ธ ๊ตฌ์กฐ(MoE๋ ํ์ฑ ํ๋ผ๋ฏธํฐ๋ง ๊ณ์ฐ, dense๋ ์ ์ฒด ํ๋ผ๋ฏธํฐ๋ฅผ ๋งค๋ฒ ๊ณ์ฐ) ์์ฒด์ ํน์ฑ์ ๋๋ค.
์ง๊ธ ์งํ ์ค์ธ ๋ชจ๋ธ ์ฑํ ํ์
dense์ MoE ์ค ์ด๋ ์ชฝ์ ์ ์์ผ๋ก ์ธ์ง๋ ์์ง ์ต์ข ๊ฒฐ๋ก ์ด ์ ๋ฌ์ต๋๋ค. ์ค๋์ ๋น๊ต๋ฅผ ์ํด ์ค์ ๋ญํน์ dense๋ก๋ ๋ง๋ค์ด๋ดค์ง๋ง, ์ด๊ฒ "์ ์ ์ฑํ"์ ๋ปํ์ง ์์ต๋๋ค โ ์งํ ์ค์ธ ๊ฒ์ฆ ๋ฐฉ๋ฒ ํ๋๋ self-QWK: ๊ฐ์ ์ข ๋ชฉ์ ์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต ์คํํด์ ๋ฑ๊ธ์ด ์ผ๋ง๋ ์ผ๊ด๋๊ฒ ๋์ค๋์ง ์ฌ๋ ์งํ(quadratic weighted kappa)์ ๋๋ค. MoE๋ ๊ฐ์ 99์ข ๋ชฉ์ผ๋ก 3๋ฒ ๋ฐ๋ณตํ ๊ฒฐ๊ณผ๊ฐ ์ด๋ฏธ ๋์ ์์ต๋๋ค(์ "์ค๋ ์ค์ ๋ญํน ์คํ"์ MoE ์คํ๋ ์ด ๋ฐ๋ณต ์ค ํ๋์ ๋๋ค):
| ๋น๊ต์ | QWK | raw ์ผ์น |
|---|---|---|
| rep1 vs rep2 | 0.0853 | 59/99 |
| rep1 vs rep3 | 0.1260 | 56/99 |
| rep2 vs rep3 | 0.1481 | 61/99 |
| ํ๊ท | 0.1198 |
๊ณผ๊ฑฐ XTX ์์ ๊ด์ธก๋ self-QWK ๋ฐด๋๋ 0.08~0.21์ด๋ผ, ์ด๋ฒ ๊ฐ(0.1198)์ ๊ทธ ์์ ๋ค์ด์ต๋๋ค. ๋ฑ๊ธ ๋ถํฌ๋ฅผ ๊น๋ณด๋ฉด Hold๊ฐ 71~80%๋ก ์ ๋ ค ์๋๋ฐ, QWK๋ ํ ๋ฑ๊ธ์ ์ ๋ฆด์๋ก ์์น๊ฐ ๊ธฐ๊ณ์ ์ผ๋ก ๋ฎ๊ฒ ๋์ค๋ ํน์ฑ์ด ์์ด์ raw ์ผ์น์จ(56~61%)๋ ๊ฐ์ด ๋ด์ผ ํฉ๋๋ค.
dense ์ชฝ self-QWK๋ ์์ง ์ธก์ ์ ์ ๋๋ค(์ด๋ฒ ์ฃผ๋ง ์์ ). ์ค์ ์ฑํ์ ๊ฐ๋ฅด๋ ์ง์ง ๊ฒ์ดํธ๋ self-QWK๊ฐ ์๋๋ผ forward RankIC(์์ธก ์์์ ์ค์ ์์ต๋ฅ ์์์ ์๊ด)์ธ๋ฐ, ์ด ์งํ๋ ์์ง ์ธก์ ์น๊ฐ 0๊ฑด์ ๋๋ค โ ์ฆ ์ง๊ธ์ "dense๊ฐ ๋ ์ ๋์ฌ ๊ฒ ๊ฐ๋ค"๋ ์ ์ฑ์ ๊ธฐ๋๋ง ์๊ณ , ์ค์ ๋ก ๊ทธ๋ฐ์ง๋ ๊ฒ์ฆ ์ ์ ๋๋ค.
๋งค์ผ ์ฒ๋ฆฌํ๋ ํ ํฐ๋
์ด ํ๋ก์ ํธ์๋ ๋ก์ปฌ LLM์ผ๋ก ์ข ๋ชฉ์ ๋ถ์ํ๋ AI ํ์ดํ๋ผ์ธ(์ ์ฐฝ)์ด ์์ต๋๋ค.
ํ์(๋ชจ๋ธ ๋น๊ต ์์ด MoE ๋จ๋ ์ด์) ํ์ผ ํ๊ท : ํธ์ถ ์ฝ 5,200ํ, ์ ๋ ฅ ํ ํฐ ์ฝ 5,500๋ง ๊ฐ, ์ถ๋ ฅ ํ ํฐ ์ฝ 750๋ง ๊ฐ.
์ "์ค๋ ์ค์ ๋ญํน ์คํ"๊ณผ ๊ฐ์ 100์ข ๋ชฉ ์์ฃผ 1ํ๋ถ ๊ธฐ์ค:
| ๋ชจ๋ธ | ์ปค๋ฒ ์ข ๋ชฉ | ์ข ๋ชฉ๋น ํธ์ถ | ์ ๋ ฅ ํ ํฐ | ์ถ๋ ฅ ํ ํฐ |
|---|---|---|---|---|
| MoE(๊ธฐ์กด) | 100๊ฐ | 17ํ | 18,315,222 | 2,497,437 |
| 27B dense(์ค๋ ๋ญํน์ ์ด ํ๋ณด) | 100๊ฐ | 17ํ | 18,982,363 | 2,680,713 |
์ด ๊ตฌ๊ฐ์ ๋ ๋ชจ๋ธ ๋ค ์ข ๋ชฉ๋น ํธ์ถ ์๊ฐ ๊ฐ์์(17ํ) ํ ํฐ๋ ์์ฒด๋ ๊ฑฐ์ ๋น์ทํฉ๋๋ค โ ์ฐจ์ด๋ ํ ํฐ๋์ด ์๋๋ผ ์์์ ๋ณธ "๊ฑธ๋ฆฐ ์๊ฐ"(46๋ถ vs 6์๊ฐ18๋ถ)์์ ๋ฉ๋๋ค. ์ฐธ๊ณ ๋ก ์ ์์ ์ผ๋ก ํ๋ฃจ ์ข ์ผ ๋๋ MoE ๋จ๋ ์ด์์ผ(ํ์ผ ํ๊ท )์๋ ์ข ๋ชฉ๋น ํธ์ถ ์๊ฐ ์ด๋ณด๋ค ํจ์ฌ ๋ง์ ์ฝ 55~71ํ๊น์ง ์ฌ๋ผ๊ฐ๋ ๋ ๋ ์์ด์, ํธ์ถ ๊น์ด ์์ฒด๋ ๊ทธ๋ ๊ทธ๋ ์ ์คํ ๋ชฉ์ (์ ์ ๋ฐฐ์น์ธ์ง, ์ด๋ฐ ๋น๊ต ์คํ์ธ์ง)์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
๋ค์
forward RankIC ์ธก์ ์ด ๋๋๋ฉด ์ค์ ๋ก ์ด๋ ๋ชจ๋ธ์ ์ฑํํ๋์ง, ๊ทธ ํ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณ๋ ๊ธ๋ก ์ ๋ฆฌํ๊ฒ ์ต๋๋ค.





!["[Aug 27] Re-Sorting a 5,000-Line Backlog Turned Up Bugs That Had Been Failing Silently for Days"](https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb0keif36kge4kn6xpkq0.png)
!["[260827] ๋ฐฑ๋ก๊ทธ ์ ์๋ถ๋ฅ๋ก ์ฐพ์๋ธ ๋ฉฐ์น ์งธ ์กฐ์ฉํ ์ฃฝ์ด์๋ ๋ฒ๊ทธ๋ค"](https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyx9cdvuwp2tx40noa3v3.png)
!["[260826] A Sequential-Execution Bug from Moving Production Earlier, and Verifying a New Broker Connection"](https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fob265gu23d8tr28fvm3h.png)
!["[260826] ํ๋ก๋์
์์ ์๊ฐ์ ๋น๊ฒผ๋ค๊ฐ ๋ฐ๊ฒฌํ ์์ฐจ ์คํ ๋ฌธ์ , ๊ทธ๋ฆฌ๊ณ ์ ์ฆ๊ถ์ฌ ์ฐ๋ ๊ฒ์ฆ"](https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpy62fzkwinqfhlvy79db.png)