๋…ผ๋ฌธ ๋งํฌ

๊ฐ•์ ๊ณผ ๋…์ฐฝ์„ฑ, ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ๊ทธ๋ฆฌ๊ณ  ํ•œ๊ณ„

๋ฌผ์–ด๋ณธ ๊ฒƒ: ์ด ๋…ผ๋ฌธ์„ ์•„์ฃผ ์ž์„ธํ•˜๊ฒŒ ์ฝ๊ณ  ๋…ผ๋ฌธ์˜ ๊ฐ•์ ๊ณผ ๋…์ฐฝ์ ์ธ ์ง€์ ์„ ์„ค๋ช…ํ•ด์ฃผ๊ณ  ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์˜ˆ์‹œ ์ž…๋ ฅ์„ ๋“ค์–ด์„œ ์ „์ฒด์ ์ธ ๊ณผ์ •์„ ์„ค๋ช…ํ•ด์ค˜ ์ถ”๊ฐ€์ ์œผ๋กœ ๋…ผ๋ฌธ์˜ ํ•œ๊ณ„์ ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ๋ ค์ค˜

๐Ÿ“Œ ๊ฒฐ๋ก  ์š”์•ฝ (ํ•ต์‹ฌ ๊ธฐ์—ฌ ๋ฐ ์„ฑ๋Šฅ)

MegaScale-Infer๋Š” ๋Œ€๊ทœ๋ชจ Mixture-of-Experts (MoE) ๋ชจ๋ธ ์„œ๋น™์„ ์œ„ํ•œ ํšจ์œจ์  ์‹œ์Šคํ…œ์œผ๋กœ, Attention๊ณผ FFN ๋ชจ๋“ˆ์„ ๋ถ„๋ฆฌ(disaggregate) ํ•˜์—ฌ GPU ํ™œ์šฉ๋ฅ ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ณ  ์ตœ๋Œ€ 1.9ร—์˜ GPU throughput ๊ฐœ์„  ๋ฐ 1.86ร— ๋น„์šฉ ๋Œ€๋น„ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.


โœ… ๋…ผ๋ฌธ์˜ ๊ฐ•์ ๊ณผ ๋…์ฐฝ์ ์ธ ๊ธฐ์—ฌ

๊ตฌ๋ถ„๋‚ด์šฉ
ํ•ต์‹ฌ ๊ธฐ์—ฌAttention๊ณผ FFN์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋…๋ฆฝ์ ์ธ ๋ณ‘๋ ฌ ์ „๋žต ์ ์šฉ
์„ฑ๋Šฅ ์ตœ์ ํ™”Ping-Pong Pipeline + M2N ํ†ต์‹  ๊ตฌ์กฐ๋กœ ๊ณ„์‚ฐ/ํ†ต์‹  ์˜ค๋ฒ„๋žฉ
ํ•˜๋“œ์›จ์–ด ์ ์‘์„ฑ์ด๊ธฐ์ข…(Heterogeneous) GPU ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋œ ๋ฐฐ์น˜ ์ „๋žต ์ง€์›
ํ†ต์‹  ์ตœ์ ํ™”NCCL ๋Œ€๋น„ ์ตœ๋Œ€ 96.2% latency ๊ฐ์†Œ, 4.2ร— throughput ์ฆ๊ฐ€
์šด์˜ ํšจ์œจ์„ฑ์‹œ์Šคํ…œ ์ˆ˜์ค€ ๋ฐฐ์น˜ ๊ณ„ํš ์ตœ์ ํ™” (GPU ์ˆ˜, ๋ณ‘๋ ฌ๋„, micro-batch ์ˆ˜ ๋“ฑ ํฌํ•จ)

โš™๏ธ ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ์˜ˆ์‹œ ์ž…๋ ฅ ๊ธฐ๋ฐ˜ ๋™์ž‘ ๊ณผ์ •

์˜ˆ์‹œ ์„ค์ •

  • ๋ชจ๋ธ: Mixtral 8ร—22B
  • GPU: A100 80GB
  • Batch size: 156
  • top-k experts: 2, ์ด expert ์ˆ˜: 8 โ†’ ๊ฐ expert๋‹น ํ‰๊ท  39๊ฐœ์˜ ํ† ํฐ๋งŒ ์ฒ˜๋ฆฌ

๋ฌธ์ œ์ : FFN์€ compute-intensive์ธ๋ฐ, MoE sparsity๋กœ ์ธํ•ด ๋ฐฐ์น˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์ ธ GPU ํ™œ์šฉ๋ฅ โ†“


MegaScale-Infer ๋™์ž‘ ํ๋ฆ„

1. Attention/FFN ๋ถ„๋ฆฌ (Disaggregated Expert Parallelism)
  • ๊ฐ layer์—์„œ Attention์€ A GPU ๊ทธ๋ฃน, FFN์€ E GPU ๊ทธ๋ฃน์— ๋ฐฐ์น˜
  • Attention โ†’ FFN โ†’ Attention ๊ฐ„ ํ†ต์‹  ํ•„์š”
2. Ping-Pong Pipeline Parallelism
  • ์ „์ฒด ๋ฐฐ์น˜๋ฅผ micro-batch๋กœ ๋‚˜๋ˆ” (์˜ˆ: m=4)
  • ๊ฐ micro-batch๋Š” Attention โ†’ FFN ์ˆœ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉฐ, ๊ฐ ๋‹จ๊ณ„์—์„œ pipeline์ด ์˜ค๋ฒ„๋žฉ๋จ

$\text{Condition 1:}\ T_a \approx T_e \quad \text{(๊ณ„์‚ฐ์‹œ๊ฐ„ ์œ ์‚ฌ)}$

$\text{Condition 2:}\ T_c < T_f \quad \text{(ํ†ต์‹ ์‹œ๊ฐ„ < ๊ณ„์‚ฐ์‹œ๊ฐ„)}$

$m \geq 2\left(1+\frac{T_c}{T_f}\right) \quad \text{(micro-batch์˜ ๊ฐœ์ˆ˜ ์กฐ๊ฑด)}$

3. M2N ํ†ต์‹  ์ตœ์ ํ™” (Attention M๊ฐœ โ†’ Expert N๊ฐœ)
  • ๊ธฐ์กด NCCL์€ All2All์— ์ตœ์ ํ™”๋˜์–ด MoE token routing์—๋Š” ๋ถ€์ ํ•ฉ
  • ์ƒˆ๋กœ ๊ตฌํ˜„ํ•œ M2N ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š”:
    • GPU-to-CPU copy ์ œ๊ฑฐ
    • GPU sync ์ œ๊ฑฐ
    • RDMA + GPUDirect ํ™œ์šฉ
    • ACK ์šฐ์„  ์ „์†ก + ํ˜ผ์žก์ œ์–ด ์ตœ์ ํ™”

๐Ÿ“ˆ ์„ฑ๋Šฅ ๋น„๊ต (vLLM, TensorRT-LLM ๋Œ€๋น„)

๋ชจ๋ธMegaScale-Infer vs. vLLMMegaScale-Infer vs. TensorRT-LLM
Mixtral 8x22B2.56ร— โ†‘1.28ร— โ†‘
DBRX1.70ร— โ†‘1.30ร— โ†‘
Scaled-MoE (317B)7.11ร— โ†‘1.90ร— โ†‘

Heterogeneous Deployment (H20: Attention / L40S: Expert)์—์„œ๋Š” ์ตœ๋Œ€ 3.24ร— throughput/cost ํ–ฅ์ƒ ๊ด€์ธก


๐Ÿงฉ ํ•œ๊ณ„์  ๋ฐ ๊ฐœ์„  ๊ฐ€๋Šฅ์„ฑ

ํ•œ๊ณ„์„ค๋ช…
Pipeline ์ œ์•ฝTa โ‰ˆ Te ์กฐ๊ฑด์ด ๋งž์ง€ ์•Š์œผ๋ฉด ping-pong ํŒŒ์ดํ”„๋ผ์ธ์˜ ํšจ์œจ์„ฑ ์ €ํ•˜
ํ†ต์‹  ๋ณ‘๋ชฉM2N ํ†ต์‹  ์ตœ์ ํ™”์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋Œ€๊ทœ๋ชจ ๋…ธ๋“œ ์ˆ˜์—์„œ๋Š” ์—ฌ์ „ํžˆ ๋ณ‘๋ชฉ ๊ฐ€๋Šฅ
Load imbalanceExpert ๊ฐ„ ์ ๋ฆผ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด redundant expert ๋ฐฐ์น˜ ํ•„์š” (๋ณต์žก์„ฑโ†‘)
๋ชจ๋ธ ์œ ์—ฐ์„ฑattention๊ณผ FFN ๊ตฌ์กฐ๊ฐ€ ํฌ๊ฒŒ ๋ณ€ํ•œ ๋ชจ๋ธ(ex. Perceiver ๊ณ„์—ด)์—๋Š” ์ ์šฉ ์–ด๋ ค์›€

โœณ๏ธ ์š”์•ฝ ์ •๋ฆฌ

ํ•ญ๋ชฉ๋‚ด์šฉ
์ฃผ์ œ๋Œ€๊ทœ๋ชจ MoE ๋ชจ๋ธ ์„œ๋น™ ์ตœ์ ํ™”
ํ•ต์‹ฌ ์•„์ด๋””์–ดAttention๊ณผ FFN ๋ถ„๋ฆฌ + ํŒŒ์ดํ”„๋ผ์ธ + M2N ํ†ต์‹  ์ตœ์ ํ™”
์„ฑ๋Šฅ๊ธฐ์กด ๋Œ€๋น„ ์ตœ๋Œ€ 1.9ร— throughput, 1.86ร— cost-efficiency ํ–ฅ์ƒ
์•Œ๊ณ ๋ฆฌ์ฆ˜micro-batching ๊ธฐ๋ฐ˜ ping-pong pipeline + ์ตœ์  ๋ฐฐ์น˜ ๊ณ„ํš ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜
ํ•œ๊ณ„load imbalance, ํ†ต์‹  ๋ณ‘๋ชฉ, pipeline ๊ท ํ˜• ์š”๊ตฌ

Q : ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1 (๋ฐฐ์น˜ ์ตœ์ ํ™” ํƒ์ƒ‰)์ด๋‚˜ M2N ํ†ต์‹  ๊ตฌ์กฐ์— ๋Œ€ํ•œ ๋” ๊ตฌ์ฒด์ ์ธ ๋ถ„์„์„ ํ•ด์ฃผ๊ฒ ๋‹ˆ?

์ข‹์Šต๋‹ˆ๋‹ค. ์š”์ฒญํ•˜์‹  ๋‘ ๊ฐ€์ง€ ์ค‘ ๋จผ์ € Algorithm 1 (๋ฐฐ์น˜ ์ตœ์ ํ™” ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜)๊ณผ ๊ทธ ๊ตฌ์กฐ๋ฅผ ๋จผ์ € ์‹ฌ๋„ ์žˆ๊ฒŒ ๋ถ„์„ํ•˜๊ณ , ์ด์–ด์„œ M2N ํ†ต์‹  ๊ตฌ์กฐ์˜ ์„ค๊ณ„์™€ ๋ณ‘๋ชฉ ์ œ๊ฑฐ ๋ฐฉ์‹์„ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.


๐ŸŽฏ ๋ชฉํ‘œ

์ฃผ์–ด์ง„ ํ•˜๋“œ์›จ์–ด ํ™˜๊ฒฝ(CPU, GPU, ๋ฉ”๋ชจ๋ฆฌ)๊ณผ ๋ชจ๋ธ ์„ค์ •(MoE ๊ตฌ์กฐ, latency ์š”๊ตฌ ์กฐ๊ฑด) ํ•˜์—์„œ,

  • ping-pong pipeline ๋ณ‘๋ ฌ์„ฑ
  • tensor parallelism ์ˆ˜์ค€
  • attention/FFN ๊ฐ„ ๋ฐธ๋Ÿฐ์Šค
  • GPU ๋ฉ”๋ชจ๋ฆฌ ์ œ์•ฝ ๋“ฑ์„ ๋งŒ์กฑํ•˜๋ฉด์„œ cost-efficiency (Throughput per Dollar)๊ฐ€ ์ตœ๋Œ€ํ™”๋˜๋Š” ๋ฐฐ์น˜ ๊ณ„ํš(plan)์„ ํƒ์ƒ‰.

๐Ÿ”ฃ ์ฃผ์š” ํŒŒ๋ผ๋ฏธํ„ฐ (from Table 1)

๊ธฐํ˜ธ์˜๋ฏธ
\( tpa, tpe \)attention, expert์— ํ• ๋‹นํ•  tensor parallelism ์ˆ˜์ค€
\( Ca, Ce \)attention, expert ๋…ธ๋“œ์˜ GPU ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰
\( Pa, Pe \)attention, expert ํ•˜๋‚˜์˜ weight ํŒŒ๋ผ๋ฏธํ„ฐ ํฌ๊ธฐ
\( m \)micro-batch ๊ฐœ์ˆ˜
\( B \)global batch size
\( tpd \)throughput per dollar (์ตœ์ ํ™” ๋Œ€์ƒ)

๐Ÿ” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌ์กฐ ์š”์•ฝ

PYTHON
for tpe in [1, 2, ..., Me]:                 # expert์˜ TP ์ˆ˜์ค€ ๋ฐ˜๋ณต
    for tpa in [1, 2, ..., Ma]:             # attention์˜ TP ์ˆ˜์ค€ ๋ฐ˜๋ณต
        if GPU memory ์ œ์•ฝ ๋งŒ์กฑ:
            na = balance(G, tpa, tpe)       # attention node ๊ฐœ์ˆ˜ ๊ณ„์‚ฐ (Ta โ‰ˆ Te ๋งŒ์กฑ)
            for m in [3, 4, ..., Nm]:       # micro-batch ์ˆ˜
                plan = (tpe, E), (tpa, na), m
                B, tpd = simulate(plan, SLO)
                if plan.tpd > current_best: 
                    plan* = plan

๐Ÿ“ ํ•ต์‹ฌ ๋…ผ๋ฆฌ: balance(G, tpa, tpe)

  • ๋ชฉํ‘œ: attention๊ณผ expert์˜ forward ์—ฐ์‚ฐ ์‹œ๊ฐ„ ์ผ์น˜ (Ta โ‰ˆ Te)
  • ์ˆ˜์‹ ๊ธฐ๋ฐ˜์œผ๋กœ attention node ์ˆ˜ \(n_a\) ๊ณ„์‚ฐ:
\[ n_a = \frac{k_1 E}{k_3 K} \]

์—ฌ๊ธฐ์„œ

  • \(k_1\): attention micro-batch ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์˜ ๊ณ„์ˆ˜ (ํ”„๋กœํŒŒ์ผ๋ง ๊ธฐ๋ฐ˜)
  • \(k_3\): expert micro-batch ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์˜ ๊ณ„์ˆ˜
  • \(K\): top-k expert ์ˆ˜ (๋ณดํ†ต 2 ๋˜๋Š” 4)
  • \(E\): ์ „์ฒด expert ์ˆ˜

์ด ์ˆ˜์‹์€ ์‹ค์ œ ์‹คํ—˜ ๊ธฐ๋ฐ˜ \(k_i\) ๊ณ„์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์—ฌ attention๊ณผ expert ๊ฐ„์˜ pipeline ๊ท ํ˜•์„ ๋งž์ถ”๊ธฐ ์œ„ํ•œ ๊ฒƒ.


๐Ÿ“‰ ์ œ์•ฝ ์กฐ๊ฑด ์ •๋ฆฌ

์กฐ๊ฑด์„ค๋ช…
\( T_a \approx T_e \)attention, expert compute ์‹œ๊ฐ„ ์œ ์‚ฌํ•ด์•ผ pipeline์— idle ์—†๊ฒŒ
\( T_c < T_f \)ํ†ต์‹  ์‹œ๊ฐ„๋ณด๋‹ค ๊ณ„์‚ฐ ์‹œ๊ฐ„์ด ๋” ์ปค์•ผ communication hiding ๊ฐ€๋Šฅ
\( m \ge 2(1 + \frac{T_c}{T_f}) \)pipeline ์™„์ „ ํ™œ์„ฑํ™”๋ฅผ ์œ„ํ•œ ์ตœ์†Œ micro-batch ์ˆ˜
\( T_{iter} \le SLO \)์ „์ฒด iteration latency๊ฐ€ latency SLO ๋งŒ์กฑํ•ด์•ผ ํ•จ
\( \text{Memory usage} < \text{GPU capacity} \)KV cache ๋ฐ parameter size ๊ณ ๋ คํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œ์•ฝ

๐Ÿ”„ SIMULATE ํ•จ์ˆ˜: Throughput per Dollar ํ‰๊ฐ€

  • ๊ฐ plan์— ๋Œ€ํ•ด latency ์ธก์ • (์‹ 5: \(T_{total}\)), throughput ๊ณ„์‚ฐ (\(B / T_{total}\))
  • ๋น„์šฉ์€ GPU ์ˆ˜ * ๋‹จ๊ฐ€๋กœ ๊ณ„์‚ฐ
  • ์ตœ์ข… objective:
\[ \text{Throughput per Dollar} = \frac{B}{T_{total} \cdot (\text{cost}_{\text{attention}} + \text{cost}_{\text{expert}})} \]

์‹ค์ œ ๋ฐฐ์น˜ ๊ณ„ํš์€ exhaustive search + profiling ๊ธฐ๋ฐ˜ ์ถ”๋ก ์„ ํ˜ผํ•ฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋จ


๐Ÿ“ก M2N ํ†ต์‹  ๊ตฌ์กฐ ๊ณ ๊ธ‰ ๋ถ„์„

๐Ÿšฉ ๋ฌธ์ œ: ๊ธฐ์กด NCCL์˜ ํ•œ๊ณ„

๋ฌธ์ œ์ ์„ค๋ช…
๋ถˆํ•„์š”ํ•œ GPUโ†’CPU ๋ณต์‚ฌNCCL์€ proxy๋ฅผ ํ†ตํ•ด ํ†ต์‹  ์‹œ copy ๋ฐœ์ƒ
Group operation ์ œํ•œ8๊ฐœ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ๋งŽ์€ receiver์ผ ๋•Œ ์„ฑ๋Šฅ ์ €ํ•˜
Latency instabilityhigh percentile latency (P99) ๋งค์šฐ ๋†’์Œ
Setup overhead์ผ๋ฐ˜ ๋ชฉ์  ์ง‘ํ•ฉ ์—ฐ์‚ฐ์„ ์œ„ํ•œ ๋ถˆํ•„์š”ํ•œ ์ดˆ๊ธฐํ™” ํฌํ•จ

โœ… MegaScale-Infer์˜ ํ•ด๊ฒฐ์ฑ…: Custom M2N Library

๐Ÿ”ง ๋””์ž์ธ ํŠน์ง•
๊ตฌ์„ฑ ์š”์†Œ์„ค๋ช…
Core SenderCPU ๊ธฐ๋ฐ˜ RDMA write ์‚ฌ์šฉ + GPUDirect๋กœ GPU ๋ฉ”๋ชจ๋ฆฌ ์ง์ ‘ ์†ก์‹ 
Send-control Kernelstream-oriented trigger ๊ธฐ๋ฐ˜์œผ๋กœ send flag ์ฒ˜๋ฆฌ
ReceiverRDMA pre-registered buffer์—์„œ polling์œผ๋กœ ์ˆ˜์‹ 
Copy kernelํ•„์š”์‹œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž layout์œผ๋กœ ๋ณต์‚ฌ

โš™๏ธ ํ†ต์‹  ์‹œ๊ฐ„ ๋ชจ๋ธ (Eq. 6)

\[ T_c = \max\left( \frac{bahK}{tpa W_a \cdot \text{Util}()}, \frac{beh}{tpe W_e \cdot \text{Util}()} \right) \]
  • \(bah\): attentionโ†’expert๋กœ ๋ณด๋‚ผ tensor ํฌ๊ธฐ
  • \(beh\): ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ ํฌ๊ธฐ
  • \(W_a, W_e\): attention/expert GPU์˜ NIC bandwidth
  • Util(): empirical bandwidth utilization ํ•จ์ˆ˜

๐Ÿ“ˆ ์„ฑ๋Šฅ ๊ฐœ์„  ์ˆ˜์น˜ ์š”์•ฝ (NCCL vs MegaScale-Infer)

์ธก์ • ํ•ญ๋ชฉ๊ฐœ์„  ์ˆ˜์น˜
Median Latency (256KB)68.2% ๊ฐ์†Œ
P99 Latency (256KB)92.9% ๊ฐ์†Œ
Throughput (256KB)4.2ร— ํ–ฅ์ƒ
M,N ํ™•์žฅ์„ฑ (16โ†’32)Tail Latency: ์ตœ๋Œ€ 96.9% ๊ฐ์†Œ, Throughput: 5.8ร— ํ–ฅ์ƒ

๐Ÿ“Œ ๊ฒฐ๋ก 

  • Algorithm 1์€ pipeline ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด์„œ GPU resource๋ฅผ ๊ฐ€์žฅ ํšจ์œจ์ ์œผ๋กœ ์“ฐ๋Š” ๋ฐฐ์น˜ ๊ณ„ํš์„ searchํ•ฉ๋‹ˆ๋‹ค.
  • M2N ํ†ต์‹  ์ตœ์ ํ™”๋Š” ๊ธฐ์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ณ‘๋ชฉ์„ ์ œ๊ฑฐํ•˜๊ณ , ๋Œ€๊ทœ๋ชจ expert ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์•ˆ์ •์ ์ด๊ณ  ๊ณ ์„ฑ๋Šฅ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์˜ˆ์‹œ๋กœ ๋”ฐ๋ผ๊ฐ€๊ธฐ

๋ฌผ์–ด๋ณธ ๊ฒƒ: ๋…ผ๋ฌธ์˜ ํ•ต์‹ฌ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์•„์ฃผ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๊ณ  ์ •๋ฆฌํ•ด ์ค˜

๋…ผ๋ฌธ์˜ ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํฌ๊ฒŒ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

  1. Disaggregated Expert Parallelism ๊ธฐ๋ฐ˜์˜ ๋ฐฐ์น˜ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Algorithm 1)
  2. Attention โ†” FFN ๊ฐ„ Ping-Pong Pipeline Parallelism

์ด ๋‘ ๊ฐ€์ง€๋Š” ์„œ๋น™ ์„ฑ๋Šฅ์„ GPU ๋ฐ ๋„คํŠธ์›Œํฌ ์ž์› ์ œ์•ฝ ํ•˜์— ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ์„ค๊ณ„์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์ˆ˜์‹๊ณผ ํ•จ๊ป˜ ์˜ˆ์‹œ ๊ธฐ๋ฐ˜์œผ๋กœ ์ „์ฒด ์‹คํ–‰ ํ๋ฆ„์„ ์ž์„ธํžˆ ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿง  ํ•ต์‹ฌ ์ปจ์…‰ ์ •๋ฆฌ

๊ตฌ์„ฑ ์š”์†Œ๋ชฉ์ ๊ธฐ์ˆ  ์š”์•ฝ
Disaggregated Expert ParallelismAttention๊ณผ FFN์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐ์ž ๋…๋ฆฝ์ ์œผ๋กœ ์ตœ์ ํ™”Attention์€ Data Parallelism, FFN์€ Expert Parallelism ์ ์šฉ
Ping-Pong Pipeline Parallelismํ†ต์‹ -๊ณ„์‚ฐ ์˜ค๋ฒ„๋žฉ, ์ž์› ์œ ํœด ์‹œ๊ฐ„ ์ œ๊ฑฐMicro-batching๊ณผ Layer-Interleaving ํ™œ์šฉ
Algorithm 1์œ„ ๊ตฌ์กฐ์—์„œ Throughput per Dollar๊ฐ€ ์ตœ๋Œ€ํ™”๋˜๋„๋ก ๋ฐฐ์น˜ ์ „๋žต ํƒ์ƒ‰Tensor parallelism ํฌ๊ธฐ, micro-batch ์ˆ˜, attention node ์ˆ˜ ํƒ์ƒ‰

๐Ÿงช ์˜ˆ์‹œ ๊ธฐ๋ฐ˜ ์„ค๋ช…

โœณ๏ธ ๊ฐ€์ • ์„ค์ •

  • ๋ชจ๋ธ: Mixtral 8ร—22B (hidden size = 6144, intermediate dim = 16384, 56 layers)
  • top-k = 2, expert ์ˆ˜ = 8
  • GPU: A100 (TFLOPS = 312, Bandwidth = 2 TB/s)
  • batch size = 156, micro-batch ๊ฐœ์ˆ˜ \( m = 4 \)
  • TP size: attention = 2, expert = 2

๐Ÿชœ ์ „์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹คํ–‰ ํ๋ฆ„ (์ •๋ฆฌ)


โ‘  [์ „์ฒ˜๋ฆฌ] Attention/FFN ์—ฐ์‚ฐ ํŠน์„ฑ ๋ถ„์„

  • Attention (QKV projection + Attention output):
    • input: \((b_a, h)\), param: \((h, h \cdot (1 + 2/g) / tpa)\)
  • FFN (top-k expert๋กœ ๋ถ„๊ธฐ๋œ sub-batch):
    • input: \((b_e, h)\), param: \((h, h' / tpe)\)

โ‘ก [๊ณ„์‚ฐ ์‹œ๊ฐ„ ๋ชจ๋ธ๋ง] Pipeline ๊ท ํ˜• ์กฐ๊ฑด ๊ณ„์‚ฐ

Ta, Te๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ชจ๋ธ๋ง:

\[ T_a = k_1 b_a + k_2, \quad T_e = k_3 b_e + k_4 \]

์—ฌ๊ธฐ์„œ \( b_e = \frac{B \cdot K}{E} = \frac{156 \cdot 2}{8} = 39 \)

๊ท ํ˜• ์กฐ๊ฑด:

\[ T_a \approx T_e \Rightarrow n_a = \frac{k_1 E}{k_3 K} \]

โ†’ ์ด๋กœ๋ถ€ํ„ฐ attention node ์ˆ˜ \(n_a\) ๊ฒฐ์ • (ex: 2๊ฐœ ์ •๋„๋กœ ๊ณ„์‚ฐ๋  ์ˆ˜ ์žˆ์Œ)


โ‘ข [Pipeline ์กฐ๊ฑด ๊ณ„์‚ฐ] micro-batch ์ˆ˜ \(m\) ์„ ํƒ

ํ†ต์‹  ์‹œ๊ฐ„ < ๊ณ„์‚ฐ ์‹œ๊ฐ„ (Ta, Te) ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด

\[ m \geq 2 \left(1 + \frac{T_c}{T_f}\right), \quad \text{where } T_f = \max(T_a, T_e) \]

์˜ˆ: \( \frac{T_c}{T_f} = 0.3 \) ์ด๋ฉด โ†’ \( m \ge 2(1 + 0.3) = 2.6 \) โ†’ ์ตœ์†Œ 3๊ฐœ์˜ micro-batch ํ•„์š”


โ‘ฃ [๋ฐฐ์น˜ ๊ณ„ํš ํ‰๊ฐ€] SIMULATE(plan)

  • ์ตœ๋Œ€ batch size \(B\) ์ถ”์ • (latency ์ œํ•œ ๊ณ ๋ ค, ์‹ 5 ๊ธฐ๋ฐ˜):
\[ T_{total} = (T_a + T_e + 2T_c) + T_f \cdot (mL - 1) \]

์˜ˆ: \(T_a = T_e = 2\)ms, \(T_c = 0.5\)ms, \(m = 4\), \(L = 56\)

\[ T_{total} \approx 2 + 2 + 1 + 2 \cdot (4 \cdot 56 - 1) = 447 \text{ ms} \]
  • ์ด ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด latency SLA ๋งŒ์กฑ ์—ฌ๋ถ€ ํ‰๊ฐ€ ํ›„, Throughput per Dollar ๊ณ„์‚ฐ:
\[ tpd = \frac{B}{T_{total} \cdot (tp_a \cdot n_a \cdot cost_a + tp_e \cdot E \cdot cost_e)} \]

โ‘ค [์ตœ์ข… ์„ ํƒ] ๊ฐ€์žฅ ๋†’์€ tpd๋ฅผ ๊ฐ€์ง€๋Š” ๋ฐฐ์น˜ ์„ ํƒ

๋ฐ˜๋ณต์ ์œผ๋กœ \(tpa, tpe, m\) ์กฐํ•ฉ์„ ๋ฐ”๊พธ๋ฉฐ ํƒ์ƒ‰ํ•˜์—ฌ ์ตœ๊ณ  ๊ณ„ํš ์„ ํƒ.


๐Ÿ” Ping-Pong Pipeline ์‹คํ–‰ ๊ตฌ์กฐ ์‹œ๊ฐํ™”

๊ฐ micro-batch๋Š” attention โ†’ FFN โ†’ attention โ†’ … ์ˆœ์„œ๋กœ layer๋ฅผ ํƒ€๊ณ  ํ๋ฆ„.

PLAINTEXT
Layer 1      Layer 2      Layer 3

Micro 1:  [Attn1]โ†’[FFN1]โ†’[Attn2]โ†’[FFN2]โ†’[Attn3]โ†’[FFN3]
Micro 2:         [Attn1]โ†’[FFN1]โ†’[Attn2]โ†’[FFN2]โ†’...
Micro 3:                [Attn1]โ†’[FFN1]โ†’[Attn2]โ†’...
Micro 4:                       [Attn1]โ†’[FFN1]โ†’...

=> ๊ณ„์‚ฐ๊ณผ ํ†ต์‹ ์ด ์˜ค๋ฒ„๋žฉ๋˜์–ด attention/FFN ๋ชจ๋‘ idle ์‹œ๊ฐ„์ด ๊ฑฐ์˜ ์—†์Œ

๐Ÿงพ ์š”์•ฝ ์ •๋ฆฌํ‘œ

ํ•ญ๋ชฉ์„ค๋ช…
๋ชฉ์ FFN-GPU๊ฐ€ compute-intensive, Attention-GPU๊ฐ€ memory-intensive์ธ ์„ฑ๊ฒฉ์— ๋งž๊ฒŒ ๋…๋ฆฝ ์ตœ์ ํ™”
์ž…๋ ฅ๋ชจ๋ธ ํฌ๊ธฐ, MoE ๊ตฌ์กฐ, top-k, GPU ๋ฉ”๋ชจ๋ฆฌ, latency SLO
์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ถœ๋ ฅ์ตœ์  tensor parallelism (TP), micro-batch ์ˆ˜, attention node ์ˆ˜
ํ•ต์‹ฌ ์•„์ด๋””์–ด\(T_a \approx T_e\) ์กฐ๊ฑด๊ณผ ํŒŒ์ดํ”„๋ผ์ธ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด์„œ throughput/cost ์ตœ๋Œ€ํ™”
๊ฒฐ๊ณผ์ตœ๋Œ€ 1.9ร— throughput ํ–ฅ์ƒ, 1.86ร— cost-per-token ๊ฐœ์„ 

์‹คํ—˜ ๊ฒฐ๊ณผ์™€ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋ก ๊ณผ์˜ ์ฐจ์ด

๋ฌผ์–ด๋ณธ ๊ฒƒ: ์ด ๋…ผ๋ฌธ์—์„œ ์ œ์‹œํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ž์„ธํ•˜๊ฒŒ ๋ณด๊ณ  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋ก ์— ๋น„ํ•˜์—ฌ ํŠน์ถœ๋‚œ ์ ๊ณผ ๋…ผ๋ฌธ์—์„œ ์ œ๊ธฐํ•˜๋Š” ์–ด๋– ํ•œ ๋ฐฉ๋ฒ•์ด ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๊ฒŒ ๋˜์—ˆ๋Š”์ง€ ๋…ผ๋ฌธ์—์„œ ์ œ์‹œํ•˜๋Š” ์ด์œ ์™€ ๋„ˆ์˜ ์ƒ๊ฐ์„ ์•Œ๋ ค์ค˜

์•„์ฃผ ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๋…ผ๋ฌธ์ด ์ œ์‹œํ•˜๋Š” ๊ฒฐ๊ณผ๋Š” MoE ๊ธฐ๋ฐ˜ LLM ์„œ๋น™์—์„œ ์„ฑ๋Šฅ ๋Œ€๋น„ ๋น„์šฉ ํšจ์œจ์„ฑ(per-cost throughput)์„ ๊ทน๋‹จ์ ์œผ๋กœ ๋†’์˜€๋‹ค๋Š” ์ ์—์„œ ๋งค์šฐ ์˜๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ถ„์„ ํ”„๋ ˆ์ž„์œผ๋กœ ์„ค๋ช…๋“œ๋ฆด๊ฒŒ์š”:


โœ… 1. ๋…ผ๋ฌธ์—์„œ ์ œ์‹œํ•œ ์ •๋Ÿ‰์  ์„ฑ๋Šฅ ๊ฒฐ๊ณผ ์š”์•ฝ

๐Ÿ”ง ์‹คํ—˜ ํ™˜๊ฒฝ

  • ๋ชจ๋ธ: Mixtral-8ร—22B, DBRX, Scaled-MoE(317B)
  • ํ™˜๊ฒฝ: A100 ๊ธฐ๋ฐ˜ homogeneous, H20 + L40S ๊ธฐ๋ฐ˜ heterogeneous cluster
  • Metric: Per-GPU throughput (token/s/GPU), Per-dollar throughput

๐Ÿ“Š ์ฃผ์š” ๋น„๊ต ๊ฒฐ๊ณผ

[1] Homogeneous Deployment (A100 ๊ธฐ์ค€)
๋ชจ๋ธvLLM ๋Œ€๋น„TensorRT-LLM ๋Œ€๋น„MegaScale-Infer ๊ธฐ์—ฌ์ 
Mixtral 8x22B2.56ร— โ†‘1.28ร— โ†‘FFN compute ์ง‘์•ฝํ™” + attention ๋ถ„์‚ฐ
DBRX1.70ร— โ†‘1.30ร— โ†‘๋ฐฐ์น˜ ์ตœ์ ํ™” ํ†ตํ•œ pipeline ๊ท ํ˜•
Scaled-MoE7.11ร— โ†‘1.90ร— โ†‘multi-node์— ์ตœ์ ํ™”๋œ ํ†ต์‹  ๊ตฌ์กฐ
[2] Heterogeneous Deployment (H20: Attention / L40S: FFN)
๋ชจ๋ธMegaScale vs. vLLM(H20)MegaScale vs. TRT-LLM(H20)
Mixtral 8x22B3.24ร— per-cost โ†‘1.86ร— per-cost โ†‘

โœ… 2. ์„ฑ๋Šฅ ํ–ฅ์ƒ์˜ ํ•ต์‹ฌ ์›์ธ: ๋…ผ๋ฌธ์ด ์ œ์‹œํ•œ ๊ธฐ์—ฌ์ ๊ณผ ๊ทผ๊ฑฐ

๋…ผ๋ฌธ ์ œ์•ˆ๊ฒฐ๊ณผ์— ๊ธฐ์—ฌํ•œ ๋ฐฉ์‹๋…ผ๋ฌธ ๋‚ด ๊ทผ๊ฑฐ
1. Attentionโ€“FFN ๋ถ„๋ฆฌ (Disaggregation)FFN ์ชฝ์— ๋ฐฐ์น˜๋œ ํ† ํฐ ์ˆ˜ ์ฆ๊ฐ€ โ†’ GPU utilization ์ฆ๊ฐ€ยง3, ยง4: โ€œFFNs transition from memory- to compute-intensiveโ€
2. Ping-Pong PipelineFFN/Attention idle time ๊ฐ์†Œ โ†’ ์ž์› utilization ์ฆ๊ฐ€ยง4.1: โ€œhide communication latency & balance compute timeโ€
3. M2N ํ†ต์‹  ์ตœ์ ํ™”Token routing ๋ณ‘๋ชฉ ์ œ๊ฑฐ โ†’ Tail latency ๊ฐ์†Œ โ†’ Throughput ์ฆ๊ฐ€ยง5, Figure 10โ€“11: ์ตœ๋Œ€ 4.2ร— throughput ์ฆ๊ฐ€
4. Heterogeneous Deployment ์ „๋žต๋น„์šฉ ๋Œ€๋น„ ์ตœ์ ํ™”๋œ ํ•˜๋“œ์›จ์–ด ๋งค์นญ (L40S๋Š” ์—ฐ์‚ฐ, H20์€ memory)ยง4.3, Table 3, Figure 9: “maximize cost-effective memory vs compute”
5. ๋ฐฐ์น˜ ๊ณ„ํš ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ชจ๋“  ๊ตฌ์„ฑ ์กฐํ•ฉ ์ค‘ throughput/cost ์ตœ์  plan ํƒ์ƒ‰ยง4.2: Algorithm 1 ๊ธฐ๋ฐ˜ ๊ณ„ํš ์ˆ˜๋ฆฝ

๐Ÿ’ก 3. ๋‚ด ์ƒ๊ฐ: ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋ก  ๋Œ€๋น„ ํŠน์ถœ๋‚œ ์ 

๐Ÿ”ฅ ๊ธฐ์กด ์‹œ์Šคํ…œ (vLLM, TensorRT-LLM)์˜ ํ•œ๊ณ„

์‹œ์Šคํ…œํ•œ๊ณ„
vLLMํ†ตํ•ฉํ˜• ๊ตฌ์กฐ๋กœ ์ธํ•ด FFN ์ชฝ์— token sparsity ๋ฐœ์ƒ โ†’ GPU ํ™œ์šฉ๋ฅ โ†“
TensorRT-LLMkernel-level ์ตœ์ ํ™”๋Š” ์ž˜ ๋˜์–ด ์žˆ์œผ๋‚˜ FFN๊ณผ Attention์„ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š์Œ

๐Ÿงจ MegaScale-Infer์˜ ํŠน์ถœ๋‚œ ์ 

์ฐจ๋ณ„์ ์™œ ํŠน์ถœ๋‚œ๊ฐ€?
๊ตฌ์กฐ์  ๋ถ„ํ•ด (attention vs FFN)๋‹จ์ˆœํ•œ kernel-level ์ตœ์ ํ™”๊ฐ€ ์•„๋‹Œ ์‹œ์Šคํ…œ ๊ตฌ์กฐ ์ž์ฒด๋ฅผ ์žฌ์„ค๊ณ„ํ•จ
ํ†ต์‹  ์ตœ์ ํ™” M2N ์„ค๊ณ„๊ธฐ์กด NCCL์ด ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” MoE token routing ํŒจํ„ด์„ ์œ„ํ•ด purpose-built ๊ตฌํ˜„
๋‹จ๊ฐ€ ์ตœ์  ๋ฐฐ์น˜ ์„ค๊ณ„๋‹จ์ˆœ throughput์ด ์•„๋‹Œ throughput per dollar ์ตœ์ ํ™”๋ฅผ ๋‹ฌ์„ฑํ•จ
ํŒŒ์ดํ”„๋ผ์ธ ํ™œ์„ฑํ™”m micro-batch ์„ค๊ณ„๋กœ ๊ณ„์‚ฐ-ํ†ต์‹  ์˜ค๋ฒ„๋žฉ์„ ๊ทน๋Œ€ํ™”ํ•ด idle ์ œ๊ฑฐํ•จ

๐Ÿงฉ ๊ฒฐ๋ก  ์ •๋ฆฌ

ํ•ญ๋ชฉ๋‚ด์šฉ
๋…ผ๋ฌธ์ด ์ œ์‹œํ•œ ๋ฐฉ๋ฒ•๋ก Disaggregated expert parallelism + ping-pong pipeline + M2N ํ†ต์‹  ์ตœ์ ํ™”
์„ฑ๊ณผ์˜ ์ •๋Ÿ‰์  ์ฆ๊ฑฐ์ตœ๋Œ€ 7.11ร— throughput โ†‘, 3.24ร— per-cost throughput โ†‘
์ฐจ๋ณ„ํ™”๋œ ์„ค๊ณ„ ํฌ์ธํŠธ์„œ๋น™ ๊ตฌ์กฐ ์ž์ฒด๋ฅผ ๋ถ„ํ•ดํ•˜๊ณ , ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์˜ compute/memory bottleneck ๋ถ„๋ฆฌ ์ฒ˜๋ฆฌ
๋‚ด ์ƒ๊ฐ“๊ตฌ์กฐ์  ์„ค๊ณ„ ๋ณ€๊ฒฝ + ํ†ต์‹  ์ตœ์ ํ™” + ๋ฐฐ์น˜ ํƒ์ƒ‰"์ด LLM ์„œ๋น™์˜ ์ƒˆ๋กœ์šด ์‹ค์šฉ์  ๋ฐฉํ–ฅ์„ ์ œ์‹œํ•จ. ๋‹จ์ˆœํ•œ CUDA ์ตœ์ ํ™”๋ณด๋‹ค ์ด์ฒด์  ์‹œ์Šคํ…œ ์—”์ง€๋‹ˆ์–ด๋ง ๊ด€์ ์ด ๋‹๋ณด์ž„

์ž…๋ ฅ ๋ฐ์ดํ„ฐ์™€ ์ถ”๋ก  ๊ณผ์ •, ๋ชจ๋ธ ๊ตฌ์กฐ์™€ ์ž์› ์š”๊ตฌ๋Ÿ‰

๋ฌผ์–ด๋ณธ ๊ฒƒ: ์ด ๋…ผ๋ฌธ์˜ ์ž…๋ ฅ๋ฐ์ดํ„ฐ์™€ ์ถ”๋ก  ๊ณผ์ •์— ๋Œ€ํ•ด์„œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์•„์ฃผ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ๊ฒ ๋‹ˆ? ์ถ”๊ฐ€์ ์œผ๋กœ ๋ชจ๋ธ์•„ํ‚คํ…์ฒ˜์˜ ๊ตฌ์„ฑ ๋ฐ ๋ชจ๋ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ์—ฐ์‚ฐ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ๋Ÿ‰ ์ปดํ“จํŒ… ์š”๊ตฌ๋Ÿ‰ ๋Œ€ํ•ด์„œ๋„ ์„ค๋ช…ํ•ด์ค˜

์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๋…ผ๋ฌธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” LLM์€ MoE ๊ธฐ๋ฐ˜์˜ Transformer๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋…ผ๋ฌธ ์ „์ฒด๊ฐ€ ์„œ๋น™ ์‹œ์Šคํ…œ(ํŠนํžˆ decoding phase)์˜ ์ตœ์ ํ™”์— ์ง‘์ค‘๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ž˜ ๋‚ด์šฉ์„ ์ค‘์‹ฌ์œผ๋กœ ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค:


๐Ÿ“Œ ์„ค๋ช… ๊ตฌ์กฐ ์š”์•ฝ

  1. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ
  2. ์ถ”๋ก  ๊ณผ์ • (Prefill vs Decoding)
  3. ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ
  4. ์ฃผ์š” ์—ฐ์‚ฐ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ/์ปดํ“จํŒ… ์š”๊ตฌ๋Ÿ‰ ๋ถ„์„

1. ๐Ÿ“ฅ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ

๋…ผ๋ฌธ ๊ธฐ์ค€ ์‹คํ—˜ ์„ค์ •์—์„œ:

  • Prompt input ๊ธธ์ด (median): 571 tokens
  • Output ๊ธธ์ด (median): 159 tokens

๐ŸŽฏ ์˜ˆ์‹œ

PYTHON
Input prompt:
"Once upon a time, there was a kingdom where people communicated only using code..."

Tokenized: [1012, 4021, 1029, 4890, 8923, 3401, ...]

Total input tokens = 571

2. โš™๏ธ ์ถ”๋ก  ๊ณผ์ •: Prefill vs Decoding

๐ŸŸข [Phase 1] Prefill

  • ๋ชฉ์ : ์ž…๋ ฅ ์‹œํ€€์Šค ์ „์ฒด(571 tokens)์˜ attention์„ ํ•œ ๋ฒˆ์— ๊ณ„์‚ฐ
  • ์—ฐ์‚ฐ ํŠน์ง•:
    • Attention: ๋ชจ๋“  token ๊ฐ„ ๊ด€๊ณ„ ๊ณ„์‚ฐ โ†’ ๋งค์šฐ compute-intensive
    • FFN: ๋ชจ๋“  token์— ๋™์ผํ•˜๊ฒŒ ์ ์šฉ (sparseํ•˜์ง€ ์•Š์Œ)
  • Key-Value (KV) cache ์ƒ์„ฑ: attention ๊ฒฐ๊ณผ ์ €์žฅ

๐Ÿ”ต [Phase 2] Decoding

  • ๋ชฉ์ : 1-step autoregressive token ์ƒ์„ฑ ๋ฐ˜๋ณต (์˜ˆ: 159ํšŒ ๋ฐ˜๋ณต)
  • ์—ฐ์‚ฐ ํŠน์ง•:
    • Attention: KV cache ์ฝ๊ธฐ โ†’ memory-intensive
    • FFN: top-k expert๋งŒ ํ™œ์„ฑํ™”๋จ โ†’ sparse, compute volume โ†“, GPU utilization โ†“
  • โ†’ ์ด ๋ฌธ์ œ๋ฅผ MegaScale-Infer๊ฐ€ ํ•ด๊ฒฐํ•จ

3. ๐Ÿงฑ ๋ชจ๋ธ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ

๋…ผ๋ฌธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋ธ์€ ์ผ๋ฐ˜์ ์ธ MoE ๊ธฐ๋ฐ˜ Transformer Layer์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ์„ค๋ช…
Layer ์ˆ˜48~56 (Mixtral: 56)
Hidden dim6144 (e.g., Mixtral)
Intermediate dim16384
AttentionGrouped-query Attention (GQA)
FFNMixture-of-Experts (MoE), top-k = 2
Expert ์ˆ˜8, 16, 32 ๋“ฑ ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„

๐Ÿ“Œ ์˜ˆ: Mixtral 8x22B ๊ตฌ์กฐ

  • ์ด 56๊ฐœ layer
  • ๊ฐ layer์—๋Š”
    • GQA attention
    • MoE FFN (top-2 of 8 experts ์‚ฌ์šฉ)

4. ๐Ÿ” ์ฃผ์š” ์—ฐ์‚ฐ ๋ฐ ์ž์› ์š”๊ตฌ๋Ÿ‰

โœ… Attention ์—ฐ์‚ฐ

์—ฐ์‚ฐ์ž…๋ ฅํŒŒ๋ผ๋ฏธํ„ฐ ํฌ๊ธฐ์—ฐ์‚ฐ๋Ÿ‰
QKV Projection\((b_a, h)\)\((h, h \cdot (1+2/g)) / tpa\)GEMM
Attention Output\((b_a, h/tpa)\)\((h/tpa, h)\)GEMM
  • ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ๋Ÿ‰ (per token): KV cache (2ร—hiddenร—sequence length)
  • ํŠน์ง•: prefill์€ compute, decoding์€ memory access bottleneck

โœ… FFN (MoE) ์—ฐ์‚ฐ

์—ฐ์‚ฐ์ž…๋ ฅํŒŒ๋ผ๋ฏธํ„ฐ ํฌ๊ธฐ์—ฐ์‚ฐ๋Ÿ‰
FFN Input\((b_e, h)\)\((h, h')/tpe\)GEMM
FFN Output\((b_e, h')/tpe\)\((h', h)\)GEMM
  • top-2 experts๋งŒ ํ™œ์„ฑํ™”๋จ โ†’ b_e = B ร— topk / #experts
  • โ†’ FFN์˜ GPU ํ™œ์šฉ๋ฅ ์ด ๊ธ‰๊ฒฉํžˆ ๊ฐ์†Œํ•˜๋Š” ๋ฌธ์ œ

๐Ÿ’พ ์ž์› ์š”๊ตฌ๋Ÿ‰ ์ˆ˜์น˜ ์˜ˆ์‹œ (Mixtral 8x22B, A100 ๊ธฐ์ค€)

๐Ÿ“Œ ๊ณ„์‚ฐ๋œ ์ตœ์†Œ batch size (Roofline Model ๊ธฐ์ค€)

A100 GPU:

  • Compute: 312 TFLOPS
  • Memory BW: 2 TB/s
    โ†’ \( b_{min} = \frac{F}{B} = \frac{312}{2} = 156 \)

๐Ÿ“Œ FFN ๋‹น token ์ˆ˜ (MoE sparsity ๋ฐ˜์˜)

\[ b_{e} = 156 \times \frac{2}{8} = 39 \text{ tokens per expert} \]

โ†’ ์ด๋Š” GEMM์˜ compute ํšจ์œจ์„ฑ์ด ๋งค์šฐ ๋–จ์–ด์ง€๋Š” ์ˆ˜์ค€
โ†’ GPU utilization: 25% ์ดํ•˜


๐Ÿ”ข KV Cache ์šฉ๋Ÿ‰ ์˜ˆ์‹œ

  • KV per token (bfloat16): \(2 \cdot h = 2 \cdot 6144 \cdot 2 \text{ bytes} = 24 KB/token\)
  • Sequence 571 + generated 159 = 730 tokens

โ†’ KV cache per sequence: 730 ร— 24 KB = 17.5 MB
โ†’ batch size 156 ๊ธฐ์ค€: ~2.7 GB (GPU memory์— ์ƒ๋‹นํ•œ ๋ถ€๋‹ด)


๐Ÿงพ ์ •๋ฆฌ

ํ•ญ๋ชฉ์„ค๋ช…
์ž…๋ ฅํ‰๊ท  571 token์˜ prompt
์ถ”๋ก  ๋‹จ๊ณ„Prefill (dense) โ†’ Decoding (sparse, memory-bound)
์•„ํ‚คํ…์ฒ˜56-layer Transformer, GQA + MoE (top-2 of 8 experts)
์—ฐ์‚ฐ ๋ณ‘๋ชฉPrefill: attention compute
Decoding: FFN compute (sparse), attention memory access
์—ฐ์‚ฐ๋Ÿ‰FFN: ๋งค์šฐ ์ž‘์•„์ ธ compute utilizationโ†“, attention์€ KV cache access๋กœ bandwidth โ†‘
์ž์› ์ด์ŠˆA100 ๊ธฐ์ค€ batch 156 ์ด์ƒ ํ•„์š”, ๊ทธ๋Ÿฌ๋‚˜ sparse MoE ๊ตฌ์กฐ์—์„œ๋Š” 39 tokens/expert ์ˆ˜์ค€๋งŒ ์‚ฌ์šฉ๋จ

โœ… ์ด ๋ชจ๋“  ๊ตฌ์กฐ์—์„œ MegaScale-Infer์˜ ์ตœ์ ํ™” ์š”์ 

๋ฌธ์ œMegaScale-Infer ํ•ด๊ฒฐ ๋ฐฉ์‹
FFN์— ์ ์€ ํ† ํฐ ๋ถ„๋ฐฐ โ†’ GPU ๋‚ญ๋น„attention module ๋ถ„๋ฆฌ โ†’ ์—ฌ๋Ÿฌ attention์ด FFN์—๊ฒŒ token์„ aggregate
attentionโ€“FFN ๊ฐ„ ํ†ต์‹  ๋ณ‘๋ชฉM2N ํ†ต์‹  ๊ตฌ์กฐ๋กœ latency/tail ์•ˆ์ •ํ™”
KV cache memory โ†‘ โ†’ batch size ์ œ์•ฝattention node๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์ค‘์‹ฌ GPU(H20)๋กœ ๋ถ„๋ฆฌ

ํ•„์š”ํ•˜์‹œ๋ฉด KV cache ์••์ถ•, expert load balancing ๋ฐฉ์‹, or ๊ฐ ๋‹จ๊ณ„๋ณ„ PyTorch ์—ฐ์‚ฐ trace ์˜ˆ์‹œ๋„ ๋„์™€๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ๋” ํ™•์žฅํ•ด๋ณผ๊นŒ์š”?

ํ•œ๊ณ„๋ฅผ ๋„˜์œผ๋ ค๋Š” ์—ฐ๊ตฌ ํ๋ฆ„

๋ฌผ์–ด๋ณธ ๊ฒƒ: ์ด ๋…ผ๋ฌธ์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์–ด๋–ค ์—ฐ๊ตฌํ๋ฆ„์ด ์žˆ๋Š”์ง€ ์ •๋ฆฌํ•ด์„œ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด ์ค˜

์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๋…ผ๋ฌธ์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ฑฐ๋‚˜ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์€ ํฌ๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 3๊ฐ€์ง€ ์—ฐ๊ตฌ ํ๋ฆ„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:


๐Ÿ” [A] Fine-Grained Expert Scheduling & Load Balancing

๐Ÿ“Œ ํ•œ๊ณ„:

  • MegaScale-Infer๋Š” top-k expert์— token์„ ์ผ๊ด„์ ์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๊ตฌ์กฐ์ด๋ฉฐ, load imbalance๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํŠน์ • expert node๊ฐ€ ๋ณ‘๋ชฉ์ด ๋จ.
  • ๋…ผ๋ฌธ์—์„œ๋Š” ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด on-device redundancy + greedy scheduling์„ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜, traffic-aware dynamic load balancing์€ ์ œํ•œ์ ์ž„.

โœ… ๋Œ€์•ˆ ์—ฐ๊ตฌ ํ๋ฆ„:

์—ฐ๊ตฌ๊ธฐ๋ฒ•์„ค๋ช…
Tutel (Hwang et al., MLSys 2023)Adaptive Routingtoken๋งˆ๋‹ค ์ „๋ฌธ๊ฐ€ ์„ ํƒ ํ™•๋ฅ ์„ ํ•™์Šตํ•˜์—ฌ traffic skew ์ตœ์†Œํ™”
Brainstorm (Cui et al., OSDI 2023)Expert-level schedulingExpert์˜ popularity๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ GPU-Expert ๋งคํ•‘ ์ตœ์ ํ™”
MoE-Lightning (Cao et al., arXiv 2024)expert preloadingtoken traffic ํžˆ์Šคํ† ๋ฆฌ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฏธ๋ฆฌ expert๋ฅผ preload ํ•˜์—ฌ cold-start ๋ฐฉ์ง€

๐Ÿš› [B] Token Routing Overhead ์™„ํ™”

๐Ÿ“Œ ํ•œ๊ณ„:

  • MegaScale-Infer์˜ M2N ํ†ต์‹  ๊ตฌ์กฐ๋Š” ๊ณ ์„ฑ๋Šฅ์ด์ง€๋งŒ ์—ฌ์ „ํžˆ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์—์„œ ๋„คํŠธ์›Œํฌ ๋ณ‘๋ชฉ ๋ฐœ์ƒ ๊ฐ€๋Šฅ.
  • ํŠนํžˆ top-k ์ „๋ฌธ๊ฐ€ ์ˆ˜ ์ฆ๊ฐ€ ์‹œ โ†’ ํ†ต์‹ ๋Ÿ‰ ์ฆ๊ฐ€ โ†’ tail latency ์ฆ๊ฐ€

โœ… ๋Œ€์•ˆ ์—ฐ๊ตฌ ํ๋ฆ„:

์—ฐ๊ตฌ๊ธฐ๋ฒ•์„ค๋ช…
Switch Transformer (Fedus et al., JMLR 2022)Top-1 routing๋‹จ์ผ expert๋งŒ ํ™œ์„ฑํ™”ํ•˜์—ฌ ํ†ต์‹ ๋Ÿ‰ ์ž์ฒด๋ฅผ ์ตœ์†Œํ™”ํ•จ
Janus (Liu et al., SIGCOMM 2023)Unified sparse communicationMoE training/inference ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ํ†ต์‹  abstraction layer ์ œ๊ณต
Pre-gated MoE (Hwang et al., ISCA 2024)Token-to-Expert mapping ์‚ฌ์ „ ๊ฒฐ์ •inference์—์„œ ๋ผ์šฐํŒ… ์—ฐ์‚ฐ ์ž์ฒด ์ œ๊ฑฐ, ์˜คํ”„๋ผ์ธ์œผ๋กœ tokenโ†’expert ๋งคํ•‘์„ ๋ฏธ๋ฆฌ ๊ฒฐ์ •ํ•จ

๐Ÿง  [C] Computation-Memory Tradeoff ๋ฐ Cache ์ตœ์ ํ™”

๐Ÿ“Œ ํ•œ๊ณ„:

  • MegaScale-Infer๋Š” attention module์˜ KV cache๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๋ณต์ œํ•˜์ง€๋งŒ, ์—ฌ์ „ํžˆ memory bottleneck์ด ์กด์žฌํ•˜๋ฉฐ batch size scaling์— ์ œ์•ฝ

โœ… ๋Œ€์•ˆ ์—ฐ๊ตฌ ํ๋ฆ„:

์—ฐ๊ตฌ๊ธฐ๋ฒ•์„ค๋ช…
PagedAttention (vLLM, SOSP 2023)Dynamic KV Cache PagingGPU ๋ฉ”๋ชจ๋ฆฌ์— ๋“ค์–ด์˜ค์ง€ ์•Š๋Š” KV๋Š” disk๋กœ swapping ํ•˜์—ฌ batch size ํ™•๋Œ€ ๊ฐ€๋Šฅ
Mooncake (Qin et al., arXiv 2024)KV cache centric ์„œ๋ฒ„ ์„ค๊ณ„KV cache๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋œ ์„œ๋น™ ์‹œ์Šคํ…œ: streaming/eviction ์ตœ์ ํ™”
Splitwise (Patel et al., NSDI 2023)Prefill / Decoding ๋ถ„๋ฆฌ ํด๋Ÿฌ์Šคํ„ฐMegaScale-Infer๋„ ์ด ์•„์ด๋””์–ด๋ฅผ ์ฐจ์šฉํ–ˆ์ง€๋งŒ, Prefill phase๊นŒ์ง€ ์™„์ „ ๋ถ„์‚ฐํ•˜๋Š” ๊ตฌ์กฐ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ

๐Ÿ“Œ ์ข…ํ•ฉ ์ •๋ฆฌ

์นดํ…Œ๊ณ ๋ฆฌMegaScale-Infer ํ•œ๊ณ„๋Œ€์‘ ์—ฐ๊ตฌ ํ๋ฆ„ํ•ต์‹ฌ ๊ฐœ์„  ์•„์ด๋””์–ด
A. Expert LoadExpert ๊ฐ„ ๋ถˆ๊ท ํ˜•Tutel, BrainstormExpert ์„ ํƒ ํ™•๋ฅ  ํ•™์Šต, load-aware mapping
B. Token RoutingM2N ํ†ต์‹  ์ฆ๊ฐ€Janus, Pre-gated MoETop-1 routing, ์‚ฌ์ „ expert mapping
C. Memory BottleneckKV cache ์••๋ฐ•vLLM, MooncakeKV cache paging, streaming KV cache ์„ค๊ณ„

๐Ÿ’ก ๋‚ด ์˜๊ฒฌ: ํ–ฅํ›„ ์—ฐ๊ตฌ ๋ฐฉํ–ฅ

  1. Routing-Aware Scheduling + M2N Congestion Feedback Loop

    • ์‹ค์‹œ๊ฐ„ expert ๋กœ๋“œ + ํ†ต์‹ ๋Ÿ‰์„ ๊ธฐ๋ฐ˜์œผ๋กœ token routing์„ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•˜๋Š” feedback ๊ธฐ๋ฐ˜ token scheduler ํ•„์š”
  2. KV Cache Hierarchy + Compression

    • CPU DRAM / SSD / GPU์— multi-level cache hierarchy๋ฅผ ๋งŒ๋“ค๊ณ ,
    • low-rank approximation์ด๋‚˜ lossy attention์„ ํ™œ์šฉํ•œ KV cache compression ์ ์šฉ
  3. Expert Graph Sharding

    • Expert ๋…ธ๋“œ๋“ค ๊ฐ„ token ํ๋ฆ„์„ ๊ทธ๋ž˜ํ”„๋กœ ๋ณด๊ณ , ์ด๋ฅผ ํ†ต์‹ /๊ณ„์‚ฐ ๋ณ‘๋ชฉ์„ ๊ธฐ์ค€์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹ํ•˜๋Š” ๊ตฌ์กฐ ๋„์ž… ๊ฐ€๋Šฅ

๐Ÿ“ ๊ฒฐ๋ก  ์š”์•ฝ

MegaScale-Infer๋Š” attention-FFN ๋ถ„๋ฆฌ + pipeline + M2N ํ†ต์‹  ์ตœ์ ํ™”๋กœ MoE ์„œ๋น™์˜ ์ƒˆ๋กœ์šด baseline์„ ์ œ์‹œํ–ˆ์ง€๋งŒ,

load imbalance, ํ†ต์‹  ์ฆ๊ฐ€, ๋ฉ”๋ชจ๋ฆฌ ์••๋ฐ•์ด๋ผ๋Š” ์„ธ ๊ฐ€์ง€ ๊ตฌ์กฐ์  ํ•œ๊ณ„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
์ด๋ฅผ ๊ทน๋ณตํ•˜๋Š” ์—ฐ๊ตฌ๋“ค์€ ๋ผ์šฐํŒ… ์ตœ์ ํ™”, cache paging, ๋ชจ๋“ˆ ์‚ฌ์ „๊ฒฐ์ •, ํ†ต์‹  ์ถ”์ƒํ™” ๋“ฑ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์„œ๋น™ ํšจ์œจ์„ฑ, ํ™•์žฅ์„ฑ, ๋น„์šฉ ์ ˆ๊ฐ์„ ๋™์‹œ์— ์ถ”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

Q : MegaScale-Infer์—์„œ attention๊ณผ FFN์„ ๋ถ„๋ฆฌ(disaggregate)ํ•จ์œผ๋กœ์จ ๊ธฐ์กด MoE ์„œ๋น™ ์•„ํ‚คํ…์ฒ˜ ๋Œ€๋น„ ์–ด๋–ค ์ž์› ํ™œ์šฉ์˜ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด๊ฒƒ์ด FFN์˜ GPU utilization์„ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•˜๋Š”๊ฐ€?

์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์— ์ด ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๊ตฌ์กฐ์ ์ธ ํ•ด์„ค์„ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค:


๐ŸŽฏ ํ•ต์‹ฌ ์š”์ง€ ์š”์•ฝ

attentionโ€“FFN ๋ถ„๋ฆฌ(disaggregation)๋Š” FFN์˜ token sparsity ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” GPU underutilization ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , FFN์„ ๋‹ค์‹œ compute-intensiveํ•œ ์—ฐ์‚ฐ์œผ๋กœ ์ „ํ™˜์‹œ์ผœ GPU ์ž์›์„ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ” ๊ธฐ์กด MoE ์„œ๋น™ ๊ตฌ์กฐ์˜ ๋ฌธ์ œ์ 

  1. MoE ๊ตฌ์กฐ์—์„œ FFN์€ top-k experts๋งŒ ํ™œ์„ฑํ™”๋จ

    • ์˜ˆ: top-2 of 8 experts โ†’ ํ•œ expert๋‹น batch์˜ 25%๋งŒ ์ฒ˜๋ฆฌ
  2. Attention์€ full batch size ์ฒ˜๋ฆฌ, FFN์€ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ

    • Attention์€ GPU memory-bound (KV cache access)
    • FFN์€ GPU compute-bound (GEMM), ๊ทธ๋Ÿฌ๋‚˜ ํ† ํฐ์ด ์ ์–ด compute underutilization ๋ฐœ์ƒ
  3. ์ด๋กœ ์ธํ•ด FFN์ด ๋” ์ด์ƒ compute-intensiveํ•˜์ง€ ์•Š๊ณ , ๋Œ€๋ถ€๋ถ„ idle


โœ… MegaScale-Infer์˜ ํ•ด๊ฒฐ ๋ฐฉ์‹: attentionโ€“FFN ๋ถ„๋ฆฌ

ํ•ญ๋ชฉ์„ค๋ช…
๋ถ„๋ฆฌ ์ „๋žตattention๊ณผ FFN์„ ์„œ๋กœ ๋‹ค๋ฅธ GPU ๋…ธ๋“œ์— ๋ฐฐ์น˜
attention์—ฌ๋Ÿฌ replica๋กœ ๊ตฌ์„ฑ โ†’ ๋งŽ์€ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
FFN์—ฌ๋Ÿฌ attention node๋กœ๋ถ€ํ„ฐ ํ† ํฐ์„ aggregateํ•ด์„œ ์ฒ˜๋ฆฌ
๊ฒฐ๊ณผFFN์— ์ „๋‹ฌ๋˜๋Š” ํ† ํฐ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ , FFN GPU๊ฐ€ ๋‹ค์‹œ compute-intensiveํ•œ ์ƒํƒœ๊ฐ€ ๋จ

๐Ÿ“ˆ ๊ตฌ์ฒด์ ์ธ ๊ฐœ์„  ์ˆ˜์น˜ (๋…ผ๋ฌธ ๊ธฐ์ค€)

  • Mixtral 8x22B ๊ธฐ์ค€, FFN์˜ theoretical utilization:

    ๊ธฐ์กด:

    \[ \text{util} = \min\left(\frac{\text{topk}}{\text{\#experts}} \cdot \frac{B F}{\text{bandwidth}}, 1\right) = \min\left(\frac{2}{8} \cdot \frac{156 F}{B}, 1\right) = 25\% \]
  • MegaScale-Infer:

    • attention์ด N๊ฐœ๋กœ ๋ถ„์‚ฐ๋˜์–ด ๋™์‹œ์— ๋” ๋งŽ์€ ์š”์ฒญ ์ƒ์„ฑ
    • FFN์ด ์ด๋ฅผ ๋ณ‘ํ•ฉ ์ฒ˜๋ฆฌํ•˜์—ฌ GPU ์‚ฌ์šฉ๋ฅ ์ด 1.9ร— ์ด์ƒ ํ–ฅ์ƒ๋จ

๐Ÿ’ก ํ•ต์‹ฌ ์ธ์‚ฌ์ดํŠธ

๊ธฐ์กด MoE๋Š” ํ† ํฐ์˜ sparse routing ๊ตฌ์กฐ ๋•Œ๋ฌธ์— FFN์„ scale-out ํ•˜๋”๋ผ๋„ GPU ํ™œ์šฉ๋ฅ ์ด ๋‚ฎ์•˜์Œ
โ†’ MegaScale-Infer๋Š” attention์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐ FFN expert๊ฐ€ multi-attention source๋กœ๋ถ€ํ„ฐ ์ถฉ๋ถ„ํ•œ batch๋ฅผ ๋ฐ›๊ฒŒ ๋งŒ๋“ค๊ณ , ์ด๋ฅผ ํ†ตํ•ด FFN์˜ ์—ฐ์‚ฐ๋Ÿ‰์ด ๋‹ค์‹œ GPU๋ฅผ ๊ฐ€๋“ ์ฑ„์šฐ๋„๋ก ์„ค๊ณ„ํ•จ


๐Ÿ“Œ ์š”์•ฝ

  • attentionโ€“FFN ๋ถ„๋ฆฌ๋Š” FFN์˜ batch size๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ฆ๊ฐ€์‹œ์ผœ underutilization ๋ฌธ์ œ ํ•ด๊ฒฐ
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ FFN์ด ๋‹ค์‹œ GPU์—์„œ ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ํ•˜๊ณ , ์„œ๋น™ ์„ฑ๋Šฅ์„ ์ „๋ฐ˜์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ด
  • ์ด๋Š” FFN์„ dense model ์ˆ˜์ค€์˜ GPU utilization์œผ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ทผ๋ณธ์  ํ•ด๊ฒฐ์ฑ…์ž„

Q : ping-pong pipeline parallelism์ด ํ†ต์‹  ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์€๋‹‰ํ•˜๊ณ  idle time์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์–ด๋–ค ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•˜๋ฉฐ, ์ด ์กฐ๊ฑด๋“ค์ด ์‹ค์ œ ์‹œ์Šคํ…œ ๋ฐฐ์น˜ ๊ณ„ํš์— ์–ด๋–ป๊ฒŒ ๋ฐ˜์˜๋˜๋Š”๊ฐ€?

์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ์งˆ๋ฌธ์€ MegaScale-Infer์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™” ํ•ต์‹ฌ ๋กœ์ง์„ ๊ฟฐ๋šซ๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์กฐ๊ฑด, ์ˆ˜์‹, ์ง๊ด€์  ์˜๋ฏธ, ๋ฐฐ์น˜๊ณ„ํš ๋ฐ˜์˜ ๋ฐฉ์‹๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ์„ค๋ช…๋“œ๋ฆด๊ฒŒ์š”.


โœ… ping-pong pipeline parallelism์˜ ๋ชฉ์ 

  • attention ๋ชจ๋“ˆ๊ณผ FFN ๋ชจ๋“ˆ์„ ๋ถ„๋ฆฌํ•˜๋ฉด ์„œ๋กœ ๋ฒˆ๊ฐˆ์•„ ์‹คํ–‰๋˜๋ฏ€๋กœ
  • ๊ฐ ๋ชจ๋“ˆ์ด ์ƒ๋Œ€๋ฐฉ์˜ ์—ฐ์‚ฐ ๋˜๋Š” ํ†ต์‹ ์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ idleํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ
  • ๋”ฐ๋ผ์„œ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด micro-batch ๋‹จ์œ„๋กœ ์˜ค๋ฒ„๋žฉํ•˜๋Š” pipeline ๊ตฌ์กฐ๋ฅผ ๋„์ž…

๐Ÿ“Œ ํ†ต์‹  ์€๋‹‰ + idle ์ œ๊ฑฐ๋ฅผ ์œ„ํ•œ ์„ธ ๊ฐ€์ง€ ์กฐ๊ฑด

MegaScale-Infer ๋…ผ๋ฌธ์—์„œ๋Š” ๋‹ค์Œ 3๊ฐ€์ง€ ์ˆ˜ํ•™์  ์กฐ๊ฑด์„ ํ†ตํ•ด pipeline ํšจ์œจ์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค:


[์กฐ๊ฑด 1] ๊ณ„์‚ฐ ์‹œ๊ฐ„ ๊ท ํ˜•

PLAINTEXT
T_a โ‰ˆ T_e
  • \(T_a\): attention ๋…ธ๋“œ์—์„œ micro-batch 1๊ฐœ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„
  • \(T_e\): expert ๋…ธ๋“œ์—์„œ micro-batch 1๊ฐœ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„
  • ๋ชฉ์ : ์—ฐ์‚ฐ ํŽธํ–ฅ์ด ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ํ•ด์•ผ pipeline์— ๋ณ‘๋ชฉ ๋ฐœ์ƒ ์•ˆํ•จ

[์กฐ๊ฑด 2] ํ†ต์‹  ์‹œ๊ฐ„๋ณด๋‹ค ์—ฐ์‚ฐ ์‹œ๊ฐ„์ด ์ถฉ๋ถ„ํžˆ ๊ธธ์–ด์•ผ ํ•จ

PLAINTEXT
T_c < T_f,   where T_f = max(T_a, T_e)
  • \(T_c\): micro-batch ๋‹น ํ†ต์‹  ์™•๋ณต ์‹œ๊ฐ„ (A2E + E2A)
  • ์˜๋ฏธ: compute ์‹œ๊ฐ„์ด ํ†ต์‹ ๋ณด๋‹ค ๊ธธ์–ด์•ผ ํ†ต์‹ ์„ ์˜ค๋ฒ„๋žฉํ•˜์—ฌ ์€๋‹‰ ๊ฐ€๋Šฅ

[์กฐ๊ฑด 3] ์ถฉ๋ถ„ํ•œ micro-batch ์ˆ˜

PLAINTEXT
m โ‰ฅ 2 ร— (1 + T_c / T_f)
  • \(m\): micro-batch ๊ฐœ์ˆ˜
  • ์˜๋ฏธ: pipeline์ด ์ถฉ๋ถ„ํžˆ ์ฑ„์›Œ์ง€๋ ค๋ฉด ์ด ์ˆ˜ ์ด์ƒ์ด์–ด์•ผ ํ•จ
  • ์˜ˆ: \(T_c/T_f = 0.3\)์ด๋ฉด \(m โ‰ฅ 2.6 \Rightarrow 3๊ฐœ ํ•„์š”\)

๐Ÿงฎ ์ˆ˜์น˜ ์˜ˆ์‹œ (A100 ๊ธฐ์ค€)

๊ฐ€์ •:

  • \(T_a = 2\)ms, \(T_e = 2.5\)ms โ†’ \(T_f = 2.5\)ms
  • \(T_c = 0.5\)ms

์ ์šฉ:

PLAINTEXT
m โ‰ฅ 2 ร— (1 + 0.5 / 2.5) = 2.4 โ†’ ์ตœ์†Œ m = 3

๐Ÿ”ง ์‹œ์Šคํ…œ ๋ฐฐ์น˜ ๊ณ„ํš ๋ฐ˜์˜ ๋ฐฉ์‹ (Algorithm 1)

MegaScale-Infer๋Š” ์ด ์กฐ๊ฑด๋“ค์„ ๊ณ ๋ คํ•˜์—ฌ deployment plan์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž๋™์œผ๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค:

  1. ์กฐ๊ฑด 1์„ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด:

    • balance(G, tpa, tpe) ํ•จ์ˆ˜์—์„œ attention node ์ˆ˜ \(n_a\)๋ฅผ ์กฐ์ ˆํ•˜์—ฌ
    • \(T_a \approx T_e\) ๋งŒ์กฑํ•˜๋„๋ก ์„ค๊ณ„
      โ†’ ์ˆ˜์‹:
      PLAINTEXT
      n_a = (k1 ร— E) / (k3 ร— K)
  2. ์กฐ๊ฑด 2, 3์„ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด:

    • ํ†ต์‹  ์„ฑ๋Šฅ ๊ธฐ๋ฐ˜ \(T_c\) ์ถ”์ • (Eq. 6)
    • ์œ„ ์กฐ๊ฑด์œผ๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ์ตœ์†Œ micro-batch ์ˆ˜ \(m\) ๊ณ„์‚ฐ
    • SIMULATE(plan)์—์„œ ์‹ค์ œ ์„ฑ๋Šฅ ๋ชจ๋ธ์„ ๋Œ๋ ค latency ํ™•์ธ ํ›„ throughput/cost ์ตœ๋Œ“๊ฐ’์„ ๊ฐ–๋Š” plan ์„ ํƒ

๐Ÿ“Š ping-pong ํšจ๊ณผ ์‹คํ—˜ ๊ฒฐ๊ณผ ์š”์•ฝ (๋…ผ๋ฌธ Figure 12)

micro-batch ์ˆ˜Throughput (Mixtral ๊ธฐ์ค€)๊ฐœ์„ ์œจ
m = 1baseline-
m = 21.9ร— โ†‘pipeline ํ˜•์„ฑ ์‹œ์ž‘
m = 3์ถ”๊ฐ€ 1.10ร— โ†‘ํ†ต์‹ -์—ฐ์‚ฐ ์™„์ „ ์˜ค๋ฒ„๋žฉ

โœ๏ธ ์š”์•ฝ ์ •๋ฆฌ

  1. ping-pong pipeline์ด ํ†ต์‹ /๊ณ„์‚ฐ ์˜ค๋ฒ„๋žฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ์„ธ ์กฐ๊ฑด์ด ํ•„์ˆ˜:

    • (1) attention vs FFN compute ์‹œ๊ฐ„ ๊ท ํ˜•
    • (2) ํ†ต์‹  ์‹œ๊ฐ„์ด ์—ฐ์‚ฐ๋ณด๋‹ค ์ž‘์„ ๊ฒƒ
    • (3) ์ถฉ๋ถ„ํ•œ micro-batch ์ˆ˜๋กœ pipeline ์ฑ„์šฐ๊ธฐ
  2. MegaScale-Infer๋Š” ๋ฐฐ์น˜ ๊ณ„ํš์„ ์ˆ˜์‹ ๊ธฐ๋ฐ˜์œผ๋กœ ํƒ์ƒ‰ํ•˜์—ฌ ์ด ์กฐ๊ฑด์„ ์ž๋™ ๋ฐ˜์˜ํ•จ

  3. ๊ฒฐ๊ณผ์ ์œผ๋กœ attention๊ณผ FFN์˜ ์—ฐ์‚ฐ ๋ฐ ํ†ต์‹  idle time์ด ์‚ฌ๋ผ์ง€๊ณ , GPU utilization๊ณผ latency ๋ชจ๋‘ ๊ฐœ์„ 

Q : ๊ธฐ์กด NCCL ๊ธฐ๋ฐ˜์˜ All2All ํ†ต์‹  ๊ตฌ์กฐ ๋Œ€์‹  MegaScale-Infer๊ฐ€ ์ œ์•ˆํ•œ M2N ํ†ต์‹  ๊ตฌ์กฐ๋Š” ์–ด๋–ค ๊ตฌ์ฒด์ ์ธ ๋ณ‘๋ชฉ์„ ํ•ด๊ฒฐํ•˜๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ sender/receiver path๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ RDMA, GPUDirect, ACK ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š”๊ฐ€?

์ด ์งˆ๋ฌธ์€ MegaScale-Infer ๋…ผ๋ฌธ์˜ ํ†ต์‹  ์ตœ์ ํ™” ์„ค๊ณ„์˜ ๋ณธ์งˆ์„ ์ฐŒ๋ฅด๋Š” ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์ด ํ•ญ๋ชฉ์€ ๋‹จ์ˆœํ•œ bandwidth ๊ฐœ์„ ์ด ์•„๋‹ˆ๋ผ, MoE ์ถ”๋ก ์˜ ๊ตฌ์กฐ์  ํ†ต์‹  ๋ณ‘๋ชฉ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ „์šฉ ์„ค๊ณ„๋ผ๋Š” ์ ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”ฅ 1. ๊ธฐ์กด All2All (NCCL ๊ธฐ๋ฐ˜)์˜ ๋ณ‘๋ชฉ ๋ฌธ์ œ

โœ… ๋ฐฐ๊ฒฝ: MoE์—์„œ๋Š” token routing์ด ํ•„์š”ํ•จ

  • ๊ฐ token์€ top-k expert๋กœ๋งŒ ๋ถ„์‚ฐ๋จ (์˜ˆ: top-2 of 8)
  • ๋”ฐ๋ผ์„œ attention node โ†’ ์„ ํƒ๋œ expert node๋กœ ๋น„๊ท ์ผํ•œ, sparse ํ†ต์‹  ๋ฐœ์ƒ

โŒ ๊ธฐ์กด NCCL์˜ ํ•œ๊ณ„ (๋…ผ๋ฌธ ยง5, Fig. 5, 10, 11)

๋ณ‘๋ชฉ์„ค๋ช…
GPU-to-CPU ๋ณต์‚ฌNCCL์€ P2P ์ „์†ก ์‹œ GPU ๋ฉ”๋ชจ๋ฆฌ๋ฅผ CPU proxy๋กœ ๋ณต์‚ฌ โ†’ latency ์ฆ๊ฐ€
Group operation overheadNCCL์˜ group call์€ 8๊ฐœ ๋‹จ์œ„๋กœ batch ์ฒ˜๋ฆฌ โ†’ N์ด ํด์ˆ˜๋ก queueing delay ์‹ฌํ™”
Tail latency โ†‘P99 latency๊ฐ€ N ์ฆ๊ฐ€ ์‹œ ๊ธ‰์ฆ โ†’ pipeline ์ „์ฒด latency ๋Š˜์–ด๋‚จ
ACK ์ฒ˜๋ฆฌ ์ง€์—ฐround-robin QoS๋กœ ์ธํ•ด ACK packet์ด ์ง€์—ฐ๋˜์–ด sender stall ๋ฐœ์ƒ
GPU sync overheadNCCL์€ ๋‚ด๋ถ€์ ์œผ๋กœ GPU sync ์—ฐ์‚ฐ์„ ์š”๊ตฌํ•จ โ†’ multi-GPU ์ƒํ™ฉ์—์„œ ๋น„ํšจ์œจ ์œ ๋ฐœ

๐Ÿš€ 2. MegaScale-Infer์˜ M2N ํ†ต์‹  ๊ตฌ์กฐ: ํ•ด๊ฒฐ์ฑ…

โœ… ๊ตฌ์กฐ์  ์ „ํ™˜: All2All โ†’ M2N

  • All2All: ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋ชจ๋‘์—๊ฒŒ ๊ท ๋“ฑํ•˜๊ฒŒ ์ „์†ก
  • M2N: Attention M๊ฐœ โ†’ Expert N๊ฐœ๋กœ ์„ ํƒ์ , ๋ถˆ๊ท ์ผํ•œ ์ „์†ก
  • โ†’ MoE ํ† ํฐ ๋ผ์šฐํŒ… ๊ตฌ์กฐ์— ๋” ์ ํ•ฉํ•œ ํ†ต์‹  ํŒจํ„ด

๐Ÿ—๏ธ 3. M2N Sender/Receiver Path ๊ตฌ์„ฑ

๐Ÿ“ค Sender Side ๊ตฌ์„ฑ (๋…ผ๋ฌธ Figure 6)

๊ตฌ์„ฑ ์š”์†Œ์—ญํ• 
Compute Kernel์ด์ „ GEMM์ด ๋๋‚ฌ๋Š”์ง€ ์ฒดํฌ (stream ๋น„์ฐจ๋‹จ)
Send-control Kernelsend flag ์„ธํŒ…, ๋ฐ์ดํ„ฐ ์ „์†ก ์กฐ๊ฑด ํŒ๋‹จ
Core Sender (CPU)RDMA write with immediate + GPUDirect๋กœ ๋ฐ์ดํ„ฐ ์ง์ ‘ ์ „์†ก
QPs (Queue Pairs)์ˆ˜์‹  ๋Œ€์ƒ expert N๋ช…์— ๋Œ€ํ•ด ๊ฐ๊ฐ ๊ตฌ์„ฑ๋จ
Poll Completion Queue์ „์†ก ์™„๋ฃŒ ์—ฌ๋ถ€ ํ™•์ธ

โœจ ์ตœ์ ํ™” ๊ธฐ์ˆ 

  • GPUDirect RDMA: GPU memory โ†’ NIC โ†’ RDMA ์ง์ ‘ ์ „์†ก (CPU ํ†ต๊ณผ ์—†์Œ)
  • Zero Copy: host bounce buffer ์ƒ๋žต โ†’ throughput ์ฆ๊ฐ€
  • ACK ์šฐ์„  ์ „์†ก: ACK packet์„ ๋ณ„๋„ high-priority queue์— ํ• ๋‹น โ†’ ๋น ๋ฅด๊ฒŒ ์ˆ˜์‹  ์™„๋ฃŒ ์•Œ๋ฆผ

๐Ÿ“ฅ Receiver Side ๊ตฌ์„ฑ (๋…ผ๋ฌธ Figure 7)

๊ตฌ์„ฑ ์š”์†Œ์—ญํ• 
Recv-control KernelRDMA buffer์— ์“ฐ์ธ ๋ฐ์ดํ„ฐ ๋ชจ๋‹ˆํ„ฐ๋ง
Core ReceiverRDMA polling ๋ฐ optional copy ์ˆ˜ํ–‰
Copy Kernelpre-registered buffer โ†’ output tensor layout ๋ณต์‚ฌ
Poll CQ์ˆ˜์‹  ์™„๋ฃŒ ์ƒํƒœ ์ถ”์ 
Auto post recv๋‹ค์Œ RDMA ์ˆ˜์‹ ์šฉ ๋ฒ„ํผ ์ž๋™ ๋“ฑ๋ก (no delay)

๐Ÿ“ˆ 4. ์„ฑ๋Šฅ ๊ฐœ์„  ์ˆ˜์น˜ ์š”์•ฝ

์ง€ํ‘œMegaScale vs NCCL
Median Latency (256KB)68.2% โ†“
P99 Latency (256KB)92.9% โ†“
Throughput (256KB)4.2ร— โ†‘
Sender/Receiver ์ˆ˜ ์ฆ๊ฐ€ ์‹œ (M, N = 32)Tail Latency ์ตœ๋Œ€ 96.9% โ†“, Throughput 5.8ร— โ†‘

โœจ 5. ์ถ”๊ฐ€ ์ตœ์ ํ™” ๊ธฐ๋ฒ•

๐Ÿ“Œ High-priority ACK Queue

  • ์›์ธ: bidirectional ํ†ต์‹  ์‹œ ACK๊ฐ€ ์ผ๋ฐ˜ data packet๊ณผ ๋™์ผ ์šฐ์„ ์ˆœ์œ„๋กœ ์ „์†ก๋จ โ†’ ์ง€์—ฐ ๋ฐœ์ƒ
  • ํ•ด๊ฒฐ: ACK ์ „์šฉ high-priority queue ๊ตฌ์„ฑ + weight tuning์œผ๋กœ ์‘๋‹ต ์ง€์—ฐ ๋ฐฉ์ง€

๐Ÿ“Œ Congestion Control Fine-Tuning

  • ๋ฌธ์ œ: ์ผ๋ถ€ expert์— ํ† ํฐ์ด ๋ชฐ๋ฆด ๊ฒฝ์šฐ queueing latency ํญ์ฆ
  • ํ•ด๊ฒฐ: ์ „์†ก ์†๋„ ์ œ์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์ˆ˜์‹ ์ฒ˜๋ณ„ queue length ๊ณ ๋ ค

๐Ÿ“Œ ์š”์•ฝ

ํ•ญ๋ชฉ์„ค๋ช…
๊ธฐ์กด ๋ณ‘๋ชฉGPU-to-CPU copy, group op overhead, tail latency, sync stall
ํ•ต์‹ฌ ๊ตฌ์กฐ ์ „ํ™˜All2All โ†’ M2N, attention-to-expert direct routing
๊ธฐ์ˆ ์  ํ•ด๊ฒฐ์ฑ…RDMA + GPUDirect + ACK priority + polling CQ
์„ฑ๋Šฅ ํ–ฅ์ƒ์ตœ๋Œ€ 4.2ร— throughput, P99 latency 96.9% ๊ฐ์†Œ

๐Ÿ’ก ๋‚ด ์˜๊ฒฌ

MegaScale-Infer์˜ M2N ํ†ต์‹  ๊ตฌ์กฐ๋Š” ๋‹จ์ˆœํ•œ โ€œ๋น ๋ฅธ ํ†ต์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌโ€๊ฐ€ ์•„๋‹ˆ๋ผ, MoE ์ถ”๋ก ์˜ sparse routing ๊ตฌ์กฐ์— ๊ตฌ์กฐ์ ์œผ๋กœ ๋งž์ถคํ˜• ์„ค๊ณ„๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ์ ์—์„œ ํ˜์‹ ์ ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ attention node์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์ด ๊ตฌ์กฐ๋Š” ๋”์šฑ ๊ฐ•๋ ฅํ•œ ํ™•์žฅ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

์ž‘์„ฑ์ž: Jaehun Ryu

๋งํฌ: https://jaehun.me/posts/megascale-infer-serving-mixture-of-experts-at-scale-with-disaggregated-expert-parallelism/

๋ผ์ด์„ ์Šค: CC BY 4.0

์ด ์ €์ž‘๋ฌผ์€ ํฌ๋ฆฌ์—์ดํ‹ฐ๋ธŒ ์ปค๋จผ์ฆˆ ์ €์ž‘์žํ‘œ์‹œ 4.0 ๊ตญ์ œ ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ์ฒ˜๋ฅผ ๋ฐํžˆ๋ฉด ์ƒ์—…์  ๋ชฉ์ ์„ ํฌํ•จํ•ด ์ž์œ ๋กญ๊ฒŒ ์ด์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€