MoE Overview

1. MoE (Mixture-of-Expert) ๋ž€?


1.1. ๊ฐœ์š”

MoE (Mixture-of-Experts) ๋ชจ๋ธ์€ ๊ฑฐ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜(ํŒŒ๋ผ๋ฏธํ„ฐ)๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ํฌ์†Œsparse ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค. ๋‹ค์ˆ˜์˜ ํ•˜์œ„ ์‹ ๊ฒฝ๋ง์„ โ€œ์ „๋ฌธ๊ฐ€expertโ€๋กœ ๋‘๊ณ , ๋ผ์šฐํ„ฐrouter ๋„คํŠธ์›Œํฌ(๋˜๋Š” Gating network)๊ฐ€ ์ž…๋ ฅ ํ† ํฐ๋ณ„๋กœ ์†Œ์ˆ˜์˜ ์ „๋ฌธ๊ฐ€๋งŒ ์„ ํƒํ•˜์—ฌ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Forward pass์— ํ•„์š”ํ•œ ๊ณ„์‚ฐ๋Ÿ‰์ด ๋Œ€ํญ ๊ฐ์†Œํ•˜๋Š” ์Šค์ผ€์ผ๋ง ์ด์ ์„ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐ„๋‹จํžˆ ์š”์•ฝํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์šฉ๋Ÿ‰ ์ฆ๊ฐ€: ๋ชจ๋ธ์ด ํ›จ์”ฌ ๋” ๋งŽ์€ ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํฌํ•จํ•˜๊ฒŒ ๋˜์–ด, ํ† ํฐ ๋‹น ๊ณ„์‚ฐ ๋น„์šฉ์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋” ๋‹ค์–‘ํ•˜๊ณ  ์ „๋ฌธํ™”๋œ ๊ธฐ๋Šฅ์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

  2. ์ƒ๋Œ€์  ์ผ์ •ํ•œ ๊ณ„์‚ฐ๋Ÿ‰: ์ „์ฒด ๋ชจ๋ธ ํฌ๊ธฐ๋Š” ์ปค์ง€๋”๋ผ๋„, ํ™œ์„ฑํ™”๋œ ์ „๋ฌธ๊ฐ€ ์ˆ˜ kk๋ฅผ ๊ณ ์ •ํ•จ์œผ๋กœ์จ ๋‹จ์ผ ํ† ํฐ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ณ„์‚ฐ ๋น„์šฉ(FLOPs)์€ ๋Œ€๋žต ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€๋˜๊ฑฐ๋‚˜ ํ›จ์”ฌ ๋А๋ฆฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ MoE ๋ชจ๋ธ์˜ ๋ ˆ์ด์–ด ์˜ˆ์‹œ๋กœ, ๋ผ์šฐํ„ฐ๊ฐ€ ์ž…๋ ฅ ํ† ํฐ์„ 2๊ฐœ์˜ ์ „๋ฌธ๊ฐ€ FFN์— ๋ผ์šฐํŒ…ํ•˜๊ณ  ํ•ด๋‹น ์ „๋ฌธ๊ฐ€์˜ ์ถœ๋ ฅ์„ ์ทจํ•ฉํ•˜๋Š” Top-2 ๋ผ์šฐํŒ… ๋ฐฉ์‹์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•œ ๋ ˆ์ด์–ด์—์„œ ๋‹ค์ค‘ ์ „๋ฌธ๊ฐ€ FFN๋“ค์ด ๋™์‹œ์— ์ž‘๋™ํ•˜๋ฉด์„œ๋„, ๊ฐ ํ† ํฐ์€ ์†Œ์ˆ˜ ์ „๋ฌธ๊ฐ€์˜ ์ถœ๋ ฅ๋งŒ ํ™œ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Router๋Š” ๊ฐ„๋‹จํ•œ ํ”ผ๋“œํฌ์›Œ๋“œ ๋„คํŠธ์›Œํฌ(FFN; Feed Forward Network)๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ ํ† ํฐ์˜ ์ž…๋ ฅ ์ž„๋ฒ ๋”ฉ์— ์ ์šฉ๋˜๋Š” ๋‹จ์ผ ์„ ํ˜• ๋ ˆ์ด์–ด์™€ ๊ทธ ๋’ค์— ์˜ค๋Š” ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ๋Š” 1.2์ ˆ์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

MoE ๋ ˆ์ด์–ด (์ถœ์ฒ˜: A Visual Guide to Mixture of Experts)
Top-2 ๋ผ์šฐํŒ… ์˜ˆ์‹œ

MoE ์•„ํ‚คํ…์ฒ˜๋Š” ์ „๋ฌธ๊ฐ€์˜ ๋‹จ์œ„ ํฌ๊ธฐ์™€ ๋ผ์šฐํŒ… ์„ธ๋ถ„ํ™” ์ •๋„granularity๊ฐ€ ์–ผ๋งˆ๋‚˜ ์„ธ์„ธํ•œ ๋‹จ์œ„๊นŒ์ง€ ์กฐ์ •๋˜๋Š”๊ฐ€์— ๋”ฐ๋ผ Coarse-grained MoE์™€ Fine-grained MoE๋กœ ๊ตฌ๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

Coarse-grained MoE

Coarse-grained MoE๋Š” ๋น„๊ต์  ํฐ ๊ทœ๋ชจ์˜ ์ „๋ฌธ๊ฐ€ ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•˜๋‚˜์˜ MoE ๋ ˆ์ด์–ด๊ฐ€ 8๊ฐœ์˜ ์ „๋ฌธ๊ฐ€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , ๊ฐ ์ž…๋ ฅ ํ† ํฐ์ด ๊ทธ์ค‘ ์ƒ์œ„ 1~2๊ฐœ์˜ ์ „๋ฌธ๊ฐ€๋งŒ ์„ ํƒ๋˜์–ด ์ „๋‹ฌ๋˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ๊ฐ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ์˜์—ญ์ด ๋„“๊ณ  ๋น„๊ต์  ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ์•ˆ์ •์„ฑ์ด ๋†’์œผ๋ฉฐ ๊ตฌํ˜„์ด ์šฉ์ดํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์œผ๋‚˜, ์ „๋ฌธ๊ฐ€ ๊ฐ„์˜ ์„ธ๋ฐ€ํ•œ ํ˜‘๋ ฅ์ด๋‚˜ ํ‘œํ˜„ ์กฐํ•ฉ์ด ์–ด๋ ต๋‹ค๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Fine-grained MoE

Fine-grained MoE๋Š” ์ „๋ฌธ๊ฐ€๋ฅผ ํ›จ์”ฌ ์ž‘์€ ๋‹จ์œ„๋กœ ์„ธ๋ถ„ํ™”ํ•˜๊ธฐ์—, ๊ฐ ํ† ํฐ์€ ๊ทธ ์ž‘์€ ์ „๋ฌธ๊ฐ€ ๋‹จ์œ„๋“ค ์‚ฌ์ด์—์„œ ์กฐํ•ฉ์ ์œผ๋กœ ํ˜น์€ ๋”์šฑ ์œ ์—ฐํ•˜๊ฒŒ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ๋ผ์šฐํŒ… ์„ ํƒ์ง€๊ฐ€ ํญ๋„“์–ด์ง€๊ณ  ์ „๋ฌธ๊ฐ€ ๊ฐ„์˜ ํ‘œํ˜„ ์กฐํ•ฉ ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง€๋Š” ๋ฐ˜๋ฉด, ๋ผ์šฐํŒ… ๋น„์šฉ์ด ๋” ์ปค์ง€๊ณ  ์ตœ์ ํ™” ๋‚œ์ด๋„๋„ ์ƒ์Šนํ•ฉ๋‹ˆ๋‹ค. DeepSeek, Qwen, GPT-OSS๋ฅผ ๋น„๋กฏํ•œ ์ตœ์‹  MoE์—์„œ ํŠธ๋žœ๋“œ๋กœ ์ž๋ฆฌ์žก์•˜์Šต๋‹ˆ๋‹ค.

์ตœ๊ทผ MoE ์—ฐ๊ตฌ๋Š” ๋‹จ์ˆœํžˆ ์ „๋ฌธ๊ฐ€์˜ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” ๋ฐฉํ–ฅ์—์„œ ๋ฒ—์–ด๋‚˜, fine-grained MoE๋ฅผ ์ •๊ตํ™”ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ „๋ฌธ๊ฐ€ ๋‹จ์œ„์˜ ์„ธ๋ถ„ํ™” ํ™•๋Œ€: Mixture of A Million Experts์™€ Scaling Laws for Fine-Grained Mixture of Experts ์—ฐ๊ตฌ์—์„œ๋Š” ์„ธ๋ถ„ํ™” ์ •๋„granularity๊ฐ€ ๋ชจ๋ธ์˜ ์Šค์ผ€์ผ๋ง ํšจ์œจ๊ณผ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ํ•ต์‹ฌ์ ์ธ ์š”์ธ์ž„์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

  2. ๋ผ์šฐํŒ…์˜ ์ •๊ตํ™” ๋ฐ ์•ˆ์ •์„ฑ ํ™•๋ณด: Fine-grained ๊ตฌ์กฐ์—์„œ๋Š” ์ „๋ฌธ๊ฐ€ ์„ ํƒ์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ๋ผ์šฐํŒ…์˜ ๋ถˆ์•ˆ์ •์„ฑ์ด ์ปค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๊ทผ์—๋Š” ์ „๋ฌธ๊ฐ€-ํ† ํฐ ์นœํ™”๋„affinity๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ผ์šฐํŒ…, ํ† ํฐ ๊ฐ„ ๊ด€๊ณ„๋ฅผ ๊ณ ๋ คํ•œ ๋ผ์šฐํŒ… ๋“ฑ์ด Expert-Token Resonance MoE ๋…ผ๋ฌธ์„ ํ†ตํ•ด ์ œ์•ˆ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ๋™์  ๋ผ์šฐํŒ… ๋ฐ ์‚ฌํ›„ ์กฐ์ •(Post-routing): 2025๋…„ 9์›”์— ๊ณต๊ฐœ๋œ Ban&Pick ๋…ผ๋ฌธ์—์„œ๋Š” ํ•™์Šต ์ดํ›„์—๋„ ์ค‘์š”ํ•œ ์ „๋ฌธ๊ฐ€๋ฅผ ๋™์ ์œผ๋กœ ์œ ์ง€ํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ์ „๋ฌธ๊ฐ€๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ถ”๋ก  ํšจ์œจ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ•™์Šต ๋‹จ๊ณ„์—์„œ ๊ฒฐ์ •๋œ ๋ผ์šฐํŒ…์„ ๊ทธ๋Œ€๋กœ ๋‘์ง€ ์•Š๊ณ , ํ•™์Šต ์ดํ›„์—๋„ ์ง€์†์ ์œผ๋กœ ์กฐ์ •ํ•จ์œผ๋กœ์จ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  4. Chain-of-Experts (CoE): ๊ธฐ์กด MoE๋Š” ์ „๋ฌธ๊ฐ€๋“ค์ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ๋…๋ฆฝ ์ž‘๋™ํ•˜์ง€๋งŒ, ์ตœ๊ทผ์—๋Š” ์ „๋ฌธ๊ฐ€ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜, ์ž…๋ ฅ์ด ์—ฌ๋Ÿฌ ์ „๋ฌธ๊ฐ€๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฑฐ์น˜๋Š” Chain-of-Experts (CoE) ๊ตฌ์กฐ๊ฐ€ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ๊ฐ ์ „๋ฌธ๊ฐ€์˜ ์ถœ๋ ฅ์„ ๋‹ค์Œ ์ „๋ฌธ๊ฐ€์— ์ „๋‹ฌํ•จ์œผ๋กœ์จ ์ „๋ฌธ๊ฐ€ ์กฐํ•ฉ์˜ ๋‹ค์–‘์„ฑ๊ณผ ํ‘œํ˜„์˜ ๊นŠ์ด๋ฅผ ๋™์‹œ์— ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.2. ์ˆ˜ํ•™์  ์ •์˜

dd ๊ฐ€ ๋ชจ๋ธ์˜ ์€๋‹‰hidden ์ฐจ์›์ธ ๋ฒกํ„ฐ xโˆˆRdx \in \mathbb{R}^d๋กœ ํ‘œํ˜„๋˜๋Š” ๋‹จ์ผ ์ž…๋ ฅ ํ† ํฐ์„ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ผ์šฐํ„ฐ ์ž์ฒด๋Š” ๊ฐ„๋‹จํ•œ ์„ ํ˜• ๋ ˆ์ด์–ด๋กœ, NN์ด ์ด ์ „๋ฌธ๊ฐ€ ์ˆ˜์ธ ํ›ˆ๋ จ ๊ฐ€๋Šฅํ•œ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ WgโˆˆRdร—NW_g \in \mathbb{R}^{d \times N}์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ ˆ์ด์–ด๋Š” ์ž…๋ ฅ ํ† ํฐ์„ ์ฐจ์› NN์˜ ๊ณต๊ฐ„์œผ๋กœ ํˆฌ์˜projectํ•˜์—ฌ ๊ฐ ์ „๋ฌธ๊ฐ€์— ๋Œ€ํ•œ ๋กœ์ง“logit์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

logitsย H(x)=xโ‹…Wg\text{logits } H(x) = x \cdot W_g
  • NN: ๋ ˆ์ด์–ด์˜ ์ด ์ „๋ฌธ๊ฐ€ ์ˆ˜๋กœ ๊ฐ ์ „๋ฌธ๊ฐ€๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋…๋ฆฝ์ ์ธ FFN์ž…๋‹ˆ๋‹ค. (๊ฐ€์ค‘์น˜๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

  • WgW_g: ๋ผ์šฐํ„ฐ์˜ ํ•™์Šต ๊ฐ€๋Šฅํ•œ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ

๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ ๋ฒกํ„ฐ๋Š” ์–ด๋–ค ์ „๋ฌธ๊ฐ€๋“ค์ด ์„ ํƒ๋ ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ ์ˆ˜๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ํฌ์†Œ์„ฑ์„ ๊ฐ•์ œํ•˜๊ธฐ ์œ„ํ•ด, ์ด ๋ฒกํ„ฐ์— top-k ํ•จ์ˆ˜๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, k=2k=2์ธ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜๋ฅผ ๊ฐ€์ง„ ๋‘ ๋ช…์˜ ์ „๋ฌธ๊ฐ€๋งŒ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ์ „๋ฌธ๊ฐ€๋“ค์˜ ์ ์ˆ˜๋Š” ๋ชจ๋‘ 0์œผ๋กœ ์„ค์ •๋˜์–ด ํ˜„์žฌ ํ† ํฐ์— ๋Œ€ํ•ด ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

H(x)H(x)๋Š” ์–ด๋–ค ์ „๋ฌธ๊ฐ€๋“ค์ด ์„ ํƒ๋ ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” NN๊ฐœ ์ „๋ฌธ๊ฐ€์˜ raw score๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ์ˆ˜๋ฅผ ํ™•๋ฅ  ๋ถ„ํฌ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์ „๋ฌธ๊ฐ€์— ๋Œ€ํ•ด ์†Œํ”„ํŠธ๋งฅ์Šค๋ฅผ ์ ์šฉํ•˜์—ฌ ํ™•๋ฅ  ๋ถ„ํฌ G(x)G(x)๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

G(x)=softmax(H)=expโก(H)โˆ‘j=1Nexpโก(Hj)G(x) = \text{softmax}(H) = \frac{\exp(H)}{\sum_{j=1}^{N} \exp(H_j)}

์ถœ๋ ฅ G(x)G(x)๋Š” ๋ฐ€์ง‘dense NN์ฐจ์› ๋ฒกํ„ฐ๋กœ, ๊ฐ ์š”์†Œ Gi(x)G_i(x)๋Š” ํ† ํฐ xx๊ฐ€ ์ „๋ฌธ๊ฐ€ ii์— ํ• ๋‹น๋  ๋ผ์šฐํ„ฐ์˜ ์‹ ๋ขฐ๋„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ๋งฅ์Šค ํ•จ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— G(x)G(x)์˜ ๋ชจ๋“  ์š”์†Œ์˜ ํ•ฉ์€ 1์ž…๋‹ˆ๋‹ค.

์ด์ œ ์ด๋Ÿฌํ•œ ๋‹จ๊ณ„๋“ค์„ ๊ฒฐํ•ฉํ•˜์—ฌ MoE ๋ ˆ์ด์–ด์˜ ์ตœ์ข… ์ถœ๋ ฅ y(x)y(x)๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ์šฐํ„ฐ G(x)G(x)๋Š” ์ž…๋ ฅ ํ‘œํ˜„ xx (๋ณดํ†ต ํŠธ๋žœ์Šคํฌ๋จธ์˜ ์…€ํ”„ ์–ดํ…์…˜ ๊ณ„์ธต ์ถœ๋ ฅ)๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์–ด๋–ค ์ „๋ฌธ๊ฐ€๊ฐ€ ์ด ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ• ์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ํ™•๋ฅ  ๋˜๋Š” ๊ฐ€์ค‘์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ๋œ ์ „๋ฌธ๊ฐ€๋“ค์˜ ์ถœ๋ ฅ Ei(x)E_i(x)๋Š” ๋ผ์šฐํ„ฐ์˜ ์ ์ˆ˜๋กœ ๊ฐ€์ค‘ํ•ฉ๋˜์–ด ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค.

y(x)=โˆ‘i=1NGi(x)โ‹…Ei(x)y(x) = \sum_{i=1}^{N} G_i(x) \cdot E_i(x)

๊ฐ ์ „๋ฌธ๊ฐ€ EiE_i๋Š” ์ž์ฒด ๋งค๊ฐœ๋ณ€์ˆ˜ ์ง‘ํ•ฉ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ํ‘œ์ค€ 2-layer FFN ์ „๋ฌธ๊ฐ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Ei(x)=ReLU(xโ‹…W1,i)โ‹…W2,iE_i(x) = \text{ReLU}(x \cdot W_{1,i}) \cdot W_{2,i}

์—ฌ๊ธฐ์„œ W1,iW_{1,i} ์™€ W2,iW_{2,i}๋Š” ๊ฐ๊ฐ ์ „๋ฌธ๊ฐ€ ii์˜ ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ์„ ํ˜• ๋ ˆ์ด์–ด์˜ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์ž…๋‹ˆ๋‹ค.

1.3. Sparse MoE (Top-k ๋ผ์šฐํŒ…)

์œ„์—์„œ ์‚ฐ์ถœํ•œ ๋ฐ€์ง‘dense ํ™•๋ฅ  ๋ฒกํ„ฐ์ธ G(x)G(x) ๋ฒกํ„ฐ๋Š” ๋ชจ๋“  ์ „๋ฌธ๊ฐ€๊ฐ€ ์ถœ๋ ฅ์— ๊ธฐ์—ฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ด๋Š” MoE์˜ ๊ณ„์‚ฐ ํšจ์œจ์„ฑ์ด ๋†’์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํฌ์†Œ์„ฑsparse์„ ๊ฐ•์ œํ•˜๊ธฐ ์œ„ํ•ด top-k ์„ ํƒ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ ์šฉํ•จ์œผ๋กœ์จ, ์ฃผ์–ด์ง„ ํ† ํฐ์— ๋Œ€ํ•ด ์ „๋ฌธ๊ฐ€์˜ ์ผ๋ถ€๋งŒ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋“  NN๊ฐœ์˜ ์ „๋ฌธ๊ฐ€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๋กœ์ง“ ๋ฒกํ„ฐ HH์—์„œ ๊ฐ€์žฅ ๋†’์€ ์ ์ˆ˜๋ฅผ ๊ฐ€์ง„ kk๊ฐœ์˜ ์ „๋ฌธ๊ฐ€๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. kk์˜ ๊ฐ’์€ ๋Œ€๊ฐœ 1 ๋˜๋Š” 2๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. (์˜ˆ์ปจ๋Œ€, k=2k=2 ์ธ ๊ฒฝ์šฐ, ๋ผ์šฐํ„ฐ๋Š” ๊ฐ€์žฅ ๋†’์€ ๋กœ์ง“์„ ๊ฐ€์ง„ ๋‘ ์ „๋ฌธ๊ฐ€๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.) ๋‹ค๋ฅธ ๋ชจ๋“  ์ „๋ฌธ๊ฐ€๋Š” ์ด ํŠน์ • ํ† ํฐ์— ๋Œ€ํ•ด ๋ฌด์‹œ๋˜์–ด, ๊ณ„์‚ฐ ๋น„์šฉ์ด ์ด ์ „๋ฌธ๊ฐ€ ์ˆ˜ NN์ด ์•„๋‹Œ kk์— ๋น„๋ก€ํ•ฉ๋‹ˆ๋‹ค.

๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

  1. ์ ์ˆ˜ ๊ณ„์‚ฐ: G(x)G(x)๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

  2. Top-k ์„ ํƒ: GG์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’ kk๊ฐœ์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค TopK(H)=i1,i2,...,ik\text{TopK}(H) = {i_1, i_2, ..., i_k}๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

  3. ์ ์ˆ˜ ์žฌ์ •๊ทœํ™” ๋ฐ ๊ฐ€์ค‘ํ•ฉ ๊ณ„์‚ฐ: ์„ ํƒ๋œ kk๋ช…์˜ ์ „๋ฌธ๊ฐ€์— ๋Œ€ํ•ด์„œ๋งŒ ์†Œํ”„ํŠธ๋งฅ์Šค๋ฅผ ์ ์šฉํ•˜์—ฌ ์ ์ˆ˜(ํ™•๋ฅ )๋ฅผ ์žฌ์ •๊ทœํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข… ์ถœ๋ ฅ์€ (์žฌ์ •๊ทœํ™”๋œ) ๊ฒŒ์ดํŒ… ํ™•๋ฅ ์„ ๊ฐ€์ค‘์น˜๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํƒ๋œ ์ „๋ฌธ๊ฐ€๋“ค์˜ ์ถœ๋ ฅ์˜ ๊ฐ€์ค‘ ํ•ฉ์ž…๋‹ˆ๋‹ค.

y(x)=โˆ‘iโˆˆTopK(H)expโก(Hi)โˆ‘jโˆˆTopK(H)expโก(Hj)โ‹…Ei(x) y(x) = \sum_{i \in \text{TopK}(H)} \frac{\exp(H_i)}{\sum_{j \in \text{TopK}(H)} \exp(H_j)} \cdot E_i(x)

Sparse MoE ์ ‘๊ทผ๋ฒ•์€ ๋ชจ๋ธ ํฌ๊ธฐ(๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆ˜)์™€ ๊ณ„์‚ฐ ๋น„์šฉ(ํ† ํฐ๋‹น FLOPs)์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ˆ˜์กฐ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ์ดˆ๊ฑฐ๋Œ€ ๋ชจ๋ธ์„ ๊ตฌ์ถ•ํ•˜๋ฉด์„œ๋„ ํ›ˆ๋ จ๊ณผ ์ถ”๋ก  ์‹œ ๊ณ„์‚ฐ ์šฉ๋Ÿ‰์„ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.4. Dense ๋ชจ๋ธ๊ณผ Sparse MoE ๋ชจ๋ธ์˜ ๊ณ„์‚ฐ ๋น„์šฉ (FLOPs) ๋น„๊ต

Dense ๋ชจ๋ธ vs. Sparse MoE ๋ชจ๋ธ

Dense ๋ชจ๋ธ

๋ฐ€์ง‘dense ๋ชจ๋ธ์—์„œ๋Š” ์ฃผ์–ด์ง„ ์ธต์˜ ๋ชจ๋“  ์ž…๋ ฅ ํ† ํฐ์ด ๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ์— ์˜ํ•ด ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ํ† ํฐ๋‹น FLOPs๋Š” ๋ฐ€์ง‘ ๊ณ„์ธต ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํฌ๊ธฐ์— ๋น„๋ก€ํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ/์ถœ๋ ฅ ์ฐจ์›์ด dmodeld_{\text{model}}์ด๊ณ  ์ค‘๊ฐ„ ์ฐจ์›์ด dffnd_{\text{ffn}}์ธ FFN์˜ ๊ฒฝ์šฐ, ๋‹จ์ผ ํ† ํฐ์— ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜์™€ ๊ณ„์‚ฐ๋Ÿ‰์€ ๋ชจ๋ธ์˜ ์ฐจ์›, ํŠนํžˆ dmodeld_{\text{model}}๊ณผ dffnd_{\text{ffn}}์— ์ •๋น„๋ก€ํ•ฉ๋‹ˆ๋‹ค.

์ด ์‹์€ dffnd_{\text{ffn}}์„ ์ฆ๊ฐ€์‹œ์ผœ ๋ชจ๋ธ์„ ๋” ๋˜‘๋˜‘ํ•˜๊ฒŒ ๋งŒ๋“ค๋ ค๋ฉด ๋ฐฉ๋Œ€ํ•œ ๊ณ„์‚ฐ ๋น„์šฉ์„ ์ง€๋ถˆํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Sparse MoE ๋ชจ๋ธ

Sparse MoE ๋ชจ๋ธ์˜ ๊ฒฝ์šฐ ๋งŽ์€ ์ „๋ฌธ๊ฐ€๋“ค์— ๊ฑธ์ณ ๋ฐฉ๋Œ€ํ•œ ์ˆ˜์˜ ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์„์ง€๋ผ๋„, ์ฃผ์–ด์ง„ ํ† ํฐ์— ๋Œ€ํ•ด ํ™œ์„ฑํ™”๋˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๊ทธ ์ค‘ ์ผ๋ถ€์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ปจ๋Œ€ ์ „๋ฌธ๊ฐ€๋ฅผ 16๋ช…์—์„œ 64๋ช…์œผ๋กœ ๋Š˜๋ ค๋„ ํ† ํฐ๋‹น FLOPs๋Š” ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

MoE ๋ ˆ์ด์–ด์˜ ์ด ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜๋Š” ๋ชจ๋“  ์ „๋ฌธ๊ฐ€๋“ค์˜ ํ•ฉ์ž…๋‹ˆ๋‹ค.

ParametersMoE=Nexpertsร—Parametersexpert\text{Parameters}_{\text{MoE}} = N_{\text{experts}} \times \text{Parameters}_{\text{expert}}

ํ•˜์ง€๋งŒ FLOPs๋Š” ํ™œ์„ฑํ™”๋œ ์ „๋ฌธ๊ฐ€ ์ˆ˜ kk์—๋งŒ ๋น„๋ก€ํ•ฉ๋‹ˆ๋‹ค.

FLOPsMoEโ‰ˆkร—(2ร—batch_sizeร—seq_lenร—dmodelร—dexpert)\text{FLOPs}_{\text{MoE}} \approx k \times (2 \times \text{batch\_size} \times \text{seq\_len} \times d_{\text{model}} \times d_{\text{expert}})

์ด๊ฒƒ์ด MoE ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ ์žฅ์ ์ž…๋‹ˆ๋‹ค. ์ „๋ฌธ๊ฐ€ ์ˆ˜ NexpertsN_{\text{experts}}๋ฅผ ๋Š˜๋ ค ๋ชจ๋ธ์˜ ์šฉ๋Ÿ‰capacity(์ด ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜)์„ ๊ทน์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ๋„, ํ† ํฐ๋‹น ๊ณ„์‚ฐ ๋น„์šฉ์€ kk๋ฅผ ๊ณ ์ •ํ•จ์œผ๋กœ์จ ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ€์ง‘ ๋ชจ๋ธ๋ณด๋‹ค ํ›จ์”ฌ ์ž‘์€ ๊ณ„์‚ฐ ์˜ˆ์‚ฐ์œผ๋กœ๋„ ์ˆ˜์กฐ ๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฐ€์ง„ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

2. Router ๋„คํŠธ์›Œํฌ ํ›ˆ๋ จ


์ง๊ด€์ ์œผ๋กœ ํŠน์ • ์œ ํ˜•์˜ ํ† ํฐ์„ ํŠน์ • ์ „๋ฌธ๊ฐ€์—๊ฒŒ ๋ผ์šฐํŒ…ํ•˜๋Š” ๊ฒƒ์ด ์ง€์†์ ์œผ๋กœ ๋ชจ๋ธ์˜ loss๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ฒŒ, ์˜ค๋ฅ˜์—ญ์ „ํŒŒ๋ฅผ ํ†ตํ•ด WgW_g ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋ฏธ๋ž˜์— ํŠน์ • ์ „๋ฌธ๊ฐ€ ํ• ๋‹น์˜ ํ™•๋ฅ ์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ณผ์ •์—์„œ ํฐ ๋‚œ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ ๊ฒŒ์ดํŒ… ๋„คํŠธ์›Œํฌ๊ฐ€ ์†Œ์ˆ˜์˜ ์ „๋ฌธ๊ฐ€๋“ค๋งŒ ์„ ํ˜ธํ•˜์—ฌ ๋‹ค๋ฅธ ์ „๋ฌธ๊ฐ€๋“ค์„ ํ›ˆ๋ จ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‚จ๊ฒจ๋‘๋Š” ๋ถˆ๊ท ํ˜• ๋ผ์šฐํŒ… ๋ฌธ์ œ(๋˜๋Š” ์ „๋ฌธ๊ฐ€ ๋ถ•๊ดดexpert collapse)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ณด์กฐ ์†์‹คauxiliary loss (๋˜๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ์†Œ์‹ค), ์ „๋ฌธ๊ฐ€ ์šฉ๋Ÿ‰capacity factor, ๋ผ์šฐํ„ฐ ๋…ธ์ด์ฆˆ, ์ „๋ฌธ๊ฐ€ ์„ ํƒ ๋ผ์šฐํŒ… ๋“ฑ์˜ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ณด์กฐ ์†์‹ค (Auxiliary Loss): ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ์†์‹ค์— ๋ณด์กฐ ์†์‹ค์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์ „๋ฌธ๊ฐ€์˜ ๋ถ„ํฌ๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ผ์šฐํ„ฐ ๋…ธ์ด์ฆˆ: top-k ์ „๋ฌธ๊ฐ€๋ฅผ ์„ ํƒํ•˜๊ธฐ ์ „์— ๊ฒŒ์ดํŒ… ๋„คํŠธ์›Œํฌ์˜ ๋กœ์ง“์— ์†Œ๋Ÿ‰์˜ ๋ฌด์ž‘์œ„ ๋…ธ์ด์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์„ ํƒ๋  ํ™•๋ฅ ์ด ๋‚ฎ์€ ์ „๋ฌธ๊ฐ€๋„ ๊ฐ€๋” ํƒ์ƒ‰ํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.

  3. ์ „๋ฌธ๊ฐ€ ์šฉ๋Ÿ‰ (Expert Capacity): ์ „๋ฌธ๊ฐ€๊ฐ€ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ† ํฐ ์ˆ˜์— ๋Œ€ํ•œ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

  4. ์ „๋ฌธ๊ฐ€ ์„ ํƒ ๋ผ์šฐํŒ… (Expert Choice Routing): ์ „๋ฌธ๊ฐ€๊ฐ€ ์ž์‹ ์—๊ฒŒ ๋„๋‹ฌํ•œ ํ† ํฐ ์ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ƒ์œ„ kk๊ฐœ์˜ ํ† ํฐ์„ ์„ ํƒํ•˜๊ณ , ๋‚˜๋จธ์ง€๋Š” ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

2.1. ์ „๋ฌธ๊ฐ€ ๋ถ•๊ดด (Expert Collapse)

์ „๋ฌธ๊ฐ€ ๋ถ•๊ดด๋Š” ๋ผ์šฐํ„ฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ํ† ํฐ์„ ์ž‘๊ณ  ์„ ํ˜ธ๋˜๋Š” ์ „๋ฌธ๊ฐ€ ๋ถ€๋ถ„์ง‘ํ•ฉ์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๊ฒƒ์„ ํ•™์Šตํ•˜๋Š” ๋ฐ˜๋ฉด, ๋‚˜๋จธ์ง€ ์ „๋ฌธ๊ฐ€๋“ค์€ ์ ๊ฑฐ๋‚˜ ์•„์˜ˆ ํ† ํฐ์„ ๋ฐ›์ง€ ๋ชปํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ™œ์šฉ๋„๊ฐ€ ๋‚ฎ์€ ์ „๋ฌธ๊ฐ€๋“ค์€ ์˜๋ฏธ ์žˆ๋Š” ์ „๋ฌธํ™”๋ฅผ ํ•™์Šตํ•˜์ง€ ๋ชปํ•˜๊ณ , ํšจ๊ณผ์ ์œผ๋กœ "์ฃฝ์€" ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

MoE ๋ชจ๋ธ ํ›ˆ๋ จ ์ค‘์—๋Š” ์ „๋ฌธ๊ฐ€ ๋ถ•๊ดดexpert collapse ํ˜„์ƒ์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค:

  • ์ดˆ๊ธฐํ™”: ๊ฒŒ์ดํŒ… ๋„คํŠธ์›Œํฌ์˜ ์ดˆ๊ธฐ ๋ฌด์ž‘์œ„ ๊ฐ€์ค‘์น˜๊ฐ€ ํŠน์ • ์ „๋ฌธ๊ฐ€๋“ค์„ ๋ณธ์งˆ์ ์œผ๋กœ ์„ ํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ดˆ๊ธฐ ํ›ˆ๋ จ ์—ญํ•™dynamics: ์ดˆ๊ธฐ ๊ทธ๋ž˜๋””์–ธํŠธ๊ฐ€ ์ดˆ๊ธฐ์— ์„ค์ •๋œ ๋ผ์šฐํŒ… ํŒจํ„ด์„ ๊ฐ•ํ™”ํ•˜์—ฌ, ์•ฝ๊ฐ„ ๋” ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ๋ถ€ ์ „๋ฌธ๊ฐ€๋“ค์ด ์ ์  ๋” ๋งŽ์€ ํ† ํฐ์„ ๋ฐ›๋Š” ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ๋ถ„ํฌ: ํŠน์ • ํŠน์ง•์ด๋‚˜ ํŒจํ„ด์ด ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์— ๋” ๋งŽ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์–ด, ์ตœ์ ํ™”๊ฐ€ ์ž˜ ๋œ ๊ฒŒ์ดํŒ… ๋„คํŠธ์›Œํฌ๊ฐ€ ์ด๋ฅผ ํŠน์ • ์ „๋ฌธ๊ฐ€์—๊ฒŒ ๋ผ์šฐํŒ…ํ•˜๊ฒŒ ๋˜๊ณ , ํ•ด๋‹น ํŒจํ„ด์ด ํ”ํ•  ๊ฒฝ์šฐ ์ „๋ฌธ๊ฐ€๋“ค์ด ๊ณผ๋ถ€ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ช…์‹œ์  ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ถ€์กฑ: ๋ถ€ํ•˜ ๊ท ํ˜•์„ ์žฅ๋ คํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์—†์œผ๋ฉด ๋ถ€ํ•˜๋ฅผ ๊ณ ๋ฅด๊ฒŒ ๋ถ„๋ฐฐํ•  ๋™๊ธฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ „๋ฌธ๊ฐ€ ๋ถ•๊ดด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํ•œ ์ตœ์ ํ™” ์„ธ๋ถ€์‚ฌํ•ญ์ด ์•„๋‹ˆ๋ผ, ํฌ๊ณ  ์„ฑ๋Šฅ ์ข‹์€ MoE ๋ชจ๋ธ์„ ์„ฑ๊ณต์ ์œผ๋กœ ํ›ˆ๋ จํ•˜๊ธฐ ์œ„ํ•œ ํ•„์ˆ˜ ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค.

์ „๋ฌธ๊ฐ€ ๋ถ•๊ดด ๋ผ์šฐํŒ… (์ขŒ์ธก ๋„์‹) ๋ฐ ๊ท ํ˜• ๋ผ์šฐํŒ… (์šฐ์ธก ๋„์‹)

์ „๋ฌธ๊ฐ€ ๋ถ•๊ดด๋ฅผ ์‹๋ณ„ํ•˜๋ ค๋ฉด ํ›ˆ๋ จ ๊ณผ์ • ์ „๋ฐ˜์— ๊ฑธ์ณ ๋ผ์šฐํ„ฐ ํ–‰๋™์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ด ์†์‹ค์„ ๊ด€์ฐฐํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ๋ถˆ์ถฉ๋ถ„ํ•˜๋ฉฐ, ๊ทผ๋ณธ์ ์ธ ๋ถˆ๊ท ํ˜•์„ ๋“œ๋Ÿฌ๋‚ด์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง„๋‹จ์„ ์œ„ํ•ด ์•„๋ž˜์˜ ์ฃผ์š” ์ง€ํ‘œ๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ „๋ฌธ๊ฐ€ ํ™œ์šฉ๋„ (Expert Utilization): ์„ค์ •๋œ ํ›ˆ๋ จ ๋‹จ๊ณ„ ์ˆ˜์— ๊ฑธ์ณ ๊ฐ ์ „๋ฌธ๊ฐ€์—๊ฒŒ ์ „๋‹ฌ๋œ ํ† ํฐ ์ˆ˜๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์ „๋ฌธ๊ฐ€๋‹น ํ† ํฐ ์ˆ˜์˜ ํžˆ์Šคํ† ๊ทธ๋žจ์ด ์‹ฌํ•˜๊ฒŒ ์น˜์šฐ์ณ ์žˆ๋‹ค๋ฉด ์ „๋ฌธ๊ณผ ๋ถ•๊ดด์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ์†์‹ค (Load Balancing Loss): ๋†’์€ ๊ฐ’์€ ๋ผ์šฐํ„ฐ๊ฐ€ ๋กœ๋“œ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์Œ์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ฎ์€ ๊ฐ’์ด ํ•ญ์ƒ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ผ์šฐํ„ฐ๊ฐ€ ํ† ํฐ์„ ๋“œ๋กญํ•˜์—ฌ ๋‚ฎ์€ ์†์‹ค์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  • ๋ณ€๋™ ๊ณ„์ˆ˜ (CV; Coefficient Variation): ์ „๋ฌธ๊ฐ€๋‹น ํ† ํฐ ๋ถ„ํฌ์˜ ๋ณ€๋™ ๊ณ„์ˆ˜๋กœ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ํ‰๊ท ์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. 0์— ๊ฐ€๊นŒ์šด CV๋Š” ์™„๋ฒฝํ•œ ๊ท ํ˜•์„ ๋‚˜ํƒ€๋‚ด๊ณ , ๋†’์€ CV๋Š” ์ƒ๋‹นํ•œ ๋ถˆ๊ท ํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, ๊ฐ ์ „๋ฌธ๊ฐ€์˜ ์ค‘์š”๋„ ์ ์ˆ˜๊ฐ€ ๋งŽ์ด ๋‹ค๋ฅด๋ฉด CV๊ฐ€ ๋†’๊ณ  ๋ชจ๋“  ์ „๋ฌธ๊ฐ€์˜ ์ค‘์š”๋„ ์ ์ˆ˜๊ฐ€ ๋น„์Šทํ•˜๋ฉด CV๊ฐ€ ๋‚ฎ์•„์ง‘๋‹ˆ๋‹ค.

CV=1Nโˆ‘i=1N(Liโˆ’Lห‰)2Lห‰ \text{CV} = \frac{\sqrt{\frac{1}{N} \sum_{i=1}^{N} (L_i - \bar{L})^2}}{\bar{L}}
  • NN: ์ „๋ฌธ๊ฐ€ ์ˆ˜, LiL_i: ํ›ˆ๋ จ ๋‹จ๊ณ„์—์„œ ์ „๋ฌธ๊ฐ€ ii์˜ ๋กœ๋“œ(ํ† ํฐ ์ˆ˜), Lห‰\bar{L}: ํ‰๊ท  ๋กœ๋“œ

๋‚ฎ์€ CV์™€ ๋†’์€ CV (์ถœ์ฒ˜: A Visual Guide to Mixture of Experts)

2.2. ๋ณด์กฐ ์†์‹ค (Auxiliary Loss)

๋ณด์กฐ ์†์‹ค์˜ ๋ชฉํ‘œ๋Š” ๋ผ์šฐํ„ฐ์˜ ๋ถˆ๊ท ํ˜•์— ๋Œ€ํ•ด ํŽ˜๋„ํ‹ฐ๋ฅผ ์ฃผ๋Š” ์†์‹ค ํ•ญ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Sparsely-Gated MoE ๋…ผ๋ฌธ์—์„œ ๋„์ž…๋œ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ ‘๊ทผ๋ฒ•์€ ๋ฐฐ์น˜์—์„œ ํ† ํฐ๊ณผ ๋ผ์šฐํ„ฐ ํ™•๋ฅ  ๋ถ„ํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ณด์กฐ ์†์‹ค ํ•จ์ˆ˜

๋ณด์กฐ ์†์‹ค LauxL_{aux}๋Š” ์ด ๋‘ ๋ฒกํ„ฐ์˜ ๋‚ด์ ์œผ๋กœ ๊ณ„์‚ฐ๋˜๋ฉฐ, ์ „๋ฌธ๊ฐ€ ์ˆ˜ NN์œผ๋กœ ์Šค์ผ€์ผ๋ฉ๋‹ˆ๋‹ค.

Laux=Nโ‹…โˆ‘i=1Nfiโ‹…PiL_{aux} = N \cdot \sum_{i=1}^{N} f_i \cdot P_i
  • ์ „๋ฌธ๊ฐ€๋‹น ํ† ํฐ ๋น„์œจ (fif_i): ์ „๋ฌธ๊ฐ€ ii๋กœ ๋ณด๋‚ด์ง€๋Š” ํ† ํฐ์˜ ์ˆ˜๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์น˜์— BB๊ฐœ์˜ ํ† ํฐ์ด ์žˆ๊ณ  top-1 ๊ฒŒ์ดํŒ…์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ์ด๋Š” ๋‹จ์ˆœํžˆ ์ „๋ฌธ๊ฐ€ ii๋กœ ๋ผ์šฐํŒ…๋œ ํ† ํฐ ์ˆ˜๋ฅผ BB๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์ „๋ฌธ๊ฐ€๋‹น ํ‰๊ท  ๋ผ์šฐํ„ฐ ํ™•๋ฅ  (PiP_i): ๋ฐฐ์น˜์˜ ๋ชจ๋“  ํ† ํฐ์— ๊ฑธ์ณ ๋ผ์šฐํ„ฐ๊ฐ€ ์ „๋ฌธ๊ฐ€ ii์— ํ• ๋‹นํ•˜๋Š” ํ‰๊ท  ํ™•๋ฅ (๋˜๋Š” ๊ฒŒ์ดํŒ… ์ ์ˆ˜)์ž…๋‹ˆ๋‹ค. ๋ผ์šฐํ„ฐ๊ฐ€ ์ „๋ฌธ๊ฐ€ ii์—๊ฒŒ ๋ถ€์—ฌํ•˜๋Š” "์ค‘์š”๋„"์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ด ์†์‹ค์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด, ๋ชจ๋ธ์€ ๋‹จ์ผ ์ „๋ฌธ๊ฐ€ ii๊ฐ€ ๋†’์€ ํ† ํฐ ๋น„์œจ fif_i์™€ ๋†’์€ ํ‰๊ท  ํ™•๋ฅ  PiP_i๋ฅผ ๋™์‹œ์— ๊ฐ–๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์†์‹ค์€ ๊ณฑ fiโ‹…Pif_i \cdot P_i๊ฐ€ ์ž‘๊ณ  ๊ณ ๋ฅด๊ฒŒ ๋ถ„ํฌ๋  ๋•Œ ๊ฐ€์žฅ ๋‚ฎ์œผ๋ฉฐ, ์ด๋Š” ๋ชจ๋“  ์ „๋ฌธ๊ฐ€์— ๊ฑธ์ณ ๋กœ๋“œ๊ฐ€ ๊ท ํ˜•์„ ์ด๋ฃฐ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ณด์กฐ ์†์‹ค ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ (์ถœ์ฒ˜: A Visual Guide to Mixture of Experts)

Router z-์†์‹ค

MoE ๊ตฌ์กฐ์—์„œ๋Š” ๋ผ์šฐํ„ฐ๊ฐ€ softmax ๋˜๋Š” sparse gating ์—ฐ์‚ฐ์„ ํ•ด์„œ ์ „๋ฌธ๊ฐ€ ์„ ํƒ ํ™•๋ฅ ์„ ๊ณ„์‚ฐํ•˜๋ฏ€๋กœ, ๋ผ์šฐํ„ฐ์˜ ์ž…๋ ฅ ๋กœ์ง“logits(์ •๊ทœํ™” ์ด์ „ ์ ์ˆ˜)์ด ๋งค์šฐ ์ปค์ง€๋ฉด ์ง€์ˆ˜exp ์—ฐ์‚ฐ์—์„œ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ, ์ •๋ฐ€๋„ ์†์‹คround-off error, ๋ถˆ์•ˆ์ •ํ•œ ๊ธฐ์šธ๊ธฐ ๋“ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. router-z ์†์‹ค์€ ์ „๋ฌธ๊ฐ€ ์„ ํƒ ํ™•๋ฅ ๊ณผ๋Š” ์ง์ ‘์ ์ธ ๊ด€๊ณ„ ์—†๋Š”, ๋ผ์šฐํ„ฐ์˜ ๋กœ์ง“ ๊ฐ’์ด ๋„ˆ๋ฌด ์ปค์ง€๋Š” ๊ฑธ ์–ต์ œํ•˜๊ธฐ ์œ„ํ•œ ๋ณด์กฐ ์†์‹ค ํ•ญ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ˆ˜์น˜ ์•ˆ์ •์„ฑ๊ณผ ํ›ˆ๋ จ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ, ST-MoE ๋…ผ๋ฌธ์—์„œ ์ฒ˜์Œ ์ •์˜๋˜์—ˆ๊ณ  ์—ฌ๋Ÿฌ MoE ์•„ํ‚คํ…์ฒ˜์—์„œ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Lz=1Bโˆ‘i=1B(logโกโˆ‘j=1Nexpโก(xj(i)))2L_z = \frac{1}{B} \sum_{i=1}^B \left( \log \sum_{j=1}^N \exp\bigl(x_j^{(i)}\bigr) \right)^2
  • BB: ๋ฐฐ์น˜ ๋‚ด ํ† ํฐ ์ˆ˜ ๋˜๋Š” ์ƒ˜ํ”Œ ์ˆ˜

  • xj(i)x_j^{(i)}: ii๋ฒˆ์งธ ํ† ํฐ/์ƒ˜ํ”Œ์˜ ๋ผ์šฐํ„ฐ๊ฐ€ ์ „๋ฌธ๊ฐ€ jj์— ๋Œ€ํ•ด ๊ณ„์‚ฐํ•œ ๋กœ์ง“ (softmax ์—ฐ์‚ฐ ์ด์ „ ์ ์ˆ˜)

  • logโกโˆ‘jexpโก(xj(i))\log \sum_{j} \exp(x_j^{(i)}): softmax ๊ณ„์‚ฐ์˜ ์ •๊ทœํ™”normalization ์ •๊ทœํ™” ํ•ญ๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”๋ฐ, ์ด ๊ฐ’์ด ์ง€๋‚˜์น˜๊ฒŒ ํฌ๋ฉด ๋ผ์šฐํ„ฐ ๋กœ์ง“ ์ „๋ฐ˜์ด โ€œ์Šค์ผ€์ผ์ด ์ปค์ง„๋‹คโ€๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฑธ ์ œ๊ณฑ๋œ ํ•ญ์œผ๋กœ ํŒจ๋„ํ‹ฐ๋ฅผ ์ฃผ๋ฉด, ๋ผ์šฐํ„ฐ๊ฐ€ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ํฐ ๊ฐ’์„ ์“ฐ์ง€ ๋ชปํ•˜๋„๋ก ์–ต์ œํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์ˆซ์ž์ ์œผ๋กœ ์•ˆ์ •ํ•ด์ง€๊ณ , softmax ์ง€์ˆ˜๋ถ€ ์—ฐ์‚ฐ์ด ๊ณผ๋„ํ•œ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋‚˜ ์ˆ˜์น˜ ๋ถˆ์•ˆ์ •์„ฑ์„ ๋œ ์ผ์œผํ‚ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ตœ์ข… ์†์‹ค ํ•จ์ˆ˜

๋ณด์กฐ ์†์‹ค์€ ์ž‘์—… ์†์‹ค(Ltask=CrossEntropy(ypred,ytrue)L_{\text{task}} = \text{CrossEntropy}(y_{\text{pred}}, y_{\text{true}}))๊ณผ ๊ฒฐํ•ฉ๋˜์–ด ์—ญ์ „ํŒŒ์— ์‚ฌ์šฉ๋˜๋Š” ์ตœ์ข… ์†์‹ค ํ•จ์ˆ˜๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค.

Ltotal=Ltask+ฮฑโ‹…Laux+czโ‹…Lz L_{total} = L_{task} + \alpha \cdot L_{aux} + c_z \cdot L_z

ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ฮฑ\alpha๋Š” ์ข…์ข… load_balance_loss_coef๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ๋ณด์กฐ ์†์‹ค์˜ ๊ฐ•๋„๋ฅผ ์ œ์–ดํ•˜๋Š” ์ž‘์€ ์Šค์นผ๋ผ ๊ฐ’์ž…๋‹ˆ๋‹ค.

  • ฮฑ\alpha๊ฐ€ ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด, ๊ท ํ˜• ํž˜์ด ๋„ˆ๋ฌด ์•ฝํ•ด์„œ ์ „๋ฌธ๊ฐ€ ๋ถ•๊ดด๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ฮฑ\alpha๊ฐ€ ๋„ˆ๋ฌด ํฌ๋ฉด, ๋ชจ๋ธ์ด ์ฃผ์š” ์ž‘์—…์˜ ์„ฑ๋Šฅ์„ ํฌ์ƒํ•˜๋ฉด์„œ ์™„๋ฒฝํ•œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์šฐ์„ ์‹œํ•˜์—ฌ ์ „์ฒด์ ์ธ ์ •ํ™•๋„๊ฐ€ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ czc_z๋Š” ์ข…์ข… router_z_loss_coef๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, router z-์†์‹ค์˜ ๊ฐ•๋„๋ฅผ ์ œ์–ดํ•˜๋Š” ์ž‘์€ ์Šค์นผ๋ผ ๊ฐ’์ž…๋‹ˆ๋‹ค.

  • czc_z๊ฐ€ ๋„ˆ๋ฌด ํฌ๋ฉด, ํ›ˆ๋ จ ์ดˆ๊ธฐ ์•ˆ์ •์„ฑ์ด ๋–จ์–ด์ง€๊ณ  loss ์ง„๋™์ด ์ปค์ง€๊ฑฐ๋‚˜ ๋ผ์šฐํŒ…์ด ์ง€๋‚˜์น˜๊ฒŒ ํ•œ ์ „๋ฌธ๊ฐ€์— ๋ชฐ๋ฆฌ๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • czc_z๊ฐ€ ๋„ˆ๋ฌด ํฌ๋ฉด, ๋ผ์šฐํ„ฐ๊ฐ€ ๊ฑฐ์˜ ๊ท ๋“ฑํ•œ ํ™•๋ฅ ์„ ๋ฟŒ๋ฆฌ๋Š” ์ˆ˜์ค€์—์„œ ๊ตณ์–ด ๋ฒ„๋ ค, MoE์˜ ์žฅ์ ์ธ ํ‘œํ˜„ ๋‹ค์–‘์„ฑ๊ณผ ์ „๋ฌธ๊ฐ€ ์ „๋ฌธํ™” ํšจ๊ณผ๋ฅผ ๋–จ์–ด๋œจ๋ฆด ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ ํ•ฉํ•œ ๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ์€ MoE ๋ชจ๋ธ์˜ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ํŠœ๋‹ ๊ณผ์ •์ด๋ฉฐ, ๊ถŒ์žฅ ๋ฒ ์ด์Šค๋ผ์ธ์€ ฮฑ=0.01,cz=0.001\alpha=0.01, c_z=0.001 ์ž…๋‹ˆ๋‹ค. (์ฐธ์กฐ: NVIDIA NeMo Framework User Guide)

์ตœ์ข… ์†์‹ค ํ•จ์ˆ˜ ์š”์•ฝ

2.3. ์ „๋ฌธ๊ฐ€ ์šฉ๋Ÿ‰ (Expert Capacity)

์ „๋ฌธ๊ฐ€ ์šฉ๋Ÿ‰expert capacity์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ „๋ฌธ๊ฐ€๋‹น ์ด์ƒ์ ์ธ ๊ท ์ผ ๋ถ€ํ•˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ „๋ฌธ๊ฐ€ ์šฉ๋Ÿ‰ ๊ณ„์ˆ˜capacity factor๋ฅผ ์กฐ์ •ํ•˜์—ฌ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. TT๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ํ† ํฐ ์ˆ˜์ผ ๋•Œ, ์ด์ƒ์ ์ธ ์™„๋ฒฝํ•˜๊ฒŒ ๊ท ํ˜• ์žกํžŒ ๋ผ์šฐํ„ฐ๋Š” ๊ฐ ์ „๋ฌธ๊ฐ€์—๊ฒŒ ์ •ํ™•ํžˆ TN\frac{T}{N} ๊ฐœ์˜ ํ† ํฐ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์šฉ๋Ÿ‰ ๊ณ„์ˆ˜ CC๋Š” ํ†ต๊ณ„์  ๋ณ€๋™์„ฑ์— ๋Œ€ํ•œ ์™„์ถฉ ์—ญํ• ์„ ์ œ๊ณตํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Expertย Capacity=(Tokensย perย BatchNexperts)ร—C\text{Expert Capacity} = \left( \frac{\text{Tokens per Batch}}{N_{\text{experts}}} \right) \times C

CC์˜ ์ผ๋ฐ˜์ ์ธ ๊ฐ’ ๋ฒ”์œ„๋Š” 1.0์—์„œ 2.0 ์‚ฌ์ด์ž…๋‹ˆ๋‹ค. (์˜ˆ์ปจ๋Œ€ CC๊ฐ€ 1.25๋ผ๋Š” ๊ฒƒ์€ ๊ฐ ์ „๋ฌธ๊ฐ€๊ฐ€ ํ‰๊ท ๋ณด๋‹ค 25% ๋” ๋งŽ์€ ํ† ํฐ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.)

  • 1.0์— ๊ฐ€๊นŒ์šด ๊ฐ’(์˜ˆ: 1.25)์€ ๊ณ„์‚ฐ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์†Œํ™”ํ•˜์ง€๋งŒ, ๋ถ€ํ•˜๊ฐ€ ์•ฝ๊ฐ„๋งŒ ๋ถˆ๊ท ํ˜•ํ•ด๋„ ํ† ํฐ์ด ์†์‹ค๋  ์œ„ํ—˜์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • ๋” ํฐ ๊ฐ’(์˜ˆ: 1.5, 2.0)์€ ํ† ํฐ ์†์‹ค ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ด์ง€๋งŒ, ์ „๋ฌธ๊ฐ€๊ฐ€ ์ข…์ข… CC๊ฐœ์˜ ํ† ํฐ๋ณด๋‹ค ์ ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š” ์ด์ƒ์œผ๋กœ ๊ณ„์‚ฐ ์ž์›์ด ํ• ๋‹น๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „๋ฌธ๊ฐ€์˜ ์šฉ๋Ÿ‰์ด ์ดˆ๊ณผ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์ „๋ฌธ๊ฐ€๊ฐ€ ์šฉ๋Ÿ‰์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ, ์ƒ์„ฑ๋œ ํ† ํฐ๋“ค์€ Top-2์ผ ๊ฒฝ์šฐ ๋‹ค์Œ ์ „๋ฌธ๊ฐ€์—๊ฒŒ ์ „๋‹ฌ๋˜๋ฉฐ, ๋‹ค์Œ ์ „๋ฌธ๊ฐ€์˜ ์šฉ๋Ÿ‰์ด ์ดˆ๊ณผ๋œ๋‹ค๋ฉด ํ˜„์žฌ ๊ณ„์ธต์—์„œ์˜ ํ† ํฐ์„ ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. (์ด๋ฅผ ํ† ํฐ ์˜ค๋ฒ„ํ”Œ๋กœtoken overflow๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.) Top-1์€ ์ „๋‹ฌํ•œ ๋‹ค๋ฅธ ์ „๋ฌธ๊ฐ€๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ „๋ฌธ๊ฐ€ ์šฉ๋Ÿ‰ ์ดˆ๊ณผ ์‹œ ๊ณง๋ฐ”๋กœ ํ† ํฐ์„ ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. (์ฆ‰, ์–ด๋–ค ์ „๋ฌธ๊ฐ€์— ์˜ํ•ด์„œ๋„ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.) ๋Œ€์‹ , ์ž”์ฐจ ์—ฐ๊ฒฐresidual connection์—์„œ์˜ ํ‘œํ˜„์ด ๋‹ค์Œ ์ธต์œผ๋กœ ์ง์ ‘ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” MoE ๊ณ„์ธต ๋‚ด์—์„œ ํ† ํฐ์ด ํ•ญ๋“ฑ ํ•จ์ˆ˜identity function๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ† ํฐ ๋“œ๋กญ์ด ํ•ด๋กœ์›Œ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹คํ—˜ ๊ฒฐ๊ณผ ์ž˜ ์กฐ์ •๋œ ์šฉ๋Ÿ‰ ๊ณ„์ˆ˜์™€ ๋ณด์กฐ ์†์‹คauxiliary loss์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒ„๋ ค์ง€๋Š” ํ† ํฐ์˜ ๋น„์œจ์ด ์ข…์ข… ๋‚ฎ์œผ๋ฉฐ(<1%), ์ „์ฒด ๋ชจ๋ธ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ† ํฐ ๋“œ๋กญ์ด ์—ฌ์ „ํžˆ ๋ชจ๋ธ ์ •ํ™•๋„์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์šฐ๋ ค๊ฐ€ ์žˆ๊ธฐ์—, ํ† ํฐ ๋ฆฌ๋ผ์šฐํŒ…re-routing ๊ธฐ๋ฒ•์œผ๋กœ ์ดˆ๊ณผ ํ† ํฐ์„ ๋‹ค๋ฅธ ํ•œ๊ฐ€ํ•œ ์ „๋ฌธ๊ฐ€์—๊ฒŒ ์žฌํ• ๋‹นํ•˜์—ฌ ๋“œ๋กญ ์—†์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. DeepSpeed-MoE์˜ ๊ฒฝ์šฐ ํ›ˆ๋ จ ์ค‘ ์ „๋ฌธ๊ฐ€ ์šฉ๋Ÿ‰์„ ๋„˜๋Š” ํ† ํฐ๋“ค์„ ๋“œ๋กญ ๋Œ€์‹  ๋œ ๋ฐ”์œ ๋‹ค๋ฅธ ์ „๋ฌธ๊ฐ€๋กœ ๋™์ ์œผ๋กœ ์žฌ๋ถ„๋ฐฐํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ถ”๊ฐ€๋กœ Residual MoE ๊ตฌ์กฐ๋ฅผ ๋„์ž…ํ•ด ๋ฐ€์ง‘ ๊ฒฝ๋กœ์™€ ์ „๋ฌธ๊ฐ€ ๊ฒฝ๋กœ ์ถœ๋ ฅ์„ ํ•ฉ์น˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ผ๋ถ€ ํ† ํฐ์ด ์ „๋ฌธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ๋ชป ๋ฐ›์•„๋„ ๋ฐ€์ง‘ ๊ฒฝ๋กœ๋กœ ๋ณด์™„ํ•˜๊ณ , ์ „์ฒด์ ์œผ๋กœ ์ „๋ฌธ๊ฐ€ ํ™œ์šฉ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

2.4. ๋ผ์šฐํ„ฐ ๋…ธ์ด์ฆˆ (Noisy Top-k Gating)

์ „๋ฌธ๊ฐ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์˜ ๋˜๋‹ค๋ฅธ ๊ธฐ๋ฒ•์€ ๋ผ์šฐํ„ฐ ๋…ธ์ด์ฆˆ์ž…๋‹ˆ๋‹ค. ์›์‹œ ๊ฒŒ์ดํŒ… ๋กœ์ง“raw gating logits๋งŒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์œ„ kk๋ช…์˜ ์ „๋ฌธ๊ฐ€๋ฅผ ์„ ํƒํ•˜๋Š” ๋Œ€์‹ , ์„ ํƒ ๊ณผ์ • ์ „์— ๋…ธ์ด์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๊ฐ€์šฐ์‹œ์•ˆ ๋…ธ์ด์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

noisy_logits=logits+N(0,ฯƒ2)\text{noisy\_logits} = \text{logits} + \mathcal{N}(0, \sigma^2)

N(0,ฯƒ2) \mathcal{N}(0, \sigma^2)๋Š” ๋ถ„์‚ฐ์ด ฯƒ2\sigma^2, ํ‰๊ท ์ด 0์ธ ๊ฐ€์šฐ์‹œ์•ˆ ๋ถ„ํฌ์—์„œ ์ถ”์ถœ๋œ ์ƒ˜ํ”Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด noisy_logits์— ๋Œ€ํ•ด TopK ์„ ํƒ์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋…ธ์ด์ฆˆ ๋ถ„์‚ฐ ฯƒ2\sigma^2๋Š” ์ข…์ข… ํ›ˆ๋ จ ๊ฐ€๋Šฅํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ตฌํ˜„๋˜๊ฑฐ๋‚˜ ํ›ˆ๋ จ ์Šค์ผ€์ค„๋ง์— ์˜ํ•ด ์กฐ์ ˆ๋ฉ๋‹ˆ๋‹ค.

Noisy Top-k ์˜ˆ์‹œ: ํ‘œ์ค€ Top-k์—์„œ๋Š” ์ „๋ฌธ๊ฐ€ 1๊ณผ 3์ด ์„ ํƒ๋˜์ง€๋งŒ, Noise Top-k์—์„œ๋Š” ์ „๋ฌธ๊ฐ€ 1๊ณผ 4๊ฐ€ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

์กฐ๊ธˆ ๋” ์ˆ˜ํ•™์ ์œผ๋กœ ํ‘œํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ WgW_g๊ฐ€ ๊ฒŒ์ดํŒ… ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์ด๊ณ  xx๊ฐ€ ์ž…๋ ฅ ํ† ํฐ ํ‘œํ˜„์ด๋ผ๋ฉด, ํ‘œ์ค€ ๋กœ์ง“์€ logits=xโ‹…Wg\text{logits} = x \cdot W_g ์ž…๋‹ˆ๋‹ค. Noisy top-k์˜ ๊ฒฝ์šฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

ฯตโˆผN(0,1)\epsilon \sim \mathcal{N}(0, 1)๋Š” ํ† ํฐ๋ณ„๋กœ ์ƒ˜ํ”Œ๋ง๋œ ํ‘œ์ค€ ๊ฐ€์šฐ์‹œ์•ˆ ๋…ธ์ด์ฆˆ์ด๋ฉฐ, WnoiseW_{noise}๋Š” ์ž…๋ ฅ์— ๊ธฐ๋ฐ˜ํ•ด ๋…ธ์ด์ฆˆ๋ฅผ ๊ณฑ์…ˆ์ ์œผ๋กœ ์Šค์ผ€์ผ๋งํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ํ›ˆ๋ จ ๊ฐ€๋Šฅํ•œ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์ž…๋‹ˆ๋‹ค. softplus ํ•จ์ˆ˜๋Š” ๋…ธ์ด์ฆˆ ์Šค์ผ€์ผ๋ง ์ธ์ž๊ฐ€ ์–‘์ˆ˜๊ฐ€ ๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€๋œ ์žก์Œ์€ ๋ผ์šฐํŒ… ๊ฒฐ์ •์— ํ™•๋ฅ ์„ฑ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ ์ˆ˜๊ฐ€ ๋‚ฎ์€ ์ „๋ฌธ๊ฐ€๋“ค๋„ ์„ ํƒ๋  ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํƒ์ƒ‰์„ ์ด‰์ง„ํ•˜๊ณ , ๋ผ์šฐํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ์ผ์ฐ ์ตœ์ ์ด ์•„๋‹Œ ํ• ๋‹น ํŒจํ„ด์— ๊ณ ์ฐฉ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Noisy Top-K ๋ผ์šฐํ„ฐ ๊ตฌํ˜„ ์˜ˆ์‹œ
class NoisyTopKRouter(nn.Module):
    def __init__(self, d_model, num_experts, top_k=2):
        super().__init__()
        self.top_k = top_k
        self.num_experts = num_experts
        
        # Layer to generate logits
        self.gate = nn.Linear(d_model, num_experts)
        # Layer to generate noise scaling factor
        self.noise_net = nn.Linear(d_model, num_experts)

    def forward(self, x):
        # x shape: [TOKENS_PER_BATCH, d_model]
        logits = self.gate(x)
        
        # Add noise during training
        if self.training:
            noise_logits = self.noise_net(x)
            # Use softplus to ensure the noise scaling factor is positive
            noise = torch.randn_like(logits) * F.softplus(noise_logits)
            logits = logits + noise
            
        # Get the top-k logits and their indices
        # top_k_logits shape: [TOKENS_PER_BATCH, top_k]
        # top_k_indices shape: [TOKENS_PER_BATCH, top_k]
        top_k_logits, top_k_indices = logits.topk(self.top_k, dim=-1)
        
        # Apply softmax to the top-k logits to get the weights
        gating_scores = F.softmax(top_k_logits, dim=-1)
        
        # We also need a mask for the load balancing loss
        # This mask has a 1 for each token-expert pair that was selected
        # B = TOKENS_PER_BATCH, E = NUM_EXPERTS
        # zero_mask shape: [B, E]
        zero_mask = torch.zeros(x.size(0), self.num_experts, device=x.device)
        # router_mask shape: [B, E]
        router_mask = zero_mask.scatter(1, top_k_indices, 1)

        return top_k_indices, gating_scores, router_mask

# --- Example Usage ---
# Configuration
NUM_EXPERTS = 8
D_MODEL = 512
BATCH_SIZE = 4
SEQ_LEN = 1024
TOKENS_PER_BATCH = BATCH_SIZE * SEQ_LEN

noisy_router = NoisyTopKRouter(D_MODEL, NUM_EXPERTS, top_k=2)
noisy_router.train() 

input_tokens = torch.randn(TOKENS_PER_BATCH, D_MODEL)
indices, scores, mask = noisy_router(input_tokens)

print("Noisy Top-k Router Output:")
print("Indices Shape:", indices.shape) # [TOKENS_PER_BATCH, 2]
print("Scores Shape:", scores.shape)   # [TOKENS_PER_BATCH, 2]
print("Mask Shape:", mask.shape)       # [TOKENS_PER_BATCH, 8]

2.5. ์ „๋ฌธ๊ฐ€ ์„ ํƒ (Expert Choice)

2022๋…„์— ๊ณต๊ฐœ๋œ ์ „๋ฌธ๊ฐ€ ์„ ํƒExpert Choice ๋ผ์šฐํŒ… ๊ธฐ๋ฒ•์€ ์ „๋ฌธ๊ฐ€๊ฐ€ ์ฃผ์ฒด๊ฐ€ ๋˜์–ด ์ž์‹ ์—๊ฒŒ ๋„๋‹ฌํ•œ ํ† ํฐ์˜ ์ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ƒ์œ„ kk๊ฐœ์˜ ํ† ํฐ์„ ์„ ํƒํ•˜๊ณ , ๋‚˜๋จธ์ง€๋Š” ๋ฒ„๋ฆฌ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ์ „๋ฌธ๊ฐ€๋ณ„ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๊ท ๋“ฑํ•˜๊ฒŒ ์œ ์ง€ํ•˜์—ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค๋ฉฐ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ถ„์‚ฐ ํ•™์Šต ๋ฐ ์ถ”๋ก  ๊ณผ์ •์—์„œ ์—ฐ์‚ฐ ํšจ์œจ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

์ „๋ฌธ๊ฐ€ ์„ ํƒ ๋ผ์šฐํŒ…์˜ ๋™์ž‘ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ์„  ๊ฒŒ์ดํŠธ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ชจ๋“  <ํ† ํฐ, ์ „๋ฌธ๊ฐ€> ์Œ์— ๋Œ€ํ•ด ์ ์ˆ˜๋ฅผ ์‚ฐ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๊ฐ ์ „๋ฌธ๊ฐ€๋Š” ์ž์‹ ์˜ ์—ด์— ํ•ด๋‹นํ•˜๋Š” ์ ์ˆ˜๋ฅผ ์ •๋ ฌํ•œ ๋’ค ์ƒ์œ„ kk๊ฐœ capacity์— ํ•ด๋‹นํ•˜๋Š” ํ† ํฐ๋งŒ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ๋œ ํ† ํฐ์€ ํ•ด๋‹น ์ „๋ฌธ๊ฐ€์˜ FFN์„ ํ†ต๊ณผํ•˜์—ฌ ์ฒ˜๋ฆฌ๋˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ ํ† ํฐ ์ˆœ์„œ์— ๋งž์ถ”์–ด ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์‹œ ์ง‘๊ณ„๋ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ capacity๋ฅผ ์ดˆ๊ณผํ•œ ํ† ํฐ์€ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๊ณ  ๋“œ๋กญ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฒŒ์ดํŠธ ๋„คํŠธ์›Œํฌ๊ฐ€ ์ „๋ฌธ๊ฐ€ ๊ฐ„ ์ ์ˆ˜๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„ํฌํ•˜๋„๋ก ํ•™์Šต๋˜๋Š” ๊ฒƒ์ด ๋ชจ๋ธ ์„ฑ๋Šฅ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์กฐ๊ธˆ ๋” ์ˆ˜ํ•™์ ์œผ๋กœ ํ‘œํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ ๋ฒกํ„ฐ xโˆˆRdx \in \mathbb{R}^{d}๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฒŒ์ดํŠธ ๋„คํŠธ์›Œํฌ๋Š” NN๊ฐœ์˜ ์ „๋ฌธ๊ฐ€์— ๋Œ€ํ•œ ์ ์ˆ˜ ๋ฒกํ„ฐ๋ฅผ ์‚ฐ์ถœํ•ฉ๋‹ˆ๋‹ค.

H=xโ‹…WgโˆˆRN,G=softmax(H)โˆˆฮ”Nโˆ’1H = x \cdot W_g\in \mathbb{R}^{N}, \qquad G = \mathrm{softmax}(H) \in \Delta^{N-1}

์ „๋ฌธ๊ฐ€ ์„ ํƒ ๋ผ์šฐํŒ… ๋ฐฉ์‹์—์„œ๋Š” ๊ฐ ์ „๋ฌธ๊ฐ€๊ฐ€ ์ž์‹ ์˜ ์ ์ˆ˜ ์ง‘ํ•ฉ์—์„œ ์ƒ์œ„ kk๊ฐœ ํ† ํฐ์„ ์„ ํƒํ•˜๋ฏ€๋กœ, ๋‹จ์ผ ํ† ํฐ xx๋Š” ์ „๋ฌธ๊ฐ€ ii์— ์˜ํ•ด ์„ ํƒ๋  ํ™•๋ฅ ์  ์ด๋ฒคํŠธ๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค. (Gi(x)G_i(x)๋Š” ํ† ํฐ xx๊ฐ€ ์ „๋ฌธ๊ฐ€ ii์— ํ• ๋‹น๋  ์ ํ•ฉ๋„์ž…๋‹ˆ๋‹ค.)

Ri(x)={1,Gi(x)๊ฐ€ย ์ „๋ฌธ๊ฐ€ย i์˜ย ์ƒ์œ„ย kย ํ† ํฐ์—ย ์†ํ• ย ๋•Œ0,๊ทธย ์™ธ์˜ย ๊ฒฝ์šฐR_i(x) = \begin{cases} 1, & G_i(x) \text{๊ฐ€ ์ „๋ฌธ๊ฐ€ \(i\)์˜ ์ƒ์œ„ \(k\) ํ† ํฐ์— ์†ํ•  ๋•Œ} \\ 0, & \text{๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ} \end{cases}

์ด๋ฅผ indicator ํ•จ์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Ri(x;ฯ„i)โŸrouteย indicator=1โ€‰โฃ{โ€‰pi(x)โ€…โ€Šโ‰ฅโ€…โ€Šฯ„iโ€‰}โˆˆ{0,1}\underbrace{R_i(x;\tau_i)}_{\text{route indicator}} = \mathbf{1}\!\left\{\,p_i(x)\;\ge\;\tau_i\,\right\}\in\{0,1\}

ฯ„i\tau_i๋Š” ์ „๋ฌธ๊ฐ€ ii๊ฐ€ ์ƒ์œ„ kk๊ฐœ์˜ ํ† ํฐ๋งŒ ๋ฐ›๋„๋ก ํ•˜๋Š” ํ† ํฐ ์ ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์ž…๋‹ˆ๋‹ค. ํ† ํฐ๋‹น ์ตœ๋Œ€ ์ „๋ฌธ๊ฐ€ ์ˆ˜๋ฅผ bb๋กœ ์ œํ•œํ•˜๋ ค๋ฉด โˆ‘i=1NRi(x;ฯ„i)โ‰คb \sum_{i=1}^{N} R_i(x;\tau_i)\le b์˜ ์ œ์•ฝ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ํ›„ ์„ ํƒ๋œ ์ „๋ฌธ๊ฐ€๋“ค์— ๋Œ€ํ•ด๋งŒ FFN Ei(x)E_i(x)๋ฅผ ์ ์šฉํ•˜๊ณ , ๊ฐ€์ค‘ํ•ฉ์œผ๋กœ ์ถœ๋ ฅ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

y(x)=โˆ‘i=1NRi(x;ฯ„i)โ‹…Gi(x)โ‹…Ei(x)y(x) = \sum_{i=1}^{N} R_i(x;\tau_i) \cdot G_i(x) \cdot {E}_i(x)

์ด ์‹์—์„œ ์ค‘์š”ํ•œ ์ ์€ ๊ฐ ์ „๋ฌธ๊ฐ€๋ณ„๋กœ ์ตœ๋Œ€ kk๊ฐœ์˜ ํ† ํฐ๋งŒ ์„ ํƒ๋˜๋ฏ€๋กœ, xx๋Š” ์ตœ๋Œ€ bb๊ฐœ์˜ ์ „๋ฌธ๊ฐ€์— ๋ผ์šฐํŒ…๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ(bโ‰คNb \le N), ์–ด๋–ค ์ „๋ฌธ๊ฐ€์—๋„ ์„ ํƒ๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ(๋“œ๋กญ)์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐฉ์‹์˜ ์ฃผ์š” ์žฅ์ ์€ ๊ท ํ˜• ์žกํžŒ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ณผ ์ถ”๋ก  ์ง€์—ฐ์˜ ์•ˆ์ •์„ฑ์ž…๋‹ˆ๋‹ค. ์ „๋ฌธ๊ฐ€๋ณ„ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ผ์ •ํ•˜๋ฏ€๋กœ ํ†ต์‹  ๋ฐ ๋™๊ธฐํ™” ๋ณ‘๋ชฉ์ด ์ค„์–ด๋“ค๊ณ , ๋Œ€๊ทœ๋ชจ GPU/TPU ํ™˜๊ฒฝ์—์„œ ์ง€์—ฐ ์‹œ๊ฐ„latency ์˜ˆ์ธก์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ „๋ฌธ๊ฐ€ ๋‹จ์œ„์˜ capacity ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐ ์—ฐ์‚ฐ ์ž์› ๋ฐฐ๋ถ„์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ „๋ฌธ๊ฐ€๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ํ† ํฐ์˜ ์ˆ˜๊ฐ€ ์ œํ•œ์ ์ด๋ฏ€๋กœ ์ผ๋ถ€ ํ† ํฐ์ด ๋ฒ„๋ ค์งˆ ์œ„ํ—˜์ด ์žˆ๊ณ , <ํ† ํฐ, ์ „๋ฌธ๊ฐ€> ์Œ์˜ ์ „์ฒด ์Šค์ฝ”์–ด๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์ •๋ ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ณ„์‚ฐ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ๋ฐฉ์‹์œผ๋กœ MoE ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•  ์‹œ์—๋Š” ๋ฏธ๋ถ„ ๋ถˆ๊ฐ€์ด๋ฏ€๋กœ(indicator ํ•จ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์—) soft-approximation(์˜ˆ: ์‹œ๊ทธ๋ชจ์ด๋“œsigmoid ์Šค๋ฌด๋”ฉ)์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

3. MoE ์ตœ์ ํ™” ๋ฒ ์ด์Šค๋ผ์ธ


3.1. ์ „๋ฌธ๊ฐ€ ์ˆ˜ ๊ฒฐ์ •

์ „์ฒด ์ „๋ฌธ๊ฐ€ ์ˆ˜

์ „์ฒด ์ „๋ฌธ๊ฐ€ ์ˆ˜ NN์€ ์ฃผ์š” ์•„ํ‚คํ…์ฒ˜ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ๋Š˜๋ฆฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๋” ๋งŽ์€ ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜: MoE ๊ณ„์ธต์€ ๋ชจ๋ธ ํฌ๊ธฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ์ „๋ฌธ๊ฐ€๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ „์ฒด ํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜๊ฐ€ ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜์ง€๋งŒ, ๊ฐ ํ† ํฐ์ด ๋ผ์šฐํŒ…๋˜๋Š” ์ „๋ฌธ๊ฐ€ ์ˆ˜ kk๊ฐ€ ์ž‘๊ฒŒ ์œ ์ง€๋œ๋‹ค๋ฉด ๊ณ„์‚ฐ ๋น„์šฉ(FLOPs per token)์€ ์ ๋‹นํžˆ๋งŒ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • ๋” ์„ธ๋ฐ€ํ•œ ์ „๋ฌธํ™”: ๋” ๋งŽ์€ ์ „๋ฌธ๊ฐ€๋Š” ๋ชจ๋ธ์ด ๋‹ค์–‘ํ•œ ์ž…๋ ฅ ์œ ํ˜•์ด๋‚˜ ๋ฌธ๋งฅ์— ๋Œ€ํ•ด ๋” ๊ตฌ๋ณ„๋˜๊ณ  ํŠนํ™”๋œ ๊ธฐ๋Šฅ์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

  • ํ•˜๋“œ์›จ์–ด ๋งคํ•‘: ์ „๋ฌธ๊ฐ€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌExpert Parallelism๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ๋Š” NN์ด ๋ณดํ†ต ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฒ˜๋ฆฌ ์žฅ์น˜(GPU ๋“ฑ)์˜ ์ˆ˜์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜๋ฉฐ, ๊ฐ ์žฅ์น˜์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์ „๋ฌธ๊ฐ€๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ๋Œ€ํ˜• ๋ชจ๋ธ์—์„œ ํ”ํžˆ ์‚ฌ์šฉ๋˜๋Š” NN ๊ฐ’์€ 8, 16, 64, 128 ๋˜๋Š” ๊ทธ ์ด์ƒ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ NN์„ ๋Š˜๋ฆฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค:

  • ํ†ต์‹  ์˜ค๋ฒ„ํ—ค๋“œ: ์ „๋ฌธ๊ฐ€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์—์„œ๋Š” All-to-All ํ†ต์‹ ์ด ํ•„์š”ํ•˜์—ฌ ์žฅ์น˜ ๊ฐ„ ํ† ํฐ์„ ์„ž์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ „๋ฌธ๊ฐ€ ์ˆ˜๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ํ†ต์‹  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์ ธ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ๋ถ€ํ•˜ ๊ท ํ˜•์˜ ์–ด๋ ค์›€: ๋” ๋งŽ์€ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋ชจ๋‘ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉ๋˜๋„๋ก ๋ผ์šฐํ„ฐ์™€ ๋ณด์กฐ ์†์‹ค ํ•จ์ˆ˜๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

  • ์ด๋“ ๊ฐ์†Œ: ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์€ ๊ตฌ๋ณ„๋œ ์ „๋ฌธ ๋ถ„์•ผ๋กœ ๋ถ„ํ•ด๋˜์ง€ ์•Š๊ฑฐ๋‚˜, ๋ผ์šฐํ„ฐ๊ฐ€ ํ† ํฐ์„ ํšจ๊ณผ์ ์œผ๋กœ ํ• ๋‹นํ•˜์ง€ ๋ชปํ•˜๋ฉด ์ „๋ฌธ๊ฐ€๋ฅผ ๋” ์ถ”๊ฐ€ํ•ด๋„ ๋ชจ๋ธ ํ’ˆ์งˆ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ ˆ์ด์–ด๋ณ„ ์ „๋ฌธ๊ฐ€ ์ˆ˜

๋” ๊นŠ์€ ๋ ˆ์ด์–ด์ผ์ˆ˜๋ก ๋” ๋งŽ์€ ์ „๋ฌธ๊ฐ€์˜ ์ด์ ์ด ํฌ๋‹ค๋Š” ๊ด€์ฐฐ์„ ํ™œ์šฉํ•˜์—ฌ, DeepSpeed-MoE๋Š” ํ›„๋ฐ˜ ๋ ˆ์ด์–ด์— ๋” ๋งŽ์€ ์ „๋ฌธ๊ฐ€๋ฅผ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ ˆ์ด์–ด๋ณ„๋กœ ์ „๋ฌธ๊ฐ€ ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์ง€๊ธฐ์— ์ „๋ฌธ๊ฐ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ๊ณผ ๋ณ‘๋ ฌํ™” ์ธก๋ฉด์—์„œ์˜ ๋‚œ์ œ๊ฐ€ ๋Œ€๋‘๋ฉ๋‹ˆ๋‹ค.

DeepSpeed-MoE๋Š” ์ „๋ฌธ๊ฐ€ ๋ณ‘๋ ฌ๋„๋ฅผ ๊ฐ ๋ ˆ์ด์–ด์˜ ์ „๋ฌธ๊ฐ€ ์ˆ˜์— ๋งž์ถ”๋ฉด ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํ”ผํ•˜๊ณ  ์ž์› ํ™œ์šฉ๋„๋ฅผ ์ตœ๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฐ€์„ค์— ๊ธฐ์ธํ•˜์—ฌ ๋ ˆ์ด์–ด๋ณ„ ๋ณ‘๋ ฌ๋„parallelism๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•จ์œผ๋กœ์จ ์ด ๋‚œ์ œ๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 128์žฅ์˜ GPU๋กœ MoE ๋ชจ๋ธ ํ›ˆ๋ จ ์‹œ, 32๊ฐœ์˜ ์ „๋ฌธ๊ฐ€๋ฅผ ๊ฐ€์ง„ ๋ ˆ์ด์–ด๋Š” 32-way ์ „๋ฌธ๊ฐ€ ๋ณ‘๋ ฌํ™”์™€ 4-way ๋ฐ์ดํ„ฐ ๋ณ‘๋ ฌํ™”๋ฅผ ์ ์šฉํ•˜๊ณ , 128๊ฐœ์˜ ์ „๋ฌธ๊ฐ€๋ฅผ ๊ฐ€์ง„ ๋ ˆ์ด์–ด๋Š” 128-way ์ „๋ฌธ๊ฐ€ ๋ณ‘๋ ฌํ™”์™€ 1-way ๋ฐ์ดํ„ฐ ๋ณ‘๋ ฌํ™”๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ GPU๋Š” ๋ ˆ์ด์–ด๋ณ„๋กœ ์ •ํ™•ํžˆ ํ•œ ๊ฐœ์˜ ์ „๋ฌธ๊ฐ€๋งŒ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

3.2. Top-k ๋ผ์šฐํŒ…๊ณผ์˜ ์ƒํ˜ธ์ž‘์šฉ

๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  MoE ๊ตฌํ˜„์—์„œ๋Š” top-k ๋ผ์šฐํŒ…์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ k=1k=1 ๋˜๋Š” k=2k=2๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • k=1: ๊ฐ ํ† ํฐ์€ ๋‹จ์ผ ์ „๋ฌธ๊ฐ€์—๊ฒŒ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค. ๋ฐฐ์น˜/๊ทธ๋ฃน ์ „์ฒด์˜ ํ† ํฐ ํ• ๋‹น ์ˆ˜๋Š” TT์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ€์šฉ ์šฉ๋Ÿ‰์€ Nร—CN \times C์ž…๋‹ˆ๋‹ค. ๋ถ€ํ•˜ ๋ถ„์‚ฐ์€ TT๊ฐœ์˜ ํ• ๋‹น์„ NN๋ช…์˜ ์ „๋ฌธ๊ฐ€๋“ค ์‚ฌ์ด์— ๋Œ€๋žต ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

  • k=2: ๊ฐ ํ† ํฐ์€ ๋‘ ๋ช…์˜ ์ „๋ฌธ๊ฐ€์—๊ฒŒ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค. ํ† ํฐ ํ• ๋‹น ์ˆ˜๋Š” ์ด 2T2T๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์šฉ ์šฉ๋Ÿ‰์€ ์—ฌ์ „ํžˆ Nร—CN \times C์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ์— ํ›จ์”ฌ ๋” ํฐ ๋ถ€๋‹ด์„ ์ค๋‹ˆ๋‹ค. ๊ณผ๋„ํ•œ ํ† ํฐ ์†์‹ค์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

    • ๋” ๋†’์€ ์ „๋ฌธ๊ฐ€ ์šฉ๋Ÿ‰expert capacity

    • ๋ณด์กฐ ์†์‹คauxiliary loss ์„ ํ†ตํ•œ ๋” ํšจ๊ณผ์ ์ธ ๋ถ€ํ•˜ ๋ถ„์‚ฐ

    • ํ† ํฐ ๋ฐฐ์น˜ ํฌ๊ธฐ(TT)์— ๋น„ํ•ด ๋” ๋งŽ์€ ์ „๋ฌธ๊ฐ€ ์ˆ˜(NN)

k=2k=2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ† ํฐ์ด ์—ฌ๋Ÿฌ ์ „๋ฌธํ™”๋œ ๊ธฐ๋Šฅ์˜ ํ˜œํƒ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๋ชจ๋ธ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ, ํ† ํฐ๋‹น ๋‘ ๋ช…์˜ ์ „๋ฌธ๊ฐ€๋ฅผ ํ™œ์„ฑํ™”ํ•จ์œผ๋กœ์จ ๊ณ„์‚ฐ๋Ÿ‰ ์ฆ๊ฐ€์™€ ์ž ์žฌ์ ์œผ๋กœ ๋” ๋†’์€ ํ†ต์‹  ๋ฐ ์šฉ๋Ÿ‰ ์š”๊ตฌ ์‚ฌํ•ญ์ด๋ผ๋Š” ๋น„์šฉ์ด ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์‹ ์ค‘ํžˆ ๊ฒ€ํ† ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3.3. Upcycling MoE

MoE ๋ชจ๋ธ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ›ˆ๋ จํ•˜๋Š” ๋Œ€์‹ (์ฒ˜์Œ๋ถ€ํ„ฐ MoE๋กœ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์€ ๊ณ„์‚ฐ ์ž์›, ํ†ต์‹  ์ธํ”„๋ผ, ๋ฐ์ดํ„ฐ ์–‘ ๋ฉด์—์„œ ๋งค์šฐ ๋ถ€๋‹ด์ด ํฝ๋‹ˆ๋‹ค!), ์ด๋ฏธ ํ›ˆ๋ จ๋œ ๋ฐ€์ง‘dense ๋ชจ๋ธ์˜ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์‚ด๋ ค์„œ ์ „๋ฌธ๊ฐ€ ๊ตฌ์กฐ๋ฅผ ๋ง๋ถ™์ด๊ฑฐ๋‚˜ ๋ณ€ํ˜•ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค Sparse Upcycling ๋…ผ๋ฌธ์—์„œ ์ œ์•ˆ๋˜์—ˆ๊ณ  Qwen์„ ๋น„๋กฏํ•œ ๋Œ€๋‹ค์ˆ˜ MoE์—์„œ ์ ์šฉ ์ค‘์ธ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. Megatron-Core์—์„œ๋„ --moe-use-upcycling์™€ --moe-upcycling-granularity ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์—…์‚ฌ์ดํด๋ง์„ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ(upcycling ๊ธฐ๋ณธ ์ „๋žต; --moe-upcycling-granularity = 1)์—์„œ๋Š” dense ๋ชจ๋ธ์˜ MLP (ํ˜น์€ FFN) ๊ฐ€์ค‘์น˜๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์ œํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ „๋ฌธ๊ฐ€๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ „๋ฌธ๊ฐ€ hidden size๋Š” dense ๋ชจ๋ธ์˜ hidden size์™€ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜๊ณ , ์—ฌ๋Ÿฌ ๋ณต์ œ๋ณธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค

  • granular upcycling ์ „๋žต์—์„œ๋Š”, ๊ฐ ์ „๋ฌธ๊ฐ€์˜ hidden size๋ฅผ dense์˜ hidden size๋ฅผ --moe-upcycling-granularity๋งŒํผ ๋‚˜๋ˆˆ ๊ฐ’์œผ๋กœ ์ž‘๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด granularity ๊ฐ’์„ 2๋กœ ํ•˜๋ฉด ๊ฐ ์ „๋ฌธ๊ฐ€๊ฐ€ dense์˜ ์ ˆ๋ฐ˜ ํฌ๊ธฐ๋กœ ์„ธ๋ถ„ํ™”๋ฉ๋‹ˆ๋‹ค.) ์ „๋ฌธ๊ฐ€์˜ ํฌ๊ธฐ๋ฅผ ์ž‘๊ฒŒ ํ•จ์œผ๋กœ์จ, ์ „๋ฌธ๊ฐ€ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ํ‘œํ˜„์˜ ๋‹ค์–‘์„ฑ์„ ํ™•๋ณดํ•˜๋Š” fine-grained ํŠน์„ฑ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Upcycling MoE ์ ์šฉ ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ํ•ต์‹ฌ ์š”์†Œ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ „๋ฌธ๊ฐ€ ์ˆ˜์™€ ์„ธ๋ถ„ํ™” ์ •๋„ (granularity) ๊ฒฐ์ •: Dense ๋ชจ๋ธ์˜ FFN ์ธต์„ MoE๋กœ ๋ฐ”๊ฟ€ ๋•Œ ๋ช‡ ๊ฐœ์˜ ์ „๋ฌธ๊ฐ€๋กœ ๋‚˜๋ˆŒ์ง€, ์ „๋ฌธ๊ฐ€ ํ•˜๋‚˜๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ ํฌ๊ธฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์กฐ์ •ํ• ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (Megatron-Core ์‚ฌ์šฉ ์‹œ, --moe-upcycling-granularity ์กฐ์ •)

  2. ์ „๋ฌธ๊ฐ€ ์ดˆ๊ธฐํ™” ์ „๋žต: dense ๋ชจ๋ธ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์ œํ•˜๊ฑฐ๋‚˜ ์ผ๋ถ€ ๋ณ€ํ˜•ํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ „๋ฌธ๊ฐ€๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ์‹์ด ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ „๋ฌธ๊ฐ€ ๊ฐ„ ์ฐจ๋ณ„์„ฑ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์ „๋ฌธ๊ฐ€๊ฐ€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์–ด specialization์ด ์ผ์–ด๋‚˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Upcycling ๋…ผ๋ฌธ์—์„œ๋Š” โ€œvirtual group initializationโ€ ๊ธฐ๋ฒ•์„ ์ œ์•ˆํ•ด dense ์ฒดํฌํฌ์ธํŠธ์—์„œ MoE ์ดˆ๊ธฐํ™”๋ฅผ ํ•  ๋•Œ ์ „๋ฌธ๊ฐ€๋“ค์ด ๋ผ์šฐํ„ฐ ์ƒ์—์„œ top-k ํ›„๋ณด๊ตฐ์— ๊ณจ๊ณ ๋ฃจ ๋ถ„ํฌํ•˜๋„๋ก ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๊ธฐ๋ฒ•์œผ๋กœ๋Š” parameter merging, partial reinitialization ๋“ฑ์„ ๋ณ‘ํ–‰ํ•˜์—ฌ ์ „๋ฌธ๊ฐ€ ๋‹ค์–‘์„ฑ์„ ์œ ๋„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Drop-Upcycling ๋…ผ๋ฌธ์—์„œ๋Š” ์ผ๋ถ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ†ต๊ณ„์ ์œผ๋กœ ์žฌ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์ „๋ฌธํ™” ๊ฒฝ๋กœ๋ฅผ ๊ฐ•ํ™”ํ•˜๋Š” ์ „๋žต์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

  3. ๋ผ์šฐํ„ฐ ๋„์ž… ๋ฐ ์‚ฌ์ „ ๋ณด์ • (warm-up / router pre-training): Dense ๋ชจ๋ธ์—๋Š” ๋ผ์šฐํ„ฐ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ ๋ผ์šฐํ„ฐ๋ฅผ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋ผ์šฐํ„ฐ ํŒŒ๋ผ๋ฏธํ„ฐ์ด๋ฏ€๋กœ ์ดˆ๊ธฐ ๋ฌด์ž‘์œ„ ์ดˆ๊ธฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‚˜, ๋„ˆ๋ฌด ๋ฌด์ž‘์œ„์ด๋ฉด ํ•™์Šต ์ดˆ๊ธฐ์— routing ๋ถ•๊ดดcollapse๊ฐ€ ์ž˜ ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์†Œ๋Ÿ‰์˜ seed ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ ์ƒˆ๋กœ์šด ์ „๋ฌธ๊ฐ€๊ฐ€ ์ž˜ ์ž‘๋™ํ•˜๋„๋ก ๋ผ์šฐํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ณด์ •(pre-optimize)ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋„์ž…ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ฐ€์ค‘์น˜ ์Šค์ผ€์ผ๋ง (weight scaling): Dense โ†’ MoE ์ „ํ™˜ ์‹œ, ์—ฌ๋Ÿฌ ์ „๋ฌธ๊ฐ€๋กœ ์ชผ๊ฐค ๋•Œ ๊ฐ€์ค‘์น˜ ๋ถ„์‚ฐ์ด ๋‹ฌ๋ผ์ง€๊ณ  ํ‘œํ˜„ ๊ฐ•๋„๊ฐ€ ์•ฝํ•ด์งˆ ์ˆ˜ ์žˆ์–ด์„œ, ์ ์ ˆํ•œ ์Šค์ผ€์ผ ๋ณด์ • (์˜ˆ: ๊ฐ ์ „๋ฌธ๊ฐ€ ๊ฐ€์ค‘์น˜์— ์ƒ์ˆ˜ ๊ณ„์ˆ˜ ๊ณฑํ•˜๊ธฐ) ์ „๋žต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Upcycling ๋…ผ๋ฌธ์—์„œ๋Š” weight scaling์„ ํ†ตํ•ด ์†์‹ค ๊ฐœ์„  ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค๋Š” ๋ณด๊ณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  5. ์ ์ง„์  ํ™•์žฅ ๋˜๋Š” ๋‹จ๊ณ„์  ์—…์‚ฌ์ดํด๋ง: ์ฒ˜์Œ๋ถ€ํ„ฐ Dense โ†’ ์•„์ฃผ ๋งŽ์€ ์ „๋ฌธ๊ฐ€๋กœ ์ผ๊ด„ ์ „ํ™˜ํ•˜๊ธฐ๋ณด๋‹ค, ์ ์€ ์ „๋ฌธ๊ฐ€ ์ˆ˜๋กœ ์‹œ์ž‘ํ•˜๊ณ  ์ ์ฐจ ์ „๋ฌธ๊ฐ€ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด์„œ upcycling์„ ์ ์ง„์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹๋„ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. Upcycling Instruction Tuning (UpIT) ๋…ผ๋ฌธ์—์„œ๋Š” ์ „๋ฌธ๊ฐ€ ํ™•์žฅ ์Šคํ…Œ์ด์ง€expert expansion stage๋ฅผ ๋‘๊ณ  ์ ์ง„์ ์œผ๋กœ ์ „๋ฌธ๊ฐ€๋ฅผ ๋Š˜๋ ค ๊ฐ€๋Š” ์ „๋žต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  6. Drop-Upcycling ์ „๋žต: Drop-Upcycling ๋…ผ๋ฌธ์€ dense์—์„œ upcyclingํ•œ ๋ชจ๋ธ์ด ์ดˆ๊ธฐ์—๋Š” ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ด๋‚˜ ์žฅ๊ธฐ ํ•™์Šต ์‹œ ์†๋„๊ฐ€ ๋А๋ ค์ง€๊ฑฐ๋‚˜ specialization์ด ์•ฝํ•ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๋ณด๊ณ ํ•˜๋ฉฐ, ์ผ๋ถ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฌด์ž‘์œ„ ์žฌ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์ „๋žต์„ ๋ณ‘ํ–‰ํ•ด ํ•™์Šต ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ ๋ชจ๋‘ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

3.4. ๋„๋ฉ”์ธ๋ณ„ ํ† ํฐ ๋ถ„ํฌ๋ฅผ MoE ํ›ˆ๋ จ์— ๋ฐ˜์˜

๋„๋ฉ”์ธ๋ณ„ ํ† ํฐ ๋ถ„ํฌ์„ MoE ๋ชจ๋ธ ํ•™์Šต ๋ฐ ๋ผ์šฐํŒ… ์„ค๊ณ„์— ๋ฐ˜์˜ํ•˜๋ ค๋ฉด ์•„๋ž˜ ์ „๋žต๋“ค์„ ๊ณ ๋ คํ•˜์‹œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  1. ๋„๋ฉ”์ธ ํƒœ๊น… ๋ฐ ๋ผ์šฐํŒ… ๋ณด์กฐ ์ž…๋ ฅ: ์ž…๋ ฅ ํ…์ŠคํŠธ์— ๋„๋ฉ”์ธ ํƒœ๊ทธ๋ฅผ ํฌํ•จ์‹œํ‚ค๊ณ , ๋ผ์šฐํ„ฐ๊ฐ€ ์ด ํƒœ๊ทธ๊นŒ์ง€ ๊ณ ๋ คํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์˜ˆ: โ€œ[domain_news] โ€ฆ text โ€ฆโ€ ํ˜•ํƒœ๋กœ ํ† ํฐ ์•ž์— ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ๋„๋ฉ”์ธ ์ž„๋ฒ ๋”ฉ์„ ๋ผ์šฐํ„ฐ ์ž…๋ ฅ์— ํ•ฉ์นจ

  2. ๋„๋ฉ”์ธ๋ณ„ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ํ•ญ ๋ฐ ๊ฐ€์ค‘์น˜: ์ผ๋ฐ˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ์†์‹ค๋ฟ ์•„๋‹ˆ๋ผ ๋„๋ฉ”์ธ๋ณ„ ๊ท ๋“ฑํ™”๋ฅผ ์œ ๋„ํ•˜๋Š” ๋ณด์กฐ ํ•ญ์„ ๋‘ก๋‹ˆ๋‹ค. ์˜ˆ์ปจ๋Œ€ ๋„๋ฉ”์ธ A, B, C๊ฐ€ ์žˆ์„ ๋•Œ ๊ฐ ๋„๋ฉ”์ธ๋ณ„ ์ „๋ฌธ๊ฐ€ ์‚ฌ์šฉ๋ฅ  ์ฐจ์ด๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ํ•ญ ์ถ”๊ฐ€

  3. ํ† ํฐ ๋ถ„ํฌ ์Šค๋ฌด๋”ฉ / ์—…์ƒ˜ํ”Œ๋ง: ํŠน์ • ๋„๋ฉ”์ธ ํ† ํฐ์˜ ํ‘œํ˜„์ด ๋„ˆ๋ฌด ํฌ์†Œํ•ด ์ „๋ฌธ๊ฐ€๊ฐ€ ํ•™์Šตํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋ฉด, ํ•ด๋‹น ๋„๋ฉ”์ธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•ฝ๊ฐ„ ์—…์ƒ˜ํ”Œ๋งํ•˜๊ฑฐ๋‚˜, ํ† ํฐ ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ๋ถ€๋ถ„์„ ๋ณด์ •ํ•ด์„œ ๋ผ์šฐํŒ…์ด ๋„ˆ๋ฌด ์น˜์šฐ์น˜์ง€ ์•Š๋„๋ก ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „๋ฌธ๊ฐ€ ๊ตฌ์„ฑ์€ โ€œ๊ณต์œ  ์ „๋ฌธ๊ฐ€ + ๋„๋ฉ”์ธ ๊ฒฝํ–ฅ ์ „๋ฌธ๊ฐ€โ€์˜ ํ˜ผํ•ฉ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž…๋ ฅ์„ ๋ฌด๋‚œํžˆ ์ฒ˜๋ฆฌํ•˜๋Š” 1โ€“2๊ฐœ์˜ ๊ณต์œ  ์ „๋ฌธ๊ฐ€๋ฅผ ๋‘๊ณ , ๋‚˜๋จธ์ง€๋Š” ํŠน์ • ๋„๋ฉ”์ธ(์˜ˆ: ์ž์—ฐ์–ด, ์ฝ”๋“œ, ์ˆ˜ํ•™)์— ๊ฐ๊ฐ ๊ฒฝํ–ฅ์„ฑ๋งŒ ์ฃผ๋Š” ์ˆ˜์ค€์œผ๋กœ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๋„๋ฉ”์ธ ๊ณ ์ • ์ „๋ฌธ๊ฐ€๋กœ ๋งŒ๋“ค๊ธฐ๋ณด๋‹ค๋Š”, ๋ฐ์ดํ„ฐ์™€ ๋ผ์šฐํŒ…์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํŠนํ™”๋ฅผ ์œ ๋„ํ•˜๊ฒŒ ๋‘๋Š” ํŽธ์ด ์ˆ˜๋ ด์ด ๋งค๋„๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ ๋ณด์œ ํ•œ dense ๋ชจ๋ธ์„ upcyclingํ•ด ์‹œ์ž‘ํ•œ๋‹ค๋ฉด, FFN ๊ฐ€์ค‘์น˜๋ฅผ ๋ณต์ œยท๋ถ„ํ• ํ•˜์—ฌ ์ „๋ฌธ๊ฐ€ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๋˜, ์ผ๋ถ€ ์ „๋ฌธ๊ฐ€์—๋Š” ๋ฏธ์„ธํ•œ ์žฌ์ดˆ๊ธฐํ™”(์Šค์ผ€์ผ ์กฐ์ •, layer-norm ์žฌ์„ค์ • ๋“ฑ)๋ฅผ ๊ฐ€ํ•ด ์ดˆ๊ธฐ์— ๋™์ผ ๋™์ž‘์œผ๋กœ ์ˆ˜๋ ดํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜์„ธ์š”. Upcycling ์งํ›„์—๋Š” ๋ผ์šฐํ„ฐ๋งŒ ์†Œ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋กœ ์งง๊ฒŒ ์›Œ๋ฐ์—…ํ•ด ๋ผ์šฐํŒ… ํŽธํ–ฅ์„ ์˜ˆ๋ฐฉํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ์ „์ฒด ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” 2-stage ์ ˆ์ฐจ๊ฐ€ ์‹คํŒจ ํ™•๋ฅ ์„ ์ค„์—ฌ ์ค๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ DeepSeekMoE ๋…ผ๋ฌธ์„ ์ฐธ์กฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋„๋ฉ”์ธ ํ˜ผํ•ฉ์˜ ๊ฒฝ๊ณ„์—์„œ ๋ถˆ์•ˆ์ •์ด ์žฆ๋‹ค๋ฉด ํ† ํฐ-์ „๋ฌธ๊ฐ€ ์นœํ™”๋„affinity๋ฅผ ์ถ”๊ฐ€๋กœ ๋ณด์ •ํ•˜๋Š” ๋ฐฉ์‹๋„ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค. ์˜ˆ์ปจ๋Œ€ ํ† ํฐ ์ž„๋ฒ ๋”ฉ๊ณผ ์ „๋ฌธ๊ฐ€ ํ‚ค(์ „๋ฌธ๊ฐ€๋‹น ์š”์•ฝ ๋ฒกํ„ฐ)์˜ ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„๋ฅผ ์–•๊ฒŒ ์„ž์–ด ๊ฒŒ์ดํŠธ ์ ์ˆ˜๋ฅผ ์‚ด์ง ์žฌ์ •๋ ฌํ•˜๋ฉด, ๋„๋ฉ”์ธ ๊ธ‰์ „ํ™˜ ๊ตฌ๊ฐ„์—์„œ์˜ ํ”๋“ค๋ฆผ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

3.5. ๋ณด์กฐ ์†์‹ค ๊ฐ€์ค‘์น˜ ๊ณ„์ˆ˜ ์กฐ์ •

์ ์ ˆํ•œ ๊ฐ’์€ ๋ณดํ†ต ๊ฒฝํ—˜์ ์œผ๋กœheuristic ์ฐพ์•„์•ผ ํ•˜์ง€๋งŒ, ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•๋ก ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ถ”์ฒœ ๋ฒ”์œ„: ๊ฐ’์€ ๋ณดํ†ต 10โˆ’210^{-2} ๋˜๋Š” 10โˆ’310^{-3}์ฒ˜๋Ÿผ ์ž‘์ง€๋งŒ, ์ตœ์  ๊ฐ’์€ ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜, ์ž‘์—…, ์ „๋ฌธ๊ฐ€ ์ˆ˜, ์„ ํƒํ•œ ๋ณด์กฐ ์†์‹ค ๊ณต์‹์— ํฌ๊ฒŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์ง€๋‚˜์น˜๊ฒŒ ํฐ ๊ฐ€์ค‘์น˜ ๊ณ„์ˆ˜๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์šฐ์„ ์‹œํ•˜์—ฌ ์ „์ฒด์ ์ธ ์ •ํ™•๋„๊ฐ€ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๊ณ  ์ง€๋‚˜์น˜๊ฒŒ ์ž‘์€ ๊ฐ€์ค‘์น˜ ๊ณ„์ˆ˜๋Š” ๋ผ์šฐํ„ฐ ๋ถˆ๊ท ํ˜•์„ ๊ฐœ์„ ํ•˜์ง€ ์•Š๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•ด ์ฃผ์„ธ์š”.

  2. ๋ชจ๋‹ˆํ„ฐ๋ง: ํ›ˆ๋ จ ์ค‘์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ์ง€ํ‘œ๋“ค์„ ๊ด€์ฐฐํ•˜์„ธ์š”. ๋ชจ๋‹ˆํ„ฐ๋ง์€ Weights & Biases๋‚˜ ํ…์„œ๋ณด๋“œ ๊ฐ™์€ ํˆดํ‚ท์ด ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

    1. ์ „๋ฌธ๊ฐ€ ํ™œ์šฉ๋„: ๊ฐ ๋ฐฐ์น˜ ๋˜๋Š” ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์— ๊ฑธ์ณ ๊ฐ ์ „๋ฌธ๊ฐ€๊ฐ€ ์ฒ˜๋ฆฌํ•œ ํ† ํฐ์˜ ์ˆ˜๋‚˜ ๋น„์œจ์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์ „๋ฌธ๊ฐ€๋“ค์ด ๋Œ€๋žต ๋น„์Šทํ•œ ํ™œ์šฉ๋„๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜์ง€๋งŒ, ์™„๋ฒฝํ•œ ๊ท ์ผ์„ฑ์ด ํ•ญ์ƒ ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์ตœ์ ์€ ์•„๋‹™๋‹ˆ๋‹ค.

    2. ๋ณด์กฐ ์†์‹ค ํฌ๊ธฐ: ๋ณด์กฐ ์†์‹ค ๊ฐ’ ์ž์ฒด๋ฅผ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ›ˆ๋ จ์ด ์ง„ํ–‰๋˜๊ณ  ์ „๋ฌธ๊ฐ€ ๊ท ํ˜•์ด ๊ฐœ์„ ๋จ์— ๋”ฐ๋ผ ๊ฐ์†Œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์กฐ ์†์‹ค์ด LtaskL_{task}์— ๋น„ํ•ด ์–ด๋А ์ •๋„์ธ์ง€๋„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

    3. ์ž‘์—… ์†์‹ค ๋ฐ ๊ฒ€์ฆ ์„ฑ๋Šฅ: ๋ณด์กฐ ์†์‹ค ๊ณ„์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ฌ ๋•Œ ๋ชจ๋ธ์ด ์ฃผ ์ž‘์—…์„ ํ•™์Šตํ•˜๋Š” ๋Šฅ๋ ฅ์ด ์ง€๋‚˜์น˜๊ฒŒ ์†์ƒ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. LtaskL_{task}์™€ ๊ด€๋ จ๋œ ๊ฒ€์ฆ ์ง€ํ‘œ(์˜ˆ: ์ •ํ™•๋„, BLEU ๋“ฑ)๋ฅผ ์ถ”์ ํ•˜์„ธ์š”.

  3. ์Šค์ผ€์ค„๋ง: ๋ชจ๋ธ๊ณผ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ๊ฐ€๋ณ€์ ์œผ๋กœ ๋‘์‹œ๋Š” ํŽธ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ˜„์—…์—์„œ ํ”ํ•œ ์ „๋žต์€ ์ดˆ๋ฐ˜์—๋Š” ๊ทœ์ œ๋ฅผ ์กฐ๊ธˆ ๊ฐ•ํ•˜๊ฒŒ, ์ดํ›„ ์™„๋งŒํžˆ ๋‚ฎ์ถ”๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ดˆ๊ธฐ์—๋Š” ๊ท ํ˜• ๊ฐ•์ œ๋ฅผ ์œ„ํ•ด ๋ณด์กฐ ์†์‹ค ๊ฐ€์ค‘์น˜ ๊ณ„์ˆ˜๋ฅผ ์กฐ๊ธˆ ํฐ ๊ฐ’์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ ์•ˆ์ •ํ™” ๊ตฌ๊ฐ„์— ์ง„์ž…ํ•  ๋•Œ ์ ์ฐจ ๊ฐ์†Œ์‹œํ‚ค๋Š” ์Šค์ผ€์ค„๋ง์„ ์ ์šฉํ•˜๋ฉด, ์ดˆ๊ธฐ ๋ถ•๊ดด๋ฅผ ๋ง‰์œผ๋ฉด์„œ ํ›„๋ฐ˜์—๋Š” ์ „๋ฌธ๊ฐ€ ํŠนํ™” ์—ฌ์ง€๋ฅผ ๋Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ ๋Œ€๊ทœ๋ชจ MoE ํ›ˆ๋ จ ๋…ธํ•˜์šฐ์—์„œ๋„ โ€œ๋ถ€ํ•˜๊ฐ€ ์ด๋ฏธ ์ž˜ ๊ท ํ˜•์„ ์ด๋ฃจ๋ฉด ๋ณด์กฐ ์†์‹ค ๊ณ„์ˆ˜๋ฅผ ๋‚ฎ์ถ”๊ณ , ๋ถˆ๊ท ํ˜•์ด ํฌ๋ฉด ์ผ์‹œ์ ์œผ๋กœ ์˜ฌ๋ ค์„œ ๊ฐ•์ œ ๊ท ํ˜•์„ ์ค€๋‹คโ€๋Š” ์ƒํƒœ ๊ธฐ๋ฐ˜ ์กฐ์ •์„ ๊ถŒํ•ฉ๋‹ˆ๋‹ค.

3.6. ์‹ค์šฉ์  ์ง€์นจ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

MoE ๋ชจ๋ธ ๊ฐœ๋ฐœ ๋ฐ ํ›ˆ๋ จ ์ค‘์— ์ถ”์ ํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์ง€ํ‘œ ๋ช‡ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

  1. ๋“œ๋กญ๋œ ํ† ํฐ ๋น„์œจ: ์šฉ๋Ÿ‰์ด ์ถฉ๋ถ„ํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฃผ์š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. ๋†’์€ ๊ฐ’(1-2% ์ด์ƒ)์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  2. ์ „๋ฌธ๊ฐ€ ํ™œ์šฉ๋„: ์ „๋ฌธ๊ฐ€ ์šฉ๋Ÿ‰์ด๋‚˜ ์ „๋ฌธ๊ฐ€ ํ• ๋‹น ์‹œ๊ฐํ™”์™€ ๊ฐ™์€ ์ง€ํ‘œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ผ์šฐํ„ฐ ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๊ณ  ๋ถ€ํ•˜ ๊ท ํ˜• ์†์‹ค์„ ์กฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

  3. ๊ณ„์‚ฐ ๋น„์šฉ(FLOPs) ๋ฐ ํ›ˆ๋ จ ์ฒ˜๋ฆฌ๋Ÿ‰: ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์˜ ์‹ค์ œ ์„ฑ๋Šฅ ์˜ํ–ฅ์„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.

  4. ์ „์ฒด ๋ชจ๋ธ ์„ฑ๋Šฅ: LLM์˜ BLEU/ROUGE๋‚˜ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์ž‘์—…์˜ ์ •ํ™•๋„์™€ ๊ฐ™์€ ํ‘œ์ค€ ์ง€ํ‘œ๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์•„ํ‚คํ…์ฒ˜ ์„ ํƒ์ด ์ตœ์ข… ์„ฑ๋Šฅ ํ–ฅ์ƒ์œผ๋กœ ์ด์–ด์ง€๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  5. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰: ํŠนํžˆ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์ค‘์š”ํ•˜๋ฉฐ, ์„ ํƒํ•œ ๊ตฌ์„ฑ์ด ์žฅ์น˜ ๋ฉ”๋ชจ๋ฆฌ ์ œ์•ฝ ๋‚ด์— ๋งž๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ๋ง์€ ๋„๋ฉ”์ธ ์ธ์‹ํ˜•์œผ๋กœ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ›ˆ๋ จ ๋ฃจํ”„์—์„œ ์ „๋ฌธ๊ฐ€๋ณ„ ํ† ํฐ ์ ์œ ์œจ์„ ๋„๋ฉ”์ธ๋ณ„๋กœ ๋ถ„ํ•ดํ•ด ๊ธฐ๋กํ•˜๊ณ , ์ „๋ฌธ๊ฐ€ ๋ผ์šฐํŒ… ํ™•๋ฅ ์˜ ์—”ํŠธ๋กœํ”ผ, ๋ฏธ์‚ฌ์šฉ(ํ˜น์€ ์ €์‚ฌ์šฉ) ์ „๋ฌธ๊ฐ€ ๋น„์œจ, capacity ์ดˆ๊ณผ์œจ, ๋“œ๋กญ๋ฅ ์„ ํ•จ๊ป˜ ์ถ”์ ํ•˜์„ธ์š”. ์ฝ”๋“œ์™€ ์ˆ˜ํ•™ ๋„๋ฉ”์ธ์˜ ๊ธธ์ด ๋ถ„ํฌ๊ฐ€ ์ž์—ฐ์–ด์™€ ๋‹ค๋ฅด๋ฏ€๋กœ, ์‹œํ€€์Šค ๊ธธ์ด ๊ตฌ๊ฐ„๋ณ„๋กœ๋„ ๋‚˜๋ˆ ์„œ ๋ณด์‹œ๋ฉด ๋ณ‘๋ชฉ ์ง€์ ์„ ๋นจ๋ฆฌ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ์šฐํŒ… ๋ณ€๋™์„ฑ์ด ํฐ ๊ฒฝ์šฐ์—๋Š” ์ธ์ ‘ ํ† ํฐ์˜ ๊ฒŒ์ดํŠธ๋ฅผ ์•ฝํ•˜๊ฒŒ ์ฐธ์กฐํ•˜๋Š” ํ† ํฐ ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ์Šค๋ฌด๋”ฉ ๊ธฐ๋ฒ•๋„ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

3.7. ์˜ตํ‹ฐ๋งˆ์ด์ € ๋ฐ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ

MoE ํ›ˆ๋ จ์„ ์œ„ํ•œ ์ตœ์ ์˜ ์˜ตํ‹ฐ๋งˆ์ด์ € ์„ค์ •๊ณผ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ์กฐํ•ฉ์„ ์ฐพ๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฒฝํ—˜์ ์ธ ๊ณผ์ •์ด๋งŒ, ์•„๋ž˜์˜ ๋ฒ ์ด์Šค๋ผ์ธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋ณด๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  1. ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ: ํ‘œ์ค€ AdamW ์„ค์ • ฮฒ1=0.9,ฮฒ2=0.999\beta_1=0.9, \beta_2=0.999, ์ž˜ ์•Œ๋ ค์ง„ ํ•™์Šต๋ฅ  ์Šค์ผ€์ค„(warmup + decay), ๊ทธ๋ฆฌ๊ณ  ์ ๋‹นํ•œ ๊ฐ€์ค‘์น˜ decay(์˜ˆ: 0.01 ๋˜๋Š” 0.1)๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”.

  2. ํ•™์Šต๋ฅ learning rate๊ณผ ๋ณด์กฐ ์†์‹ค ๊ณ„์ˆ˜๋ฅผ ํ•จ๊ป˜ ์กฐ์ •ํ•˜๊ธฐ: ํ•™์Šต๋ฅ ๊ณผ ๋ณด์กฐ ์†์‹ค ๊ณ„์ˆ˜ ฮฑ\alpha๋Š” ๋ณดํ†ต ๊ฐ€์žฅ ๋ฏผ๊ฐํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ์ž…๋‹ˆ๋‹ค. ๋‘ ๊ฐ’์„ ํ•จ๊ป˜ ๋ณ€ํ™”์‹œํ‚ค๋ฉด์„œ ์ž‘์—… ์†์‹ค๊ณผ ๋ถ€ํ•˜ ๊ท ํ˜• ์ง€ํ‘œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์‹คํ—˜์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

  3. Gradient Clipping: ๊ทธ๋ž˜๋””์–ธํŠธ ํญ์ฃผexploding gradients๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด gradient norm clipping์„ ์•ˆ์ „์žฅ์น˜๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  4. Longer Warmup: ์ดˆ๊ธฐ ์•ˆ์ •์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด warmup ๋‹จ๊ณ„๋ฅผ ์—ฐ์žฅํ•ด ๋ณด์„ธ์š”.

References

Last updated