MoE Overview
1. MoE (Mixture-of-Expert) ๋?
1.1. ๊ฐ์
MoE (Mixture-of-Experts) ๋ชจ๋ธ์ ๊ฑฐ๋ํ ๋งค๊ฐ๋ณ์(ํ๋ผ๋ฏธํฐ)๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๊ธฐ ์ํด ๋ฑ์ฅํ ํฌ์sparse ๋ชจ๋ธ ์ํคํ ์ฒ์ ๋๋ค. ๋ค์์ ํ์ ์ ๊ฒฝ๋ง์ โ์ ๋ฌธ๊ฐexpertโ๋ก ๋๊ณ , ๋ผ์ฐํฐrouter ๋คํธ์ํฌ(๋๋ Gating network)๊ฐ ์ ๋ ฅ ํ ํฐ๋ณ๋ก ์์์ ์ ๋ฌธ๊ฐ๋ง ์ ํํ์ฌ ํ์ฑํํฉ๋๋ค. ์ด๋ฅผ ํตํด Forward pass์ ํ์ํ ๊ณ์ฐ๋์ด ๋ํญ ๊ฐ์ํ๋ ์ค์ผ์ผ๋ง ์ด์ ์ ์ป๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ๊ฐ๋จํ ์์ฝํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์ฉ๋ ์ฆ๊ฐ: ๋ชจ๋ธ์ด ํจ์ฌ ๋ ๋ง์ ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ํฌํจํ๊ฒ ๋์ด, ํ ํฐ ๋น ๊ณ์ฐ ๋น์ฉ์ด ํฌ๊ฒ ์ฆ๊ฐํ์ง ์์ผ๋ฉด์๋ ๋ ๋ค์ํ๊ณ ์ ๋ฌธํ๋ ๊ธฐ๋ฅ์ ํ์ตํฉ๋๋ค.
์๋์ ์ผ์ ํ ๊ณ์ฐ๋: ์ ์ฒด ๋ชจ๋ธ ํฌ๊ธฐ๋ ์ปค์ง๋๋ผ๋, ํ์ฑํ๋ ์ ๋ฌธ๊ฐ ์ ๋ฅผ ๊ณ ์ ํจ์ผ๋ก์จ ๋จ์ผ ํ ํฐ์ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํ ๊ณ์ฐ ๋น์ฉ(FLOPs)์ ๋๋ต ์ผ์ ํ๊ฒ ์ ์ง๋๊ฑฐ๋ ํจ์ฌ ๋๋ฆฌ๊ฒ ์ฆ๊ฐํ๊ฒ ๋ฉ๋๋ค.
์๋ ๊ทธ๋ฆผ์ MoE ๋ชจ๋ธ์ ๋ ์ด์ด ์์๋ก, ๋ผ์ฐํฐ๊ฐ ์ ๋ ฅ ํ ํฐ์ 2๊ฐ์ ์ ๋ฌธ๊ฐ FFN์ ๋ผ์ฐํ ํ๊ณ ํด๋น ์ ๋ฌธ๊ฐ์ ์ถ๋ ฅ์ ์ทจํฉํ๋ Top-2 ๋ผ์ฐํ ๋ฐฉ์์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฅผ ํตํด ํ ๋ ์ด์ด์์ ๋ค์ค ์ ๋ฌธ๊ฐ FFN๋ค์ด ๋์์ ์๋ํ๋ฉด์๋, ๊ฐ ํ ํฐ์ ์์ ์ ๋ฌธ๊ฐ์ ์ถ๋ ฅ๋ง ํ์ฉํ๊ฒ ๋ฉ๋๋ค. Router๋ ๊ฐ๋จํ ํผ๋ํฌ์๋ ๋คํธ์ํฌ(FFN; Feed Forward Network)๋ก, ์ผ๋ฐ์ ์ผ๋ก ํ ํฐ์ ์ ๋ ฅ ์๋ฒ ๋ฉ์ ์ ์ฉ๋๋ ๋จ์ผ ์ ํ ๋ ์ด์ด์ ๊ทธ ๋ค์ ์ค๋ ์ํํธ๋งฅ์ค ํจ์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด์ ๋ํด์๋ 1.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๋ฅผ ์ ๊ตํํ๋ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ต๋๋ค.
์ ๋ฌธ๊ฐ ๋จ์์ ์ธ๋ถํ ํ๋: Mixture of A Million Experts์ Scaling Laws for Fine-Grained Mixture of Experts ์ฐ๊ตฌ์์๋ ์ธ๋ถํ ์ ๋granularity๊ฐ ๋ชจ๋ธ์ ์ค์ผ์ผ๋ง ํจ์จ๊ณผ ์ฑ๋ฅ ํฅ์์ ํต์ฌ์ ์ธ ์์ธ์์ ๋ณด์ฌ์ฃผ์์ต๋๋ค.
๋ผ์ฐํ ์ ์ ๊ตํ ๋ฐ ์์ ์ฑ ํ๋ณด: Fine-grained ๊ตฌ์กฐ์์๋ ์ ๋ฌธ๊ฐ ์ ํ์ด ๋ง์์ง์๋ก ๋ผ์ฐํ ์ ๋ถ์์ ์ฑ์ด ์ปค์ง ์ ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ต๊ทผ์๋ ์ ๋ฌธ๊ฐ-ํ ํฐ ์นํ๋affinity๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ผ์ฐํ , ํ ํฐ ๊ฐ ๊ด๊ณ๋ฅผ ๊ณ ๋ คํ ๋ผ์ฐํ ๋ฑ์ด Expert-Token Resonance MoE ๋ ผ๋ฌธ์ ํตํด ์ ์๋๊ณ ์์ต๋๋ค.
๋์ ๋ผ์ฐํ ๋ฐ ์ฌํ ์กฐ์ (Post-routing): 2025๋ 9์์ ๊ณต๊ฐ๋ Ban&Pick ๋ ผ๋ฌธ์์๋ ํ์ต ์ดํ์๋ ์ค์ํ ์ ๋ฌธ๊ฐ๋ฅผ ๋์ ์ผ๋ก ์ ์งํ๊ณ ๋ถํ์ํ ์ ๋ฌธ๊ฐ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ์์ผ๋ก ์ถ๋ก ํจ์จ์ ๋์์ต๋๋ค. ์ฆ, ํ์ต ๋จ๊ณ์์ ๊ฒฐ์ ๋ ๋ผ์ฐํ ์ ๊ทธ๋๋ก ๋์ง ์๊ณ , ํ์ต ์ดํ์๋ ์ง์์ ์ผ๋ก ์กฐ์ ํจ์ผ๋ก์จ ํจ์จ์ฑ์ ๊ทน๋ํํ๋ ๋ฐฉํฅ์ผ๋ก ๋ฐ์ ํ๊ณ ์์ต๋๋ค.
Chain-of-Experts (CoE): ๊ธฐ์กด MoE๋ ์ ๋ฌธ๊ฐ๋ค์ด ๋ณ๋ ฌ์ ์ผ๋ก ๋ ๋ฆฝ ์๋ํ์ง๋ง, ์ต๊ทผ์๋ ์ ๋ฌธ๊ฐ ๊ฐ ์ํธ์์ฉ์ ํ์ฉํ๊ฑฐ๋, ์ ๋ ฅ์ด ์ฌ๋ฌ ์ ๋ฌธ๊ฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ๊ฑฐ์น๋ Chain-of-Experts (CoE) ๊ตฌ์กฐ๊ฐ ๋ฑ์ฅํ์ต๋๋ค. ์ด ๋ฐฉ์์ ๊ฐ ์ ๋ฌธ๊ฐ์ ์ถ๋ ฅ์ ๋ค์ ์ ๋ฌธ๊ฐ์ ์ ๋ฌํจ์ผ๋ก์จ ์ ๋ฌธ๊ฐ ์กฐํฉ์ ๋ค์์ฑ๊ณผ ํํ์ ๊น์ด๋ฅผ ๋์์ ํ๋ณดํ ์ ์์ต๋๋ค.
1.2. ์ํ์ ์ ์
๊ฐ ๋ชจ๋ธ์ ์๋hidden ์ฐจ์์ธ ๋ฒกํฐ ๋ก ํํ๋๋ ๋จ์ผ ์ ๋ ฅ ํ ํฐ์ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค. ๋ผ์ฐํฐ ์์ฒด๋ ๊ฐ๋จํ ์ ํ ๋ ์ด์ด๋ก, ์ด ์ด ์ ๋ฌธ๊ฐ ์์ธ ํ๋ จ ๊ฐ๋ฅํ ๊ฐ์ค์น ํ๋ ฌ ์ผ๋ก ์ ์ํฉ๋๋ค. ์ด ๋ ์ด์ด๋ ์ ๋ ฅ ํ ํฐ์ ์ฐจ์ ์ ๊ณต๊ฐ์ผ๋ก ํฌ์projectํ์ฌ ๊ฐ ์ ๋ฌธ๊ฐ์ ๋ํ ๋ก์งlogit์ ์์ฑํฉ๋๋ค.
: ๋ ์ด์ด์ ์ด ์ ๋ฌธ๊ฐ ์๋ก ๊ฐ ์ ๋ฌธ๊ฐ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ฆฝ์ ์ธ FFN์ ๋๋ค. (๊ฐ์ค์น๋ฅผ ๊ณต์ ํ์ง ์์ต๋๋ค.)
: ๋ผ์ฐํฐ์ ํ์ต ๊ฐ๋ฅํ ๊ฐ์ค์น ํ๋ ฌ
๊ฒฐ๊ณผ๋ก ๋์จ ๋ฒกํฐ๋ ์ด๋ค ์ ๋ฌธ๊ฐ๋ค์ด ์ ํ๋ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ ์๋ค์ ํฌํจํฉ๋๋ค. ํฌ์์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด, ์ด ๋ฒกํฐ์ top-k ํจ์๊ฐ ์ ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ธ ๊ฒฝ์ฐ ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ๊ฐ์ง ๋ ๋ช ์ ์ ๋ฌธ๊ฐ๋ง ์ ํ๋ฉ๋๋ค. ๋๋จธ์ง ์ ๋ฌธ๊ฐ๋ค์ ์ ์๋ ๋ชจ๋ 0์ผ๋ก ์ค์ ๋์ด ํ์ฌ ํ ํฐ์ ๋ํด ๋นํ์ฑํ๋ฉ๋๋ค.
๋ ์ด๋ค ์ ๋ฌธ๊ฐ๋ค์ด ์ ํ๋ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฐ ์ ๋ฌธ๊ฐ์ raw score๋ฅผ ํฌํจํฉ๋๋ค. ์ด๋ฌํ ์ ์๋ฅผ ํ๋ฅ ๋ถํฌ๋ก ๋ณํํ๊ธฐ ์ํด ๊ฐ ์ ๋ฌธ๊ฐ์ ๋ํด ์ํํธ๋งฅ์ค๋ฅผ ์ ์ฉํ์ฌ ํ๋ฅ ๋ถํฌ ๋ก ๋ณํํฉ๋๋ค.
์ถ๋ ฅ ๋ ๋ฐ์งdense ์ฐจ์ ๋ฒกํฐ๋ก, ๊ฐ ์์ ๋ ํ ํฐ ๊ฐ ์ ๋ฌธ๊ฐ ์ ํ ๋น๋ ๋ผ์ฐํฐ์ ์ ๋ขฐ๋๋ฅผ ๋ํ๋ ๋๋ค. ์ํํธ๋งฅ์ค ํจ์์ด๊ธฐ ๋๋ฌธ์ ์ ๋ชจ๋ ์์์ ํฉ์ 1์ ๋๋ค.
์ด์ ์ด๋ฌํ ๋จ๊ณ๋ค์ ๊ฒฐํฉํ์ฌ MoE ๋ ์ด์ด์ ์ต์ข ์ถ๋ ฅ ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. ๋ผ์ฐํฐ ๋ ์ ๋ ฅ ํํ (๋ณดํต ํธ๋์คํฌ๋จธ์ ์ ํ ์ดํ ์ ๊ณ์ธต ์ถ๋ ฅ)๋ฅผ ๊ฒ์ฌํ์ฌ ์ด๋ค ์ ๋ฌธ๊ฐ๊ฐ ์ด ์ ๋ ฅ์ ์ฒ๋ฆฌํ ์ง ๋ํ๋ด๋ ํ๋ฅ ๋๋ ๊ฐ์ค์น๋ฅผ ์์ฑํฉ๋๋ค. ์ ํ๋ ์ ๋ฌธ๊ฐ๋ค์ ์ถ๋ ฅ ๋ ๋ผ์ฐํฐ์ ์ ์๋ก ๊ฐ์คํฉ๋์ด ๊ฒฐํฉ๋ฉ๋๋ค.
๊ฐ ์ ๋ฌธ๊ฐ ๋ ์์ฒด ๋งค๊ฐ๋ณ์ ์งํฉ์ ๊ฐ์ง๋๋ค. ํ์ค 2-layer FFN ์ ๋ฌธ๊ฐ๋ ๋ค์๊ณผ ๊ฐ์ด ํํ ๊ฐ๋ฅํฉ๋๋ค.
์ฌ๊ธฐ์ ์ ๋ ๊ฐ๊ฐ ์ ๋ฌธ๊ฐ ์ ์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ์ ํ ๋ ์ด์ด์ ๊ฐ์ค์น ํ๋ ฌ์ ๋๋ค.
1.3. Sparse MoE (Top-k ๋ผ์ฐํ
)
์์์ ์ฐ์ถํ ๋ฐ์งdense ํ๋ฅ ๋ฒกํฐ์ธ ๋ฒกํฐ๋ ๋ชจ๋ ์ ๋ฌธ๊ฐ๊ฐ ์ถ๋ ฅ์ ๊ธฐ์ฌํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ์ด๋ MoE์ ๊ณ์ฐ ํจ์จ์ฑ์ด ๋์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ํฌ์์ฑsparse์ ๊ฐ์ ํ๊ธฐ ์ํด top-k ์ ํ ๋ฉ์ปค๋์ฆ์ ์ ์ฉํจ์ผ๋ก์จ, ์ฃผ์ด์ง ํ ํฐ์ ๋ํด ์ ๋ฌธ๊ฐ์ ์ผ๋ถ๋ง ํ์ฑํํ ์ ์์ต๋๋ค. ์ด๋ ๋ชจ๋ ๊ฐ์ ์ ๋ฌธ๊ฐ๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋ก์ง ๋ฒกํฐ ์์ ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ๊ฐ์ง ๊ฐ์ ์ ๋ฌธ๊ฐ๋ฅผ ์ ํํ๋ ๊ฒ์ ๋๋ค. ์ ๊ฐ์ ๋๊ฐ 1 ๋๋ 2๋ก ์ค์ ๋ฉ๋๋ค. (์์ปจ๋, ์ธ ๊ฒฝ์ฐ, ๋ผ์ฐํฐ๋ ๊ฐ์ฅ ๋์ ๋ก์ง์ ๊ฐ์ง ๋ ์ ๋ฌธ๊ฐ๋ฅผ ์๋ณํฉ๋๋ค.) ๋ค๋ฅธ ๋ชจ๋ ์ ๋ฌธ๊ฐ๋ ์ด ํน์ ํ ํฐ์ ๋ํด ๋ฌด์๋์ด, ๊ณ์ฐ ๋น์ฉ์ด ์ด ์ ๋ฌธ๊ฐ ์ ์ด ์๋ ์ ๋น๋กํฉ๋๋ค.
๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ด ์งํ๋ฉ๋๋ค.
์ ์ ๊ณ์ฐ: ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
Top-k ์ ํ: ์์ ๊ฐ์ฅ ํฐ ๊ฐ ๊ฐ์ ํด๋นํ๋ ์ธ๋ฑ์ค ๋ฅผ ์๋ณํฉ๋๋ค.
์ ์ ์ฌ์ ๊ทํ ๋ฐ ๊ฐ์คํฉ ๊ณ์ฐ: ์ ํ๋ ๋ช ์ ์ ๋ฌธ๊ฐ์ ๋ํด์๋ง ์ํํธ๋งฅ์ค๋ฅผ ์ ์ฉํ์ฌ ์ ์(ํ๋ฅ )๋ฅผ ์ฌ์ ๊ทํํฉ๋๋ค. ์ต์ข ์ถ๋ ฅ์ (์ฌ์ ๊ทํ๋) ๊ฒ์ดํ ํ๋ฅ ์ ๊ฐ์ค์น๋ก ์ฌ์ฉํ์ฌ ์ ํ๋ ์ ๋ฌธ๊ฐ๋ค์ ์ถ๋ ฅ์ ๊ฐ์ค ํฉ์ ๋๋ค.
Sparse MoE ์ ๊ทผ๋ฒ์ ๋ชจ๋ธ ํฌ๊ธฐ(๋งค๊ฐ๋ณ์ ์)์ ๊ณ์ฐ ๋น์ฉ(ํ ํฐ๋น FLOPs)์ ๋ถ๋ฆฌํ๋ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ์ ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์กฐ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง ์ด๊ฑฐ๋ ๋ชจ๋ธ์ ๊ตฌ์ถํ๋ฉด์๋ ํ๋ จ๊ณผ ์ถ๋ก ์ ๊ณ์ฐ ์ฉ๋์ ๊ด๋ฆฌ ๊ฐ๋ฅํ ์์ค์ผ๋ก ์ ์งํ ์ ์์ต๋๋ค.
1.4. Dense ๋ชจ๋ธ๊ณผ Sparse MoE ๋ชจ๋ธ์ ๊ณ์ฐ ๋น์ฉ (FLOPs) ๋น๊ต

Dense ๋ชจ๋ธ
๋ฐ์งdense ๋ชจ๋ธ์์๋ ์ฃผ์ด์ง ์ธต์ ๋ชจ๋ ์ ๋ ฅ ํ ํฐ์ด ๋ชจ๋ ํ๋ผ๋ฏธํฐ์ ์ํด ์ฒ๋ฆฌํ๊ธฐ์ ํ ํฐ๋น FLOPs๋ ๋ฐ์ง ๊ณ์ธต ํ๋ผ๋ฏธํฐ์ ํฌ๊ธฐ์ ๋น๋กํฉ๋๋ค. ์ ๋ ฅ/์ถ๋ ฅ ์ฐจ์์ด ์ด๊ณ ์ค๊ฐ ์ฐจ์์ด ์ธ FFN์ ๊ฒฝ์ฐ, ๋จ์ผ ํ ํฐ์ ํ์ํ ํ๋ผ๋ฏธํฐ ์์ ๊ณ์ฐ๋์ ๋ชจ๋ธ์ ์ฐจ์, ํนํ ๊ณผ ์ ์ ๋น๋กํฉ๋๋ค.
์ด ์์ ์ ์ฆ๊ฐ์์ผ ๋ชจ๋ธ์ ๋ ๋๋ํ๊ฒ ๋ง๋ค๋ ค๋ฉด ๋ฐฉ๋ํ ๊ณ์ฐ ๋น์ฉ์ ์ง๋ถํด์ผ ํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
Llama3-70B ํ๋ผ๋ฏธํฐ ์์
๋ชจ๋ธ ๊ตฌ์ฑ
๋ ์ด์ด ๊ฐ์: 80
Hidden dim: 8,192
Vocab size: 100,000
Query heads: 64๊ฐ
Key/Value heads: 8๊ฐ (8:1 ๊ทธ๋ฃนํ)
Head dim: 128
๋ ์ด์ด๋น ๋ฉํฐํค๋ ์ดํ ์ ํ๋ผ๋ฏธํฐ ๊ฐ์
Query projection: 8,192 ร (64 ร 128) = 8,192 ร 8,192 โ 67M
Key projection: 8,192 ร (8 ร 128) = 8,192 ร 1,024 โ 8.4M
Value projection: 8,192 ร (8 ร 128) = 8,192 ร 1,024 โ 8.4M
Output projection: 8,192 ร 8,192 โ 67M
์ด ํ๋ผ๋ฏธํฐ: ์ฝ 151M (A)
๋ ์ด์ด๋น FFN ํ๋ผ๋ฏธํฐ ๊ฐ์
Intermediate size: 28,672: ํ์ค FFN์ 4 ร hidden_size = 32,768์ด๋ SwiGLU๋ gating ๋๋ฌธ์ ์ฝ๊ฐ ์๊ฒ ์ค์ (2/3 ร 4 โ 2.67๋ฐฐ)ํ๊ณ ๋ฉํ์์ ํ๋์จ์ด ์ต์ ํ๋ฅผ ์ํด 256์ ๋ฐฐ์๋ก ์กฐ์ ํ๋ฉด์ ์กฐ์ ํ ์ต์ ์์น์ ๋๋ค.
Gate projection: 8,192 ร 28,672 โ 235M
Up projection: 8,192 ร 28,672 โ 235M
Down projection: 28,672 ร 8,192 โ 235M
์ด ํ๋ผ๋ฏธํฐ : ์ฝ 705M (B)
LayerNorm ํ๋ผ๋ฏธํฐ ๊ฐ์: 8,192 ร 2 โ 16K (C)
๋ ์ด์ด๋น ํ๋ผ๋ฏธํฐ ๊ฐ์: A + B + C โ ์ฝ 856M
80๊ฐ ๋ ์ด์ด์ด๋ฏ๋ก 856M ร 80 โ 68.5B
FFN์์๋ง 705M ร 80 โ 58.4B ํ๋ผ๋ฏธํฐ๋ฅผ ์ ์ ํ๋ฉฐ, ์ด๋ ์ด ํ๋ผ๋ฉํฐ์ 85%์ ๋๋ค.
Sparse MoE ๋ชจ๋ธ
Sparse MoE ๋ชจ๋ธ์ ๊ฒฝ์ฐ ๋ง์ ์ ๋ฌธ๊ฐ๋ค์ ๊ฑธ์ณ ๋ฐฉ๋ํ ์์ ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ํฌํจํ๊ณ ์์์ง๋ผ๋, ์ฃผ์ด์ง ํ ํฐ์ ๋ํด ํ์ฑํ๋๋ ํ๋ผ๋ฏธํฐ๋ ๊ทธ ์ค ์ผ๋ถ์ ๋ถ๊ณผํฉ๋๋ค. ์์ปจ๋ ์ ๋ฌธ๊ฐ๋ฅผ 16๋ช ์์ 64๋ช ์ผ๋ก ๋๋ ค๋ ํ ํฐ๋น FLOPs๋ ์ฆ๊ฐํ์ง ์์ต๋๋ค.
MoE ๋ ์ด์ด์ ์ด ํ๋ผ๋ฏธํฐ ์๋ ๋ชจ๋ ์ ๋ฌธ๊ฐ๋ค์ ํฉ์ ๋๋ค.
ํ์ง๋ง FLOPs๋ ํ์ฑํ๋ ์ ๋ฌธ๊ฐ ์ ์๋ง ๋น๋กํฉ๋๋ค.
์ด๊ฒ์ด MoE ์ํคํ ์ฒ์ ํต์ฌ ์ฅ์ ์ ๋๋ค. ์ ๋ฌธ๊ฐ ์ ๋ฅผ ๋๋ ค ๋ชจ๋ธ์ ์ฉ๋capacity(์ด ํ๋ผ๋ฏธํฐ ์)์ ๊ทน์ ์ผ๋ก ์ฆ๊ฐ์ํค๋ฉด์๋, ํ ํฐ๋น ๊ณ์ฐ ๋น์ฉ์ ๋ฅผ ๊ณ ์ ํจ์ผ๋ก์จ ์ผ์ ํ๊ฒ ์ ์งํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ง ๋ชจ๋ธ๋ณด๋ค ํจ์ฌ ์์ ๊ณ์ฐ ์์ฐ์ผ๋ก๋ ์์กฐ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง ๋ชจ๋ธ์ ํ๋ จํ ์ ์๊ฒ ํฉ๋๋ค.
2. Router ๋คํธ์ํฌ ํ๋ จ
์ง๊ด์ ์ผ๋ก ํน์ ์ ํ์ ํ ํฐ์ ํน์ ์ ๋ฌธ๊ฐ์๊ฒ ๋ผ์ฐํ ํ๋ ๊ฒ์ด ์ง์์ ์ผ๋ก ๋ชจ๋ธ์ loss๋ฅผ ์ค์ผ ์ ์๊ฒ, ์ค๋ฅ์ญ์ ํ๋ฅผ ํตํด ๋ฅผ ์ ๋ฐ์ดํธํ์ฌ ๋ฏธ๋์ ํน์ ์ ๋ฌธ๊ฐ ํ ๋น์ ํ๋ฅ ์ ์ฆ๊ฐ์ํค๋ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ์ํํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๊ณผ์ ์์ ํฐ ๋์ ๊ฐ ๋ฐ์ํ๋๋ฐ ๊ฒ์ดํ ๋คํธ์ํฌ๊ฐ ์์์ ์ ๋ฌธ๊ฐ๋ค๋ง ์ ํธํ์ฌ ๋ค๋ฅธ ์ ๋ฌธ๊ฐ๋ค์ ํ๋ จ๋์ง ์์ ์ํ๋ก ๋จ๊ฒจ๋๋ ๋ถ๊ท ํ ๋ผ์ฐํ ๋ฌธ์ (๋๋ ์ ๋ฌธ๊ฐ ๋ถ๊ดดexpert collapse)๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ๋ณด์กฐ ์์คauxiliary loss (๋๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์์ค), ์ ๋ฌธ๊ฐ ์ฉ๋capacity factor, ๋ผ์ฐํฐ ๋ ธ์ด์ฆ, ์ ๋ฌธ๊ฐ ์ ํ ๋ผ์ฐํ ๋ฑ์ ๊ธฐ๋ฒ์ ์ ์ฉํฉ๋๋ค.
๋ณด์กฐ ์์ค (Auxiliary Loss): ๋ก๋ ๋ฐธ๋ฐ์ฑ ์์ค์ ๋ณด์กฐ ์์ค์ ์ถ๊ฐํจ์ผ๋ก์จ ์ ๋ฌธ๊ฐ์ ๋ถํฌ๋ฅผ ๊ท ๋ฑํ๊ฒ ํฉ๋๋ค.
๋ผ์ฐํฐ ๋ ธ์ด์ฆ: top-k ์ ๋ฌธ๊ฐ๋ฅผ ์ ํํ๊ธฐ ์ ์ ๊ฒ์ดํ ๋คํธ์ํฌ์ ๋ก์ง์ ์๋์ ๋ฌด์์ ๋ ธ์ด์ฆ๋ฅผ ์ถ๊ฐํ์ฌ ์ ํ๋ ํ๋ฅ ์ด ๋ฎ์ ์ ๋ฌธ๊ฐ๋ ๊ฐ๋ ํ์ํ๋๋ก ๊ฐ์ ํฉ๋๋ค.
์ ๋ฌธ๊ฐ ์ฉ๋ (Expert Capacity): ์ ๋ฌธ๊ฐ๊ฐ ์์ฉํ ์ ์๋ ํ ํฐ ์์ ๋ํ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํฉ๋๋ค.
์ ๋ฌธ๊ฐ ์ ํ ๋ผ์ฐํ (Expert Choice Routing): ์ ๋ฌธ๊ฐ๊ฐ ์์ ์๊ฒ ๋๋ฌํ ํ ํฐ ์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ๊ฐ์ ํ ํฐ์ ์ ํํ๊ณ , ๋๋จธ์ง๋ ๋ฒ๋ฆฝ๋๋ค.
2.1. ์ ๋ฌธ๊ฐ ๋ถ๊ดด (Expert Collapse)
์ ๋ฌธ๊ฐ ๋ถ๊ดด๋ ๋ผ์ฐํฐ๊ฐ ๋๋ถ๋ถ์ ํ ํฐ์ ์๊ณ ์ ํธ๋๋ ์ ๋ฌธ๊ฐ ๋ถ๋ถ์งํฉ์ผ๋ก ๋ผ์ฐํ ํ๋ ๊ฒ์ ํ์ตํ๋ ๋ฐ๋ฉด, ๋๋จธ์ง ์ ๋ฌธ๊ฐ๋ค์ ์ ๊ฑฐ๋ ์์ ํ ํฐ์ ๋ฐ์ง ๋ชปํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ํ์ฉ๋๊ฐ ๋ฎ์ ์ ๋ฌธ๊ฐ๋ค์ ์๋ฏธ ์๋ ์ ๋ฌธํ๋ฅผ ํ์ตํ์ง ๋ชปํ๊ณ , ํจ๊ณผ์ ์ผ๋ก "์ฃฝ์" ๋งค๊ฐ๋ณ์๊ฐ ๋ฉ๋๋ค.
MoE ๋ชจ๋ธ ํ๋ จ ์ค์๋ ์ ๋ฌธ๊ฐ ๋ถ๊ดดexpert collapse ํ์์ด ์์ฐ์ค๋ฝ๊ฒ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค:
์ด๊ธฐํ: ๊ฒ์ดํ ๋คํธ์ํฌ์ ์ด๊ธฐ ๋ฌด์์ ๊ฐ์ค์น๊ฐ ํน์ ์ ๋ฌธ๊ฐ๋ค์ ๋ณธ์ง์ ์ผ๋ก ์ ํธํ ์ ์์ต๋๋ค.
์ด๊ธฐ ํ๋ จ ์ญํdynamics: ์ด๊ธฐ ๊ทธ๋๋์ธํธ๊ฐ ์ด๊ธฐ์ ์ค์ ๋ ๋ผ์ฐํ ํจํด์ ๊ฐํํ์ฌ, ์ฝ๊ฐ ๋ ์ ์ํํ๋ ์ผ๋ถ ์ ๋ฌธ๊ฐ๋ค์ด ์ ์ ๋ ๋ง์ ํ ํฐ์ ๋ฐ๋ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ถํฌ: ํน์ ํน์ง์ด๋ ํจํด์ด ํ๋ จ ๋ฐ์ดํฐ์ ๋ ๋ง์ด ์กด์ฌํ ์ ์์ด, ์ต์ ํ๊ฐ ์ ๋ ๊ฒ์ดํ ๋คํธ์ํฌ๊ฐ ์ด๋ฅผ ํน์ ์ ๋ฌธ๊ฐ์๊ฒ ๋ผ์ฐํ ํ๊ฒ ๋๊ณ , ํด๋น ํจํด์ด ํํ ๊ฒฝ์ฐ ์ ๋ฌธ๊ฐ๋ค์ด ๊ณผ๋ถํ๋ ์ ์์ต๋๋ค.
๋ช ์์ ๋ฉ์ปค๋์ฆ ๋ถ์กฑ: ๋ถํ ๊ท ํ์ ์ฅ๋ คํ๋ ๋ฉ์ปค๋์ฆ์ด ์์ผ๋ฉด ๋ถํ๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ถ๋ฐฐํ ๋๊ธฐ๊ฐ ์์ต๋๋ค.
์ ๋ฌธ๊ฐ ๋ถ๊ดด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๋จ์ํ ์ต์ ํ ์ธ๋ถ์ฌํญ์ด ์๋๋ผ, ํฌ๊ณ ์ฑ๋ฅ ์ข์ MoE ๋ชจ๋ธ์ ์ฑ๊ณต์ ์ผ๋ก ํ๋ จํ๊ธฐ ์ํ ํ์ ์ ์ฐจ์ ๋๋ค.

์ ๋ฌธ๊ฐ ๋ถ๊ดด๋ฅผ ์๋ณํ๋ ค๋ฉด ํ๋ จ ๊ณผ์ ์ ๋ฐ์ ๊ฑธ์ณ ๋ผ์ฐํฐ ํ๋์ ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค. ๋จ์ํ ์ด ์์ค์ ๊ด์ฐฐํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ถ์ถฉ๋ถํ๋ฉฐ, ๊ทผ๋ณธ์ ์ธ ๋ถ๊ท ํ์ ๋๋ฌ๋ด์ง ๋ชปํ ์ ์์ต๋๋ค. ์ง๋จ์ ์ํด ์๋์ ์ฃผ์ ์งํ๋ฅผ ํ์ฉํฉ๋๋ค.
์ ๋ฌธ๊ฐ ํ์ฉ๋ (Expert Utilization): ์ค์ ๋ ํ๋ จ ๋จ๊ณ ์์ ๊ฑธ์ณ ๊ฐ ์ ๋ฌธ๊ฐ์๊ฒ ์ ๋ฌ๋ ํ ํฐ ์๋ฅผ ์ถ์ ํฉ๋๋ค. ์ ๋ฌธ๊ฐ๋น ํ ํฐ ์์ ํ์คํ ๊ทธ๋จ์ด ์ฌํ๊ฒ ์น์ฐ์ณ ์๋ค๋ฉด ์ ๋ฌธ๊ณผ ๋ถ๊ดด์์ ์๋ฏธํฉ๋๋ค.
๋ก๋ ๋ฐธ๋ฐ์ฑ ์์ค (Load Balancing Loss): ๋์ ๊ฐ์ ๋ผ์ฐํฐ๊ฐ ๋ก๋ ๊ท ํ์ ๋ง์ถ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๊ณ ์์์ ์์ฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฎ์ ๊ฐ์ด ํญ์ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ ์๋๋๋ค. ๋ผ์ฐํฐ๊ฐ ํ ํฐ์ ๋๋กญํ์ฌ ๋ฎ์ ์์ค์ ๋ฌ์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ณ๋ ๊ณ์ (CV; Coefficient Variation): ์ ๋ฌธ๊ฐ๋น ํ ํฐ ๋ถํฌ์ ๋ณ๋ ๊ณ์๋ก ํ์คํธ์ฐจ๋ฅผ ํ๊ท ์ผ๋ก ๋๋ ๊ฐ์ผ๋ก ์ ์๋ฉ๋๋ค. 0์ ๊ฐ๊น์ด CV๋ ์๋ฒฝํ ๊ท ํ์ ๋ํ๋ด๊ณ , ๋์ CV๋ ์๋นํ ๋ถ๊ท ํ์ ๋ํ๋ ๋๋ค. ์ฝ๊ฒ ๋งํด, ๊ฐ ์ ๋ฌธ๊ฐ์ ์ค์๋ ์ ์๊ฐ ๋ง์ด ๋ค๋ฅด๋ฉด CV๊ฐ ๋๊ณ ๋ชจ๋ ์ ๋ฌธ๊ฐ์ ์ค์๋ ์ ์๊ฐ ๋น์ทํ๋ฉด CV๊ฐ ๋ฎ์์ง๋๋ค.
: ์ ๋ฌธ๊ฐ ์, : ํ๋ จ ๋จ๊ณ์์ ์ ๋ฌธ๊ฐ ์ ๋ก๋(ํ ํฐ ์), : ํ๊ท ๋ก๋

2.2. ๋ณด์กฐ ์์ค (Auxiliary Loss)
๋ณด์กฐ ์์ค์ ๋ชฉํ๋ ๋ผ์ฐํฐ์ ๋ถ๊ท ํ์ ๋ํด ํ๋ํฐ๋ฅผ ์ฃผ๋ ์์ค ํญ์ ๋ง๋๋ ๊ฒ์ ๋๋ค. Sparsely-Gated MoE ๋ ผ๋ฌธ์์ ๋์ ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ๊ทผ๋ฒ์ ๋ฐฐ์น์์ ํ ํฐ๊ณผ ๋ผ์ฐํฐ ํ๋ฅ ๋ถํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ๊ณ์ฐํ๋ ๊ฒ์ ๋๋ค.
๋ณด์กฐ ์์ค ํจ์
๋ณด์กฐ ์์ค ๋ ์ด ๋ ๋ฒกํฐ์ ๋ด์ ์ผ๋ก ๊ณ์ฐ๋๋ฉฐ, ์ ๋ฌธ๊ฐ ์ ์ผ๋ก ์ค์ผ์ผ๋ฉ๋๋ค.
์ ๋ฌธ๊ฐ๋น ํ ํฐ ๋น์จ (): ์ ๋ฌธ๊ฐ ๋ก ๋ณด๋ด์ง๋ ํ ํฐ์ ์๋ฅผ ์ธก์ ํฉ๋๋ค. ๋ฐฐ์น์ ๊ฐ์ ํ ํฐ์ด ์๊ณ top-1 ๊ฒ์ดํ ์ ์ฌ์ฉํ๋ค๋ฉด, ์ด๋ ๋จ์ํ ์ ๋ฌธ๊ฐ ๋ก ๋ผ์ฐํ ๋ ํ ํฐ ์๋ฅผ ๋ก ๋๋ ๊ฒ์ ๋๋ค.
์ ๋ฌธ๊ฐ๋น ํ๊ท ๋ผ์ฐํฐ ํ๋ฅ (): ๋ฐฐ์น์ ๋ชจ๋ ํ ํฐ์ ๊ฑธ์ณ ๋ผ์ฐํฐ๊ฐ ์ ๋ฌธ๊ฐ ์ ํ ๋นํ๋ ํ๊ท ํ๋ฅ (๋๋ ๊ฒ์ดํ ์ ์)์ ๋๋ค. ๋ผ์ฐํฐ๊ฐ ์ ๋ฌธ๊ฐ ์๊ฒ ๋ถ์ฌํ๋ "์ค์๋"์ ๋ํ๋ ๋๋ค.
์ด ์์ค์ ์ต์ํํ๊ธฐ ์ํด, ๋ชจ๋ธ์ ๋จ์ผ ์ ๋ฌธ๊ฐ ๊ฐ ๋์ ํ ํฐ ๋น์จ ์ ๋์ ํ๊ท ํ๋ฅ ๋ฅผ ๋์์ ๊ฐ๋ ๊ฒ์ ๋ฐฉ์งํด์ผ ํฉ๋๋ค. ์์ค์ ๊ณฑ ๊ฐ ์๊ณ ๊ณ ๋ฅด๊ฒ ๋ถํฌ๋ ๋ ๊ฐ์ฅ ๋ฎ์ผ๋ฉฐ, ์ด๋ ๋ชจ๋ ์ ๋ฌธ๊ฐ์ ๊ฑธ์ณ ๋ก๋๊ฐ ๊ท ํ์ ์ด๋ฃฐ ๋ ๋ฐ์ํฉ๋๋ค.

๋ณด์กฐ ์์ค ํจ์๋ ๋ณด๋ค ๋ค์ํ ํํ๋ก ์ ์ํ ์ ์์ต๋๋ค. ์์ปจ๋ DeepSpeed-MoE๋ ์๋์ ๊ฐ์ ๋ณด์กฐ ์์ค ํจ์๋ฅผ ์ ์ํฉ๋๋ค.
๋ํ, ๋ถ๊ท ํํ ํ ํฐ ๋ถํฌ์ ์ํฅ์ ๋ ์ํํ๊ธฐ ์ํด DeepSpeed-MoE๋ ์ ํ๋ ์ ๋ฌธ๊ฐ์ ์ถ๋ ฅ๋ฌผ์ ๋ฐ์ง FFN์ ์ถ๋ ฅ๊ณผ ๊ฒฐํฉํ๋Residual-MoE ์ํคํ ์ฒ๋ฅผ ๋์ ํ์ต๋๋ค:
Router z-์์ค
MoE ๊ตฌ์กฐ์์๋ ๋ผ์ฐํฐ๊ฐ softmax ๋๋ sparse gating ์ฐ์ฐ์ ํด์ ์ ๋ฌธ๊ฐ ์ ํ ํ๋ฅ ์ ๊ณ์ฐํ๋ฏ๋ก, ๋ผ์ฐํฐ์ ์ ๋ ฅ ๋ก์งlogits(์ ๊ทํ ์ด์ ์ ์)์ด ๋งค์ฐ ์ปค์ง๋ฉด ์ง์exp ์ฐ์ฐ์์ ์ค๋ฒํ๋ก์ฐ, ์ ๋ฐ๋ ์์คround-off error, ๋ถ์์ ํ ๊ธฐ์ธ๊ธฐ ๋ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. router-z ์์ค์ ์ ๋ฌธ๊ฐ ์ ํ ํ๋ฅ ๊ณผ๋ ์ง์ ์ ์ธ ๊ด๊ณ ์๋, ๋ผ์ฐํฐ์ ๋ก์ง ๊ฐ์ด ๋๋ฌด ์ปค์ง๋ ๊ฑธ ์ต์ ํ๊ธฐ ์ํ ๋ณด์กฐ ์์ค ํญ์ ์ถ๊ฐํ์ฌ ์์น ์์ ์ฑ๊ณผ ํ๋ จ ์์ ์ฑ์ ํ๋ณดํ๋ ๊ธฐ๋ฒ์ผ๋ก, ST-MoE ๋ ผ๋ฌธ์์ ์ฒ์ ์ ์๋์๊ณ ์ฌ๋ฌ MoE ์ํคํ ์ฒ์์ ํ์ฉํ๊ณ ์์ต๋๋ค.
: ๋ฐฐ์น ๋ด ํ ํฐ ์ ๋๋ ์ํ ์
: ๋ฒ์งธ ํ ํฐ/์ํ์ ๋ผ์ฐํฐ๊ฐ ์ ๋ฌธ๊ฐ ์ ๋ํด ๊ณ์ฐํ ๋ก์ง (softmax ์ฐ์ฐ ์ด์ ์ ์)
: softmax ๊ณ์ฐ์ ์ ๊ทํnormalization ์ ๊ทํ ํญ๊ณผ ๊ด๋ จ์ด ์๋๋ฐ, ์ด ๊ฐ์ด ์ง๋์น๊ฒ ํฌ๋ฉด ๋ผ์ฐํฐ ๋ก์ง ์ ๋ฐ์ด โ์ค์ผ์ผ์ด ์ปค์ง๋คโ๋ ์๋ฏธ์ ๋๋ค. ๊ทธ๊ฑธ ์ ๊ณฑ๋ ํญ์ผ๋ก ํจ๋ํฐ๋ฅผ ์ฃผ๋ฉด, ๋ผ์ฐํฐ๊ฐ ๋ฌด๋ถ๋ณํ๊ฒ ํฐ ๊ฐ์ ์ฐ์ง ๋ชปํ๋๋ก ์ต์ ํ๋ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ซ์์ ์ผ๋ก ์์ ํด์ง๊ณ , softmax ์ง์๋ถ ์ฐ์ฐ์ด ๊ณผ๋ํ ์ค๋ฒํ๋ก์ฐ๋ ์์น ๋ถ์์ ์ฑ์ ๋ ์ผ์ผํค๊ฒ ๋ฉ๋๋ค.
์ต์ข
์์ค ํจ์
๋ณด์กฐ ์์ค์ ์์ ์์ค()๊ณผ ๊ฒฐํฉ๋์ด ์ญ์ ํ์ ์ฌ์ฉ๋๋ ์ต์ข ์์ค ํจ์๋ฅผ ํ์ฑํฉ๋๋ค.
ํ์ดํผํ๋ผ๋ฏธํฐ ๋ ์ข
์ข
load_balance_loss_coef๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ, ๋ณด์กฐ ์์ค์ ๊ฐ๋๋ฅผ ์ ์ดํ๋ ์์ ์ค์นผ๋ผ ๊ฐ์
๋๋ค.
๊ฐ ๋๋ฌด ์์ผ๋ฉด, ๊ท ํ ํ์ด ๋๋ฌด ์ฝํด์ ์ ๋ฌธ๊ฐ ๋ถ๊ดด๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๊ฐ ๋๋ฌด ํฌ๋ฉด, ๋ชจ๋ธ์ด ์ฃผ์ ์์ ์ ์ฑ๋ฅ์ ํฌ์ํ๋ฉด์ ์๋ฒฝํ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ฐ์ ์ํ์ฌ ์ ์ฒด์ ์ธ ์ ํ๋๊ฐ ๋จ์ด์ง ์ ์์ต๋๋ค.
ํ์ดํผํ๋ผ๋ฏธํฐ ๋ ์ข
์ข
router_z_loss_coef๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ, router z-์์ค์ ๊ฐ๋๋ฅผ ์ ์ดํ๋ ์์ ์ค์นผ๋ผ ๊ฐ์
๋๋ค.
๊ฐ ๋๋ฌด ํฌ๋ฉด, ํ๋ จ ์ด๊ธฐ ์์ ์ฑ์ด ๋จ์ด์ง๊ณ loss ์ง๋์ด ์ปค์ง๊ฑฐ๋ ๋ผ์ฐํ ์ด ์ง๋์น๊ฒ ํ ์ ๋ฌธ๊ฐ์ ๋ชฐ๋ฆฌ๋ ํ์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
๊ฐ ๋๋ฌด ํฌ๋ฉด, ๋ผ์ฐํฐ๊ฐ ๊ฑฐ์ ๊ท ๋ฑํ ํ๋ฅ ์ ๋ฟ๋ฆฌ๋ ์์ค์์ ๊ตณ์ด ๋ฒ๋ ค, MoE์ ์ฅ์ ์ธ ํํ ๋ค์์ฑ๊ณผ ์ ๋ฌธ๊ฐ ์ ๋ฌธํ ํจ๊ณผ๋ฅผ ๋จ์ด๋จ๋ฆด ์ํ์ด ์์ต๋๋ค.
์ ํฉํ ๊ฐ์ ์ฐพ๋ ๊ฒ์ MoE ๋ชจ๋ธ์ ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋ ๊ณผ์ ์ด๋ฉฐ, ๊ถ์ฅ ๋ฒ ์ด์ค๋ผ์ธ์ ์ ๋๋ค. (์ฐธ์กฐ: NVIDIA NeMo Framework User Guide)
์ค์ผ์ค๋ง์ ๋ชจ๋ธ๊ณผ ๋ฐ์ดํฐ์ ๋ฐ๋ผ ๊ฐ๋ณ์ ์ผ๋ก ๋์๋ ํธ์ด ์ข์ต๋๋ค. ํ์ ์์ ํํ ์ ๋ต์ ์ด๋ฐ์๋ ๊ท์ ๋ฅผ ์กฐ๊ธ ๊ฐํ๊ฒ, ์ดํ ์๋งํ ๋ฎ์ถ๋ ๋ฐฉ์์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ด๊ธฐ์๋ ๋ณด์กฐ ์์ค ๊ฐ์ค์น ๊ณ์๋ฅผ ์กฐ๊ธ ํฐ ๊ฐ์ผ๋ก ์์ํด์ ์์ ํ ๊ตฌ๊ฐ์ ์ง์ ํ ๋ ์ ์ฐจ ๊ฐ์์ํค๋ ์ค์ผ์ค๋ง์ ์ ์ฉํ๋ฉด, ์ด๊ธฐ ๋ถ๊ดด๋ฅผ ๋ง์ผ๋ฉด์ ํ๋ฐ์๋ ์ ๋ฌธ๊ฐ ํนํ ์ฌ์ง๋ฅผ ๋๋ ค์ค ์ ์์ต๋๋ค. ์ต๊ทผ ๋๊ท๋ชจ MoE ํ๋ จ ๋ ธํ์ฐ์์๋ โ๋ถํ๊ฐ ์ด๋ฏธ ์ ๊ท ํ์ ์ด๋ฃจ๋ฉด ๋ณด์กฐ ์์ค ๊ณ์๋ฅผ ๋ฎ์ถ๊ณ , ๋ถ๊ท ํ์ด ํฌ๋ฉด ์ผ์์ ์ผ๋ก ์ฌ๋ ค์ ๊ฐ์ ๊ท ํ์ ์ค๋คโ๋ ์ํ ๊ธฐ๋ฐ ์กฐ์ ์ ๊ถํฉ๋๋ค.
ํ์ธํ๋ ๋จ๊ณ์์๋ ๋ณด์กฐ ์์ค ๊ฐ์ค์น ๊ณ์๋ฅผ ํฌ๊ฒ ๋ฎ์ถ๊ฑฐ๋ 0์ผ๋ก ๋์ด๋ ์ฑ๋ฅ ์์ค์ด ํฌ์ง ์๋ค๋ ์ฐ๊ตฌ ๊ฒฐ๊ณผ๋ ์์ต๋๋ค.

2.3. ์ ๋ฌธ๊ฐ ์ฉ๋ (Expert Capacity)
์ ๋ฌธ๊ฐ ์ฉ๋expert capacity์ ์ผ๋ฐ์ ์ผ๋ก ์ ๋ฌธ๊ฐ๋น ์ด์์ ์ธ ๊ท ์ผ ๋ถํ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ฌธ๊ฐ ์ฉ๋ ๊ณ์capacity factor๋ฅผ ์กฐ์ ํ์ฌ ์ค์ ํฉ๋๋ค. ๊ฐ ์ฒ๋ฆฌ๋๋ ํ ํฐ ์์ผ ๋, ์ด์์ ์ธ ์๋ฒฝํ๊ฒ ๊ท ํ ์กํ ๋ผ์ฐํฐ๋ ๊ฐ ์ ๋ฌธ๊ฐ์๊ฒ ์ ํํ ๊ฐ์ ํ ํฐ์ ๋ณด๋ ๋๋ค. ์ฉ๋ ๊ณ์ ๋ ํต๊ณ์ ๋ณ๋์ฑ์ ๋ํ ์์ถฉ ์ญํ ์ ์ ๊ณตํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํฉ๋๋ค.
์ ์ผ๋ฐ์ ์ธ ๊ฐ ๋ฒ์๋ 1.0์์ 2.0 ์ฌ์ด์ ๋๋ค. (์์ปจ๋ ๊ฐ 1.25๋ผ๋ ๊ฒ์ ๊ฐ ์ ๋ฌธ๊ฐ๊ฐ ํ๊ท ๋ณด๋ค 25% ๋ ๋ง์ ํ ํฐ์ ์ฒ๋ฆฌํ ์ ์์์ ์๋ฏธํฉ๋๋ค.)
1.0์ ๊ฐ๊น์ด ๊ฐ(์: 1.25)์ ๊ณ์ฐ ์ค๋ฒํค๋๋ฅผ ์ต์ํํ์ง๋ง, ๋ถํ๊ฐ ์ฝ๊ฐ๋ง ๋ถ๊ท ํํด๋ ํ ํฐ์ด ์์ค๋ ์ํ์ด ์ฆ๊ฐํฉ๋๋ค.
๋ ํฐ ๊ฐ(์: 1.5, 2.0)์ ํ ํฐ ์์ค ๊ฐ๋ฅ์ฑ์ ์ค์ด์ง๋ง, ์ ๋ฌธ๊ฐ๊ฐ ์ข ์ข ๊ฐ์ ํ ํฐ๋ณด๋ค ์ ๊ฒ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ ์ด์์ผ๋ก ๊ณ์ฐ ์์์ด ํ ๋น๋ ์ ์์ต๋๋ค.
์ ๋ฌธ๊ฐ์ ์ฉ๋์ด ์ด๊ณผ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ ๋ฌธ๊ฐ๊ฐ ์ฉ๋์ ๋๋ฌํ์ ๋, ์์ฑ๋ ํ ํฐ๋ค์ 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๋ง์ ๊ธฐ๋ฐ์ผ๋ก ์์ ๋ช ์ ์ ๋ฌธ๊ฐ๋ฅผ ์ ํํ๋ ๋์ , ์ ํ ๊ณผ์ ์ ์ ๋ ธ์ด์ฆ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ ๊ฐ์ฐ์์ ๋ ธ์ด์ฆ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๋ ๋ถ์ฐ์ด , ํ๊ท ์ด 0์ธ ๊ฐ์ฐ์์ ๋ถํฌ์์ ์ถ์ถ๋ ์ํ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด noisy_logits์ ๋ํด TopK ์ ํ์ด ์ํ๋ฉ๋๋ค. ๋
ธ์ด์ฆ ๋ถ์ฐ ๋ ์ข
์ข
ํ๋ จ ๊ฐ๋ฅํ ํ๋ผ๋ฏธํฐ๋ก ๊ตฌํ๋๊ฑฐ๋ ํ๋ จ ์ค์ผ์ค๋ง์ ์ํด ์กฐ์ ๋ฉ๋๋ค.

์กฐ๊ธ ๋ ์ํ์ ์ผ๋ก ํํํด ๋ณด๊ฒ ์ต๋๋ค. ๋ง์ฝ ๊ฐ ๊ฒ์ดํ ๊ฐ์ค์น ํ๋ ฌ์ด๊ณ ๊ฐ ์ ๋ ฅ ํ ํฐ ํํ์ด๋ผ๋ฉด, ํ์ค ๋ก์ง์ ์ ๋๋ค. Noisy top-k์ ๊ฒฝ์ฐ, ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐํฉ๋๋ค.
๋ ํ ํฐ๋ณ๋ก ์ํ๋ง๋ ํ์ค ๊ฐ์ฐ์์ ๋ ธ์ด์ฆ์ด๋ฉฐ, ๋ ์ ๋ ฅ์ ๊ธฐ๋ฐํด ๋ ธ์ด์ฆ๋ฅผ ๊ณฑ์ ์ ์ผ๋ก ์ค์ผ์ผ๋งํ๋ ๋ ๋ค๋ฅธ ํ๋ จ ๊ฐ๋ฅํ ๊ฐ์ค์น ํ๋ ฌ์ ๋๋ค. softplus ํจ์๋ ๋ ธ์ด์ฆ ์ค์ผ์ผ๋ง ์ธ์๊ฐ ์์๊ฐ ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ด๋ ๊ฒ ์ถ๊ฐ๋ ์ก์์ ๋ผ์ฐํ ๊ฒฐ์ ์ ํ๋ฅ ์ฑ์ ๋์ ํฉ๋๋ค. ์ด๋ ์ ์๊ฐ ๋ฎ์ ์ ๋ฌธ๊ฐ๋ค๋ ์ ํ๋ ๊ธฐํ๋ฅผ ์ ๊ณตํ์ฌ ํ์์ ์ด์งํ๊ณ , ๋ผ์ฐํฐ๊ฐ ๋๋ฌด ์ผ์ฐ ์ต์ ์ด ์๋ ํ ๋น ํจํด์ ๊ณ ์ฐฉ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
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 ๋ผ์ฐํ ๊ธฐ๋ฒ์ ์ ๋ฌธ๊ฐ๊ฐ ์ฃผ์ฒด๊ฐ ๋์ด ์์ ์๊ฒ ๋๋ฌํ ํ ํฐ์ ์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ๊ฐ์ ํ ํฐ์ ์ ํํ๊ณ , ๋๋จธ์ง๋ ๋ฒ๋ฆฌ๋ ๋ฐฉ์์ ๋๋ค. ์ด ๋ฐฉ์์ ์ ๋ฌธ๊ฐ๋ณ ์ฒ๋ฆฌ๋์ ๊ท ๋ฑํ๊ฒ ์ ์งํ์ฌ ์์ฐ์ค๋ฝ๊ฒ ๋ถํ๋ฅผ ๋ถ์ฐ์ํค๋ฉฐ, ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ถ์ฐ ํ์ต ๋ฐ ์ถ๋ก ๊ณผ์ ์์ ์ฐ์ฐ ํจ์จ์ฑ์ ๋์ ๋๋ค.
์ ๋ฌธ๊ฐ ์ ํ ๋ผ์ฐํ ์ ๋์ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฐ์ ๊ฒ์ดํธ ๋คํธ์ํฌ๊ฐ ๋ชจ๋ <ํ ํฐ, ์ ๋ฌธ๊ฐ> ์์ ๋ํด ์ ์๋ฅผ ์ฐ์ถํฉ๋๋ค. ์ดํ ๊ฐ ์ ๋ฌธ๊ฐ๋ ์์ ์ ์ด์ ํด๋นํ๋ ์ ์๋ฅผ ์ ๋ ฌํ ๋ค ์์ ๊ฐ capacity์ ํด๋นํ๋ ํ ํฐ๋ง ์ ํํฉ๋๋ค. ์ ํ๋ ํ ํฐ์ ํด๋น ์ ๋ฌธ๊ฐ์ FFN์ ํต๊ณผํ์ฌ ์ฒ๋ฆฌ๋๊ณ , ์ต์ข ์ ์ผ๋ก ํ ํฐ ์์์ ๋ง์ถ์ด ๊ฒฐ๊ณผ๊ฐ ๋ค์ ์ง๊ณ๋ฉ๋๋ค. ์ด ๊ณผ์ ์์ capacity๋ฅผ ์ด๊ณผํ ํ ํฐ์ ์ฒ๋ฆฌ๋์ง ์๊ณ ๋๋กญ๋ ์ ์์ผ๋ฏ๋ก, ๊ฒ์ดํธ ๋คํธ์ํฌ๊ฐ ์ ๋ฌธ๊ฐ ๊ฐ ์ ์๋ฅผ ๊ท ๋ฑํ๊ฒ ๋ถํฌํ๋๋ก ํ์ต๋๋ ๊ฒ์ด ๋ชจ๋ธ ์ฑ๋ฅ์ ์ค์ํฉ๋๋ค.
์กฐ๊ธ ๋ ์ํ์ ์ผ๋ก ํํํด ๋ณด๊ฒ ์ต๋๋ค. ์ ๋ ฅ ๋ฒกํฐ ๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฒ์ดํธ ๋คํธ์ํฌ๋ ๊ฐ์ ์ ๋ฌธ๊ฐ์ ๋ํ ์ ์ ๋ฒกํฐ๋ฅผ ์ฐ์ถํฉ๋๋ค.
์ ๋ฌธ๊ฐ ์ ํ ๋ผ์ฐํ ๋ฐฉ์์์๋ ๊ฐ ์ ๋ฌธ๊ฐ๊ฐ ์์ ์ ์ ์ ์งํฉ์์ ์์ ๊ฐ ํ ํฐ์ ์ ํํ๋ฏ๋ก, ๋จ์ผ ํ ํฐ ๋ ์ ๋ฌธ๊ฐ ์ ์ํด ์ ํ๋ ํ๋ฅ ์ ์ด๋ฒคํธ๋ก ํํ๋ฉ๋๋ค. (๋ ํ ํฐ ๊ฐ ์ ๋ฌธ๊ฐ ์ ํ ๋น๋ ์ ํฉ๋์ ๋๋ค.)
์ด๋ฅผ indicator ํจ์๋ก ํํํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
๋ ์ ๋ฌธ๊ฐ ๊ฐ ์์ ๊ฐ์ ํ ํฐ๋ง ๋ฐ๋๋ก ํ๋ ํ ํฐ ์ ์์ ์ต์๊ฐ์ ๋๋ค. ํ ํฐ๋น ์ต๋ ์ ๋ฌธ๊ฐ ์๋ฅผ ๋ก ์ ํํ๋ ค๋ฉด ์ ์ ์ฝ์ ์ถ๊ฐํฉ๋๋ค.
๊ทธ ํ ์ ํ๋ ์ ๋ฌธ๊ฐ๋ค์ ๋ํด๋ง FFN ๋ฅผ ์ ์ฉํ๊ณ , ๊ฐ์คํฉ์ผ๋ก ์ถ๋ ฅ์ ๊ณ์ฐํฉ๋๋ค.
์ด ์์์ ์ค์ํ ์ ์ ๊ฐ ์ ๋ฌธ๊ฐ๋ณ๋ก ์ต๋ ๊ฐ์ ํ ํฐ๋ง ์ ํ๋๋ฏ๋ก, ๋ ์ต๋ ๊ฐ์ ์ ๋ฌธ๊ฐ์ ๋ผ์ฐํ ๋ ์ ์์ผ๋ฉฐ(), ์ด๋ค ์ ๋ฌธ๊ฐ์๋ ์ ํ๋์ง ์์ ๊ฐ๋ฅ์ฑ(๋๋กญ)์ด ์กด์ฌํฉ๋๋ค.
์ด ๋ฐฉ์์ ์ฃผ์ ์ฅ์ ์ ๊ท ํ ์กํ ๋ถํ ๋ถ์ฐ๊ณผ ์ถ๋ก ์ง์ฐ์ ์์ ์ฑ์ ๋๋ค. ์ ๋ฌธ๊ฐ๋ณ ์ฒ๋ฆฌ๋์ด ์ผ์ ํ๋ฏ๋ก ํต์ ๋ฐ ๋๊ธฐํ ๋ณ๋ชฉ์ด ์ค์ด๋ค๊ณ , ๋๊ท๋ชจ GPU/TPU ํ๊ฒฝ์์ ์ง์ฐ ์๊ฐlatency ์์ธก์ด ์ฉ์ดํฉ๋๋ค. ๋ํ ์ ๋ฌธ๊ฐ ๋จ์์ capacity ์ ์ด๊ฐ ๊ฐ๋ฅํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐ ์ฐ์ฐ ์์ ๋ฐฐ๋ถ์ด ํจ์จ์ ์ ๋๋ค. ๋ค๋ง ์ ๋ฌธ๊ฐ๊ฐ ์ ํํ ์ ์๋ ํ ํฐ์ ์๊ฐ ์ ํ์ ์ด๋ฏ๋ก ์ผ๋ถ ํ ํฐ์ด ๋ฒ๋ ค์ง ์ํ์ด ์๊ณ , <ํ ํฐ, ์ ๋ฌธ๊ฐ> ์์ ์ ์ฒด ์ค์ฝ์ด๋ฅผ ๊ณ์ฐํ๊ณ ์ ๋ ฌํด์ผ ํ๋ฏ๋ก ๊ณ์ฐ ๋น์ฉ์ด ์ฆ๊ฐํฉ๋๋ค. ๋ํ ์ด ๋ฐฉ์์ผ๋ก MoE ๋ชจ๋ธ์ ํ๋ จํ ์์๋ ๋ฏธ๋ถ ๋ถ๊ฐ์ด๋ฏ๋ก(indicator ํจ์์ด๊ธฐ ๋๋ฌธ์) soft-approximation(์: ์๊ทธ๋ชจ์ด๋sigmoid ์ค๋ฌด๋ฉ)์ผ๋ก ๋์ฒดํฉ๋๋ค.
3. MoE ์ต์ ํ ๋ฒ ์ด์ค๋ผ์ธ
์๋ ๋ฒ ์ด์ค๋ผ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ํน์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํ๋์จ์ด ํ๊ฒฝ์ ๋ง๊ฒ ์ฑ๋ฅ, ์ ๋ฌธํ, ๊ณ์ฐ ๊ฐ๋ฅ์ฑ์ ๊ท ํ์ ๋ง์ถ MoE ์ํคํ ์ฒ๋ฅผ ๋์ถํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
3.1. ์ ๋ฌธ๊ฐ ์ ๊ฒฐ์
์ ์ฒด ์ ๋ฌธ๊ฐ ์
์ ์ฒด ์ ๋ฌธ๊ฐ ์ ์ ์ฃผ์ ์ํคํ ์ฒ ์ ํ ์ฌํญ์ ๋๋ค. ์ด ๊ฐ์ ๋๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์์ต๋๋ค:
๋ ๋ง์ ํ๋ผ๋ฏธํฐ ์: MoE ๊ณ์ธต์ ๋ชจ๋ธ ํฌ๊ธฐ๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฅํฉ๋๋ค. ์ ๋ฌธ๊ฐ๋ฅผ ์ถ๊ฐํ๋ฉด ์ ์ฒด ํ๋ผ๋ฏธํฐ ์๊ฐ ํฌ๊ฒ ์ฆ๊ฐํ์ง๋ง, ๊ฐ ํ ํฐ์ด ๋ผ์ฐํ ๋๋ ์ ๋ฌธ๊ฐ ์ ๊ฐ ์๊ฒ ์ ์ง๋๋ค๋ฉด ๊ณ์ฐ ๋น์ฉ(FLOPs per token)์ ์ ๋นํ๋ง ์ฆ๊ฐํฉ๋๋ค.
๋ ์ธ๋ฐํ ์ ๋ฌธํ: ๋ ๋ง์ ์ ๋ฌธ๊ฐ๋ ๋ชจ๋ธ์ด ๋ค์ํ ์ ๋ ฅ ์ ํ์ด๋ ๋ฌธ๋งฅ์ ๋ํด ๋ ๊ตฌ๋ณ๋๊ณ ํนํ๋ ๊ธฐ๋ฅ์ ํ์ตํ ์ ์๊ฒ ํฉ๋๋ค.
ํ๋์จ์ด ๋งคํ: ์ ๋ฌธ๊ฐ ๋ณ๋ ฌ ์ฒ๋ฆฌExpert Parallelism๋ฅผ ์ฌ์ฉํ๋ ๋ถ์ฐ ํ๊ฒฝ์์๋ ์ด ๋ณดํต ์ฌ์ฉ ๊ฐ๋ฅํ ์ฒ๋ฆฌ ์ฅ์น(GPU ๋ฑ)์ ์์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ฉฐ, ๊ฐ ์ฅ์น์ ํ๋ ์ด์์ ์ ๋ฌธ๊ฐ๊ฐ ํ ๋น๋ฉ๋๋ค. ๋ํ ๋ชจ๋ธ์์ ํํ ์ฌ์ฉ๋๋ ๊ฐ์ 8, 16, 64, 128 ๋๋ ๊ทธ ์ด์์ ๋๋ค.
ํ์ง๋ง ์ ๋๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ ๋ฐ์ํฉ๋๋ค:
ํต์ ์ค๋ฒํค๋: ์ ๋ฌธ๊ฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ์์๋ 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=1: ๊ฐ ํ ํฐ์ ๋จ์ผ ์ ๋ฌธ๊ฐ์๊ฒ ๋ผ์ฐํ ๋ฉ๋๋ค. ๋ฐฐ์น/๊ทธ๋ฃน ์ ์ฒด์ ํ ํฐ ํ ๋น ์๋ ์ ๋๋ค. ์ด ๊ฐ์ฉ ์ฉ๋์ ์ ๋๋ค. ๋ถํ ๋ถ์ฐ์ ๊ฐ์ ํ ๋น์ ๋ช ์ ์ ๋ฌธ๊ฐ๋ค ์ฌ์ด์ ๋๋ต ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
k=2: ๊ฐ ํ ํฐ์ ๋ ๋ช ์ ์ ๋ฌธ๊ฐ์๊ฒ ๋ผ์ฐํ ๋ฉ๋๋ค. ํ ํฐ ํ ๋น ์๋ ์ด ๊ฐ ๋ฉ๋๋ค. ์ด ๊ฐ์ฉ ์ฉ๋์ ์ฌ์ ํ ์ ๋๋ค. ์ด๋ ์์คํ ์ ํจ์ฌ ๋ ํฐ ๋ถ๋ด์ ์ค๋๋ค. ๊ณผ๋ํ ํ ํฐ ์์ค์ ํผํ๊ธฐ ์ํด์๋ ๋ค์์ด ํ์ํ ์ ์์ต๋๋ค:
๋ ๋์ ์ ๋ฌธ๊ฐ ์ฉ๋expert capacity
๋ณด์กฐ ์์คauxiliary loss ์ ํตํ ๋ ํจ๊ณผ์ ์ธ ๋ถํ ๋ถ์ฐ
ํ ํฐ ๋ฐฐ์น ํฌ๊ธฐ()์ ๋นํด ๋ ๋ง์ ์ ๋ฌธ๊ฐ ์()
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํ ํฐ์ด ์ฌ๋ฌ ์ ๋ฌธํ๋ ๊ธฐ๋ฅ์ ํํ์ ๋ฐ์ ์ ์๊ฒ ํ์ฌ ๋ชจ๋ธ ํ์ง์ ํฅ์์ํค๋ ๊ฒฝ์ฐ๋ ์์ง๋ง, ํ ํฐ๋น ๋ ๋ช ์ ์ ๋ฌธ๊ฐ๋ฅผ ํ์ฑํํจ์ผ๋ก์จ ๊ณ์ฐ๋ ์ฆ๊ฐ์ ์ ์ฌ์ ์ผ๋ก ๋ ๋์ ํต์ ๋ฐ ์ฉ๋ ์๊ตฌ ์ฌํญ์ด๋ผ๋ ๋น์ฉ์ด ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ์ ์คํ ๊ฒํ ํด์ผ ํฉ๋๋ค.
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 ์ ์ฉ ์ ๊ณ ๋ คํด์ผ ํ ํต์ฌ ์์๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ๋ฌธ๊ฐ ์์ ์ธ๋ถํ ์ ๋ (granularity) ๊ฒฐ์ : Dense ๋ชจ๋ธ์ FFN ์ธต์ MoE๋ก ๋ฐ๊ฟ ๋ ๋ช ๊ฐ์ ์ ๋ฌธ๊ฐ๋ก ๋๋์ง, ์ ๋ฌธ๊ฐ ํ๋๋น ํ๋ผ๋ฏธํฐ ํฌ๊ธฐ๋ฅผ ์ด๋ป๊ฒ ์กฐ์ ํ ์ง ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. (Megatron-Core ์ฌ์ฉ ์,
--moe-upcycling-granularity์กฐ์ )์ ๋ฌธ๊ฐ ์ด๊ธฐํ ์ ๋ต: dense ๋ชจ๋ธ์ ๊ฐ์ค์น๋ฅผ ๊ทธ๋๋ก ๋ณต์ ํ๊ฑฐ๋ ์ผ๋ถ ๋ณํํ์ฌ ์ฌ๋ฌ ์ ๋ฌธ๊ฐ๋ก ์ด๊ธฐํํ๋ ๋ฐฉ์์ด ๊ธฐ๋ณธ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ ๋ฌธ๊ฐ ๊ฐ ์ฐจ๋ณ์ฑ์ ์ฃผ์ง ์์ผ๋ฉด ๋ชจ๋ ์ ๋ฌธ๊ฐ๊ฐ ๋์ผํ๊ฒ ๋์ํ ์ ์์ด specialization์ด ์ผ์ด๋์ง ์์ ์ ์์ต๋๋ค. Upcycling ๋ ผ๋ฌธ์์๋ โvirtual group initializationโ ๊ธฐ๋ฒ์ ์ ์ํด dense ์ฒดํฌํฌ์ธํธ์์ MoE ์ด๊ธฐํ๋ฅผ ํ ๋ ์ ๋ฌธ๊ฐ๋ค์ด ๋ผ์ฐํฐ ์์์ top-k ํ๋ณด๊ตฐ์ ๊ณจ๊ณ ๋ฃจ ๋ถํฌํ๋๋ก ์ ๋ํฉ๋๋ค. ๋ ๋ค๋ฅธ ๊ธฐ๋ฒ์ผ๋ก๋ parameter merging, partial reinitialization ๋ฑ์ ๋ณํํ์ฌ ์ ๋ฌธ๊ฐ ๋ค์์ฑ์ ์ ๋ํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Drop-Upcycling ๋ ผ๋ฌธ์์๋ ์ผ๋ถ ํ๋ผ๋ฏธํฐ๋ฅผ ํต๊ณ์ ์ผ๋ก ์ฌ์ด๊ธฐํํ์ฌ ์ ๋ฌธํ ๊ฒฝ๋ก๋ฅผ ๊ฐํํ๋ ์ ๋ต์ ์ ์ํฉ๋๋ค.
๋ผ์ฐํฐ ๋์ ๋ฐ ์ฌ์ ๋ณด์ (warm-up / router pre-training): Dense ๋ชจ๋ธ์๋ ๋ผ์ฐํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ก ๋ผ์ฐํฐ๋ฅผ ์ค๊ณํด์ผ ํฉ๋๋ค. ์ด๋ ๋ผ์ฐํฐ ํ๋ผ๋ฏธํฐ์ด๋ฏ๋ก ์ด๊ธฐ ๋ฌด์์ ์ด๊ธฐํ๊ฐ ๊ฐ๋ฅํ๋, ๋๋ฌด ๋ฌด์์์ด๋ฉด ํ์ต ์ด๊ธฐ์ routing ๋ถ๊ดดcollapse๊ฐ ์ ์ผ์ด๋ฉ๋๋ค. ๋ฐ๋ผ์ ์๋์ seed ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด ๊ฐ ์๋ก์ด ์ ๋ฌธ๊ฐ๊ฐ ์ ์๋ํ๋๋ก ๋ผ์ฐํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ณด์ (pre-optimize)ํ๋ ๋จ๊ณ๋ฅผ ๋์ ํ๊ธฐ๋ ํฉ๋๋ค.
๊ฐ์ค์น ์ค์ผ์ผ๋ง (weight scaling): Dense โ MoE ์ ํ ์, ์ฌ๋ฌ ์ ๋ฌธ๊ฐ๋ก ์ชผ๊ฐค ๋ ๊ฐ์ค์น ๋ถ์ฐ์ด ๋ฌ๋ผ์ง๊ณ ํํ ๊ฐ๋๊ฐ ์ฝํด์ง ์ ์์ด์, ์ ์ ํ ์ค์ผ์ผ ๋ณด์ (์: ๊ฐ ์ ๋ฌธ๊ฐ ๊ฐ์ค์น์ ์์ ๊ณ์ ๊ณฑํ๊ธฐ) ์ ๋ต์ด ํ์ํฉ๋๋ค. Upcycling ๋ ผ๋ฌธ์์๋ weight scaling์ ํตํด ์์ค ๊ฐ์ ํจ๊ณผ๊ฐ ์๋ค๋ ๋ณด๊ณ ๊ฐ ์์ต๋๋ค.
์ ์ง์ ํ์ฅ ๋๋ ๋จ๊ณ์ ์ ์ฌ์ดํด๋ง: ์ฒ์๋ถํฐ Dense โ ์์ฃผ ๋ง์ ์ ๋ฌธ๊ฐ๋ก ์ผ๊ด ์ ํํ๊ธฐ๋ณด๋ค, ์ ์ ์ ๋ฌธ๊ฐ ์๋ก ์์ํ๊ณ ์ ์ฐจ ์ ๋ฌธ๊ฐ ์๋ฅผ ๋๋ฆฌ๋ฉด์ upcycling์ ์ ์ง์ ์ผ๋ก ์ํํ๋ ๋ฐฉ์๋ ํจ๊ณผ์ ์ ๋๋ค. Upcycling Instruction Tuning (UpIT) ๋ ผ๋ฌธ์์๋ ์ ๋ฌธ๊ฐ ํ์ฅ ์คํ ์ด์งexpert expansion stage๋ฅผ ๋๊ณ ์ ์ง์ ์ผ๋ก ์ ๋ฌธ๊ฐ๋ฅผ ๋๋ ค ๊ฐ๋ ์ ๋ต์ ์ฌ์ฉํฉ๋๋ค.
Drop-Upcycling ์ ๋ต: Drop-Upcycling ๋ ผ๋ฌธ์ dense์์ upcyclingํ ๋ชจ๋ธ์ด ์ด๊ธฐ์๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์ด๋ ์ฅ๊ธฐ ํ์ต ์ ์๋๊ฐ ๋๋ ค์ง๊ฑฐ๋ specialization์ด ์ฝํด์ง๋ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๋ณด๊ณ ํ๋ฉฐ, ์ผ๋ถ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฌด์์ ์ฌ์ด๊ธฐํํ๋ ์ ๋ต์ ๋ณํํด ํ์ต ์ฑ๋ฅ๊ณผ ํจ์จ์ ๋ชจ๋ ๊ฐ์ ํ๋ ๋ฐฉ์์ ์ ์ํ์ต๋๋ค.
3.4. ๋๋ฉ์ธ๋ณ ํ ํฐ ๋ถํฌ๋ฅผ MoE ํ๋ จ์ ๋ฐ์
๋๋ฉ์ธ๋ณ ํ ํฐ ๋ถํฌ์ MoE ๋ชจ๋ธ ํ์ต ๋ฐ ๋ผ์ฐํ ์ค๊ณ์ ๋ฐ์ํ๋ ค๋ฉด ์๋ ์ ๋ต๋ค์ ๊ณ ๋ คํ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๋ฉ์ธ ํ๊น ๋ฐ ๋ผ์ฐํ ๋ณด์กฐ ์ ๋ ฅ: ์ ๋ ฅ ํ ์คํธ์ ๋๋ฉ์ธ ํ๊ทธ๋ฅผ ํฌํจ์ํค๊ณ , ๋ผ์ฐํฐ๊ฐ ์ด ํ๊ทธ๊น์ง ๊ณ ๋ คํ๋๋ก ๋ง๋๋ ๋ฐฉ์์ ๋๋ค. ์: โ[domain_news] โฆ text โฆโ ํํ๋ก ํ ํฐ ์์ ์ฝ์ ํ๊ฑฐ๋ ๋๋ฉ์ธ ์๋ฒ ๋ฉ์ ๋ผ์ฐํฐ ์ ๋ ฅ์ ํฉ์นจ
๋๋ฉ์ธ๋ณ ๋ก๋ ๋ฐธ๋ฐ์ฑ ํญ ๋ฐ ๊ฐ์ค์น: ์ผ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์์ค๋ฟ ์๋๋ผ ๋๋ฉ์ธ๋ณ ๊ท ๋ฑํ๋ฅผ ์ ๋ํ๋ ๋ณด์กฐ ํญ์ ๋ก๋๋ค. ์์ปจ๋ ๋๋ฉ์ธ A, B, C๊ฐ ์์ ๋ ๊ฐ ๋๋ฉ์ธ๋ณ ์ ๋ฌธ๊ฐ ์ฌ์ฉ๋ฅ ์ฐจ์ด๋ฅผ ์ค์ด๊ธฐ ์ํ ํญ ์ถ๊ฐ
ํ ํฐ ๋ถํฌ ์ค๋ฌด๋ฉ / ์ ์ํ๋ง: ํน์ ๋๋ฉ์ธ ํ ํฐ์ ํํ์ด ๋๋ฌด ํฌ์ํด ์ ๋ฌธ๊ฐ๊ฐ ํ์ตํ๊ธฐ ์ด๋ ต๋ค๋ฉด, ํด๋น ๋๋ฉ์ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฐ ์ ์ํ๋งํ๊ฑฐ๋, ํ ํฐ ๋น๋๊ฐ ๋ฎ์ ๋ถ๋ถ์ ๋ณด์ ํด์ ๋ผ์ฐํ ์ด ๋๋ฌด ์น์ฐ์น์ง ์๋๋ก ์กฐ์ ํ ์ ์์ต๋๋ค.
์ ๋ฌธ๊ฐ ๊ตฌ์ฑ์ โ๊ณต์ ์ ๋ฌธ๊ฐ + ๋๋ฉ์ธ ๊ฒฝํฅ ์ ๋ฌธ๊ฐโ์ ํผํฉ์ด ์ข์ต๋๋ค. ๋ชจ๋ ์ ๋ ฅ์ ๋ฌด๋ํ ์ฒ๋ฆฌํ๋ 1โ2๊ฐ์ ๊ณต์ ์ ๋ฌธ๊ฐ๋ฅผ ๋๊ณ , ๋๋จธ์ง๋ ํน์ ๋๋ฉ์ธ(์: ์์ฐ์ด, ์ฝ๋, ์ํ)์ ๊ฐ๊ฐ ๊ฒฝํฅ์ฑ๋ง ์ฃผ๋ ์์ค์ผ๋ก ์ค๊ณํฉ๋๋ค. ์ฒ์๋ถํฐ ๋๋ฉ์ธ ๊ณ ์ ์ ๋ฌธ๊ฐ๋ก ๋ง๋ค๊ธฐ๋ณด๋ค๋, ๋ฐ์ดํฐ์ ๋ผ์ฐํ ์ด ์์ฐ์ค๋ฝ๊ฒ ํนํ๋ฅผ ์ ๋ํ๊ฒ ๋๋ ํธ์ด ์๋ ด์ด ๋งค๋๋ฝ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฏธ ๋ณด์ ํ dense ๋ชจ๋ธ์ upcyclingํด ์์ํ๋ค๋ฉด, FFN ๊ฐ์ค์น๋ฅผ ๋ณต์ ยท๋ถํ ํ์ฌ ์ ๋ฌธ๊ฐ ์ด๊ธฐํ๋ฅผ ํ๋, ์ผ๋ถ ์ ๋ฌธ๊ฐ์๋ ๋ฏธ์ธํ ์ฌ์ด๊ธฐํ(์ค์ผ์ผ ์กฐ์ , layer-norm ์ฌ์ค์ ๋ฑ)๋ฅผ ๊ฐํด ์ด๊ธฐ์ ๋์ผ ๋์์ผ๋ก ์๋ ดํ๋ ๊ฒ์ ํผํ์ธ์. Upcycling ์งํ์๋ ๋ผ์ฐํฐ๋ง ์๋ ๋ฐ์ดํฐ๋ก ์งง๊ฒ ์๋ฐ์ ํด ๋ผ์ฐํ ํธํฅ์ ์๋ฐฉํ๊ณ , ๊ทธ ๋ค์ ์ ์ฒด ์ ๋ฐ์ดํธ๋ฅผ ์ํํ๋ 2-stage ์ ์ฐจ๊ฐ ์คํจ ํ๋ฅ ์ ์ค์ฌ ์ค๋๋ค. ์์ธํ ๋ด์ฉ์ DeepSeekMoE ๋ ผ๋ฌธ์ ์ฐธ์กฐ ๋ฐ๋๋๋ค.
๋๋ฉ์ธ ํผํฉ์ ๊ฒฝ๊ณ์์ ๋ถ์์ ์ด ์ฆ๋ค๋ฉด ํ ํฐ-์ ๋ฌธ๊ฐ ์นํ๋affinity๋ฅผ ์ถ๊ฐ๋ก ๋ณด์ ํ๋ ๋ฐฉ์๋ ํจ๊ณผ์ ์ ๋๋ค. ์์ปจ๋ ํ ํฐ ์๋ฒ ๋ฉ๊ณผ ์ ๋ฌธ๊ฐ ํค(์ ๋ฌธ๊ฐ๋น ์์ฝ ๋ฒกํฐ)์ ์ฝ์ฌ์ธ ์ ์ฌ๋๋ฅผ ์๊ฒ ์์ด ๊ฒ์ดํธ ์ ์๋ฅผ ์ด์ง ์ฌ์ ๋ ฌํ๋ฉด, ๋๋ฉ์ธ ๊ธ์ ํ ๊ตฌ๊ฐ์์์ ํ๋ค๋ฆผ์ด ์ค์ด๋ญ๋๋ค.
3.5. ๋ณด์กฐ ์์ค ๊ฐ์ค์น ๊ณ์ ์กฐ์
์ ์ ํ ๊ฐ์ ๋ณดํต ๊ฒฝํ์ ์ผ๋กheuristic ์ฐพ์์ผ ํ์ง๋ง, ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ๋ก ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ถ์ฒ ๋ฒ์: ๊ฐ์ ๋ณดํต ๋๋ ์ฒ๋ผ ์์ง๋ง, ์ต์ ๊ฐ์ ๋ชจ๋ธ ์ํคํ ์ฒ, ์์ , ์ ๋ฌธ๊ฐ ์, ์ ํํ ๋ณด์กฐ ์์ค ๊ณต์์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ์ง๋์น๊ฒ ํฐ ๊ฐ์ค์น ๊ณ์๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ฐ์ ์ํ์ฌ ์ ์ฒด์ ์ธ ์ ํ๋๊ฐ ๋จ์ด์ง ์ ์๊ณ ์ง๋์น๊ฒ ์์ ๊ฐ์ค์น ๊ณ์๋ ๋ผ์ฐํฐ ๋ถ๊ท ํ์ ๊ฐ์ ํ์ง ์๋ค๋ ์ ์ ๊ธฐ์ตํด ์ฃผ์ธ์.
๋ชจ๋ํฐ๋ง: ํ๋ จ ์ค์๋ ์๋์ ๊ฐ์ ์ค์ํ ์งํ๋ค์ ๊ด์ฐฐํ์ธ์. ๋ชจ๋ํฐ๋ง์ Weights & Biases๋ ํ ์๋ณด๋ ๊ฐ์ ํดํท์ด ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
์ ๋ฌธ๊ฐ ํ์ฉ๋: ๊ฐ ๋ฐฐ์น ๋๋ ์ฌ๋ฌ ๋จ๊ณ์ ๊ฑธ์ณ ๊ฐ ์ ๋ฌธ๊ฐ๊ฐ ์ฒ๋ฆฌํ ํ ํฐ์ ์๋ ๋น์จ์ ์ถ์ ํฉ๋๋ค. ์ด์์ ์ผ๋ก๋ ์ ๋ฌธ๊ฐ๋ค์ด ๋๋ต ๋น์ทํ ํ์ฉ๋๋ฅผ ๊ฐ์ ธ์ผ ํ์ง๋ง, ์๋ฒฝํ ๊ท ์ผ์ฑ์ด ํญ์ ํ์ํ๊ฑฐ๋ ์ต์ ์ ์๋๋๋ค.
๋ณด์กฐ ์์ค ํฌ๊ธฐ: ๋ณด์กฐ ์์ค ๊ฐ ์์ฒด๋ฅผ ๊ด์ฐฐํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ๋ จ์ด ์งํ๋๊ณ ์ ๋ฌธ๊ฐ ๊ท ํ์ด ๊ฐ์ ๋จ์ ๋ฐ๋ผ ๊ฐ์ํด์ผ ํฉ๋๋ค. ๋ณด์กฐ ์์ค์ด ์ ๋นํด ์ด๋ ์ ๋์ธ์ง๋ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
์์ ์์ค ๋ฐ ๊ฒ์ฆ ์ฑ๋ฅ: ๋ณด์กฐ ์์ค ๊ณ์๋ฅผ ์ฆ๊ฐ์ํฌ ๋ ๋ชจ๋ธ์ด ์ฃผ ์์ ์ ํ์ตํ๋ ๋ฅ๋ ฅ์ด ์ง๋์น๊ฒ ์์๋์ง ์๋๋ก ํฉ๋๋ค. ์ ๊ด๋ จ๋ ๊ฒ์ฆ ์งํ(์: ์ ํ๋, BLEU ๋ฑ)๋ฅผ ์ถ์ ํ์ธ์.
์ค์ผ์ค๋ง: ๋ชจ๋ธ๊ณผ ๋ฐ์ดํฐ์ ๋ฐ๋ผ ๊ฐ๋ณ์ ์ผ๋ก ๋์๋ ํธ์ด ์ข์ต๋๋ค. ํ์ ์์ ํํ ์ ๋ต์ ์ด๋ฐ์๋ ๊ท์ ๋ฅผ ์กฐ๊ธ ๊ฐํ๊ฒ, ์ดํ ์๋งํ ๋ฎ์ถ๋ ๋ฐฉ์์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ด๊ธฐ์๋ ๊ท ํ ๊ฐ์ ๋ฅผ ์ํด ๋ณด์กฐ ์์ค ๊ฐ์ค์น ๊ณ์๋ฅผ ์กฐ๊ธ ํฐ ๊ฐ์ผ๋ก ์์ํด์ ์์ ํ ๊ตฌ๊ฐ์ ์ง์ ํ ๋ ์ ์ฐจ ๊ฐ์์ํค๋ ์ค์ผ์ค๋ง์ ์ ์ฉํ๋ฉด, ์ด๊ธฐ ๋ถ๊ดด๋ฅผ ๋ง์ผ๋ฉด์ ํ๋ฐ์๋ ์ ๋ฌธ๊ฐ ํนํ ์ฌ์ง๋ฅผ ๋๋ ค์ค ์ ์์ต๋๋ค. ์ต๊ทผ ๋๊ท๋ชจ MoE ํ๋ จ ๋ ธํ์ฐ์์๋ โ๋ถํ๊ฐ ์ด๋ฏธ ์ ๊ท ํ์ ์ด๋ฃจ๋ฉด ๋ณด์กฐ ์์ค ๊ณ์๋ฅผ ๋ฎ์ถ๊ณ , ๋ถ๊ท ํ์ด ํฌ๋ฉด ์ผ์์ ์ผ๋ก ์ฌ๋ ค์ ๊ฐ์ ๊ท ํ์ ์ค๋คโ๋ ์ํ ๊ธฐ๋ฐ ์กฐ์ ์ ๊ถํฉ๋๋ค.
3.6. ์ค์ฉ์ ์ง์นจ ๋ฐ ๋ชจ๋ํฐ๋ง
MoE ๋ชจ๋ธ ๊ฐ๋ฐ ๋ฐ ํ๋ จ ์ค์ ์ถ์ ํด์ผ ํ ์ค์ํ ์งํ ๋ช ๊ฐ์ง์ ๋๋ค.
๋๋กญ๋ ํ ํฐ ๋น์จ: ์ฉ๋์ด ์ถฉ๋ถํ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ์ฃผ์ ์งํ์ ๋๋ค. ๋์ ๊ฐ(1-2% ์ด์)์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ ์๋ฏธํฉ๋๋ค.
์ ๋ฌธ๊ฐ ํ์ฉ๋: ์ ๋ฌธ๊ฐ ์ฉ๋์ด๋ ์ ๋ฌธ๊ฐ ํ ๋น ์๊ฐํ์ ๊ฐ์ ์งํ๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ์ด๋ ๋ผ์ฐํฐ ๋ฌธ์ ๋ฅผ ์ง๋จํ๊ณ ๋ถํ ๊ท ํ ์์ค์ ์กฐ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ณ์ฐ ๋น์ฉ(FLOPs) ๋ฐ ํ๋ จ ์ฒ๋ฆฌ๋: ๋ค์ํ ๊ตฌ์ฑ์ ์ค์ ์ฑ๋ฅ ์ํฅ์ ์ธก์ ํฉ๋๋ค.
์ ์ฒด ๋ชจ๋ธ ์ฑ๋ฅ: LLM์ BLEU/ROUGE๋ ๋ค์ด์คํธ๋ฆผ ์์ ์ ์ ํ๋์ ๊ฐ์ ํ์ค ์งํ๋ฅผ ์ถ์ ํฉ๋๋ค. ์ํคํ ์ฒ ์ ํ์ด ์ต์ข ์ฑ๋ฅ ํฅ์์ผ๋ก ์ด์ด์ง๋์ง ํ์ธํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: ํนํ ๋ถ์ฐ ํ๊ฒฝ์์ ์ค์ํ๋ฉฐ, ์ ํํ ๊ตฌ์ฑ์ด ์ฅ์น ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ ๋ด์ ๋ง๋์ง ํ์ธํฉ๋๋ค.
๋ชจ๋ํฐ๋ง์ ๋๋ฉ์ธ ์ธ์ํ์ผ๋ก ์ค๊ณํด์ผ ํฉ๋๋ค. ํ๋ จ ๋ฃจํ์์ ์ ๋ฌธ๊ฐ๋ณ ํ ํฐ ์ ์ ์จ์ ๋๋ฉ์ธ๋ณ๋ก ๋ถํดํด ๊ธฐ๋กํ๊ณ , ์ ๋ฌธ๊ฐ ๋ผ์ฐํ ํ๋ฅ ์ ์ํธ๋กํผ, ๋ฏธ์ฌ์ฉ(ํน์ ์ ์ฌ์ฉ) ์ ๋ฌธ๊ฐ ๋น์จ, capacity ์ด๊ณผ์จ, ๋๋กญ๋ฅ ์ ํจ๊ป ์ถ์ ํ์ธ์. ์ฝ๋์ ์ํ ๋๋ฉ์ธ์ ๊ธธ์ด ๋ถํฌ๊ฐ ์์ฐ์ด์ ๋ค๋ฅด๋ฏ๋ก, ์ํ์ค ๊ธธ์ด ๊ตฌ๊ฐ๋ณ๋ก๋ ๋๋ ์ ๋ณด์๋ฉด ๋ณ๋ชฉ ์ง์ ์ ๋นจ๋ฆฌ ์ฐพ์ ์ ์์ต๋๋ค. ๋ผ์ฐํ ๋ณ๋์ฑ์ด ํฐ ๊ฒฝ์ฐ์๋ ์ธ์ ํ ํฐ์ ๊ฒ์ดํธ๋ฅผ ์ฝํ๊ฒ ์ฐธ์กฐํ๋ ํ ํฐ ์ ์ฌ๋ ๊ธฐ๋ฐ ์ค๋ฌด๋ฉ ๊ธฐ๋ฒ๋ ๋์์ด ๋ฉ๋๋ค.
3.7. ์ตํฐ๋ง์ด์ ๋ฐ ํ์ดํผํ๋ผ๋ฏธํฐ
MoE ํ๋ จ์ ์ํ ์ต์ ์ ์ตํฐ๋ง์ด์ ์ค์ ๊ณผ ํ์ดํผํ๋ผ๋ฏธํฐ ์กฐํฉ์ ์ฐพ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๊ฒฝํ์ ์ธ ๊ณผ์ ์ด๋ง, ์๋์ ๋ฒ ์ด์ค๋ผ์ธ๋ถํฐ ์์ํด๋ณด๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ผ๋ก ์์ํ๊ธฐ: ํ์ค AdamW ์ค์ , ์ ์๋ ค์ง ํ์ต๋ฅ ์ค์ผ์ค(warmup + decay), ๊ทธ๋ฆฌ๊ณ ์ ๋นํ ๊ฐ์ค์น decay(์: 0.01 ๋๋ 0.1)๋ถํฐ ์์ํ์ธ์.
ํ์ต๋ฅ learning rate๊ณผ ๋ณด์กฐ ์์ค ๊ณ์๋ฅผ ํจ๊ป ์กฐ์ ํ๊ธฐ: ํ์ต๋ฅ ๊ณผ ๋ณด์กฐ ์์ค ๊ณ์ ๋ ๋ณดํต ๊ฐ์ฅ ๋ฏผ๊ฐํ ํ๋ผ๋ฏธํฐ์ ๋๋ค. ๋ ๊ฐ์ ํจ๊ป ๋ณํ์ํค๋ฉด์ ์์ ์์ค๊ณผ ๋ถํ ๊ท ํ ์งํ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ์คํ์ ์ํํ์ธ์.
Gradient Clipping: ๊ทธ๋๋์ธํธ ํญ์ฃผexploding gradients๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด gradient norm clipping์ ์์ ์ฅ์น๋ก ์ ์ฉํฉ๋๋ค.
Longer Warmup: ์ด๊ธฐ ์์ ์ฑ์ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด warmup ๋จ๊ณ๋ฅผ ์ฐ์ฅํด ๋ณด์ธ์.
References
Mixture of A Million Experts (2024)
Last updated