Transformer의 연산 비용을 줄이는 방법 중 가장 성공한 두 아이디어가 MoE(Mixture of Experts)와 sparse attention이다. 요즘 "Mixture of Tokens"(MoT)라는 표현도 종종 보이는데, 이건 별도의 논문 이름이 아니라 sparse attention 계열의 접근을 MoE와 대비하기 위해 쓰는 개념적 호칭에 가깝다. 공통점은 희소성이고, 차이는 희소성이 적용되는 레이어다. MoE는 FFN에, MoT류는 Attention에. 이 차이가 학습 비용에서는 어느 정도 추상화되지만, 추론 서빙 설계에 들어가면 완전히 다른 문제를 만든다.
MoE: FFN 희소화의 비용 구조
Mixtral 8x7B를 기준으로 보자. 레이어당 8개의 FFN 전문가 중 2개를 top-k 라우터가 선택하고, 선택된 전문가의 출력을 softmax 가중합으로 합산한다. 전체 파라미터는 46.7B이지만 한 번의 포워드 패스에서 활성화되는 파라미터는 12.9B다. FLOPs 기준으로는 13B 모델 수준의 연산량으로 47B 용량의 모델을 돌리는 셈이다.
추론 시 전문가 전체를 GPU 메모리에 올려놔야 한다. 어떤 토큰이 어떤 전문가로 라우팅될지 포워드 전에 알 수 없기 때문이다. fp16으로 올리면 약 93GB가 필요해 A100 80GB 단일 카드에는 올라가지 않는다. FLOPs는 선택적으로 쓰면서 메모리는 전부 점유해야 한다는 이 구조적 특성이 MoE 서빙 설계의 출발점이다.
Mixture of Tokens: Attention 계층의 희소화
MoT라는 이름의 단일 논문은 없다. FFN 희소화를 MoE라고 부르듯이, Attention 연산에 MoE식 토큰 선택 원리를 적용한 아키텍처 범주를 통칭할 때 쓰는 표현이다. 구체적 구현은 여러 이름으로 등장한다.
가장 직접적인 구현은 Moonshot AI가 2025년 발표한 MoBA(Mixture of Block Attention)다. 컨텍스트를 고정 크기의 블록으로 분할하고, 각 쿼리 토큰이 게이팅 메커니즘으로 관련성 높은 상위 K개 블록에만 어텐션한다. dense attention이 O(n²)인 반면 MoBA는 O(n·K·b) — n이 시퀀스 길이, K가 선택 블록 수, b가 블록 크기다. 논문 발표 당시 이미 Kimi의 롱컨텍스트 요청에 배포해 운영 중이었다.
DeepSeek의 Native Sparse Attention(NSA)은 세 가지 병렬 브랜치로 구성된다. 연속 블록을 단일 표현으로 압축하는 coarse-grained branch, 중요도 높은 블록을 원본 해상도로 처리하는 selection branch, 직전 슬라이딩 윈도우를 보는 local branch를 합산해 어텐션 출력을 만든다. 논문 제목에 "hardware-aligned"를 명시한 건 실제 이유가 있다 — hardware-aligned 커널 없이는 sparse attention이 이론적 FLOPs 절감에도 불구하고 dense attention보다 느릴 수 있다.
Longformer나 BigBird 같은 이전 sparse attention 연구도 같은 문제를 풀지만, 이들은 슬라이딩 윈도우 + 글로벌 토큰 같은 고정 패턴을 쓴다. MoBA와 NSA는 라우터가 입력 내용을 보고 동적으로 어텐션 대상을 결정한다. 이 동적 라우팅이 MoT류 아키텍처를 가능하게 하는 요소고, 동시에 서빙에서 새로운 문제를 만드는 원인이기도 하다.
FFN 희소성 vs Attention 희소성: 서빙 영향 비교
두 구조가 만드는 서빙 문제는 성격이 다르다.
| 항목 | MoE (FFN 희소화) | MoT (Attention 희소화) |
|---|---|---|
| 희소화 대상 | FFN 전문가 선택 | Attention 대상 토큰/블록 |
| 메모리 점유 | 전체 파라미터 상주 필요 | KV 캐시 크기 절감 가능 |
| prefill 비용 | FFN 연산량 절감 (k/N) | 시퀀스 길이 제곱 항 절감 |
| 라우팅 패턴 | 레이어별 전문가 집합 고정 | 요청마다 상이한 어텐션 패턴 |
| 배치 효율 | 전문가별 토큰 그룹핑 필요 | 동적 패턴으로 배치 정렬 어려움 |
| KV 캐시 재사용 | 일반 prefix caching 적용 | 동적 패턴으로 예측 가능성 낮음 |
MoE에서 배치 처리의 핵심 난제는 토큰 분산이다. 같은 배치 안에 있는 토큰들이 서로 다른 전문가로 라우팅되면, 전문가가 올라가 있는 GPU 사이에 all-to-all 통신이 발생한다. vLLM은 이를 위해 --enable-expert-parallel 플래그로 Expert Parallelism을 지원하고, 전문가 간 토큰 불균형을 EPLB(Expert Parallel Load Balancer)로 완화한다.
vllm serve deepseek-ai/DeepSeek-V3-0324 \
--tensor-parallel-size 1 \
--data-parallel-size 8 \
--enable-expert-parallel
MoT류 구조는 다른 지점에서 막힌다. 어텐션 대상 토큰이 요청마다 달라지면 KV 캐시에서 어떤 항목이 재사용될지 사전에 예측하기 어렵다. prefix caching은 "앞부분 n 토큰이 동일하면 캐시 히트"라는 단순한 규칙으로 동작하는데, 동적 어텐션 패턴 환경에서는 같은 prefix라도 이후 계산에서 다른 블록에 어텐션할 수 있다. prefill 스케줄링도 마찬가지다. 배치 내 요청들이 서로 다른 어텐션 블록 패턴을 가지면 연산을 묶어서 처리하기 어려워진다.
장점은 롱컨텍스트에서 두드러진다. 시퀀스 길이 32K 토큰에서 각 쿼리가 상위 2048개 토큰에만 어텐션한다면 Attention FLOPs는 전체의 1/16으로 줄어든다. 이 절감은 MoE의 FFN 절감과 독립적이다. 두 구조는 경쟁 관계가 아니라 결합 가능한 설계다.
결합 사례와 현재 서빙 지원
DeepSeek-V2가 이 결합을 실제로 보여준다. FFN은 DeepSeekMoE 구조로 희소화하고, Attention은 MLA(Multi-head Latent Attention)로 KV를 저차원 잠재 벡터로 압축한다. KV 캐시를 표준 MHA 대비 93.3% 줄이면서, 236B 총 파라미터 중 21B만 포워드 패스에서 활성화된다.
서빙 엔진 지원 수준의 격차는 지금도 크다. MoE는 vLLM에서 Expert Parallelism, WideEP, DeepEP 백엔드, EPLB까지 갖춰져 있고, Mixtral과 DeepSeek-V3 규모의 모델을 멀티 GPU로 서빙하는 게 이미 일상적이다. sparse attention 구조는 다르다. MoBA 코드는 공개돼 있고 Kimi 내부에서 운영 중이지만, vLLM이나 SGLang이 임의의 sparse attention 패턴을 효율적으로 처리하는 일반화된 커널을 제공하지는 않는다. 이론적 FLOPs 절감이 실제 레이턴시 이득으로 이어지려면 FlashAttention 수준의 kernel-level 최적화가 sparse attention에도 갖춰져야 한다. NSA 논문이 그 방향으로 한 걸음 내딛었지만, MoE 서빙이 지금 수준까지 오는 데 걸린 시간을 생각하면 갈 길이 남아 있다.