아키텍처 설계는 숫자를 고르는 일이다
디코더 전용 Transformer 한 층은 "attention → 잔차 덧셈 → MLP → 잔차 덧셈"의 반복이고, 앞뒤로 임베딩과 출력 헤드가 붙는다. 설계자가 정하는 건 각 요소의 숫자다.
- 임베딩 — 어휘 V, 폭 d, 출력 헤드와 공유(tie)할지. Qwen3는 0.6B~4B는 공유하고 8B 이상은 분리한다. 128K~152K 어휘에서는 임베딩 두 개가 8B 모델의 13~15%를 차지하기 때문이다.
- 위치 인코딩 — 2023년 이후 거의 전부 RoPE. 기저 주파수 θ는 Llama 2의 10,000에서 Llama 3의 500,000, Qwen3의 1,000,000으로 커졌다.
- Attention — 쿼리 head h, KV head g, head 차원. Llama 3는 KV 캐시를 줄이려고 8개 KV head를 택했다(GQA). DeepSeek의 MLA는 K/V를 512차원 잠재 벡터로 압축하고, V4는 다시 CSA+HCA로 바꿔 1M 문맥에서 KV 캐시 10%만 쓴다. Gemma 3·gpt-oss는 슬라이딩 윈도우 층과 전역 층을 5:1 또는 1:1로 교대시키는데, 이건 손실이 아니라 장문맥 추론 비용을 줄이려는 거다. Gemma 3는 32K 문맥에서 KV 오버헤드를 60%에서 15% 미만으로 낮췄다고 보고한다.
- MLP — 표준은 SwiGLU 세 행렬. 중간 폭 F는 2행렬 4d FFN과 파라미터가 같도록 F=8d/3으로 잡는 관례가 있다. Llama-2-7B의 11008은 8/3×4096=10,922.7을 256의 배수로 올림한 값이다.
- 정규화 — Pre-LN RMSNorm이 표준이고, 안정성을 위해 OLMo 2는 QK-norm과 z-loss를, Qwen3는 QK-Norm을 더했다.
- head 차원 128은 Llama·Mistral·Qwen3·Kimi·V3에서 공통이지만 gpt-oss는 64, V4는 512다. 법칙이 아니라 GPU 텐서코어와 FlashAttention 커널에 잘 맞는 관례다추론.
- 문맥 길이는 처음부터 길게 학습하지 않는다. V3는 4K→32K→128K를 YaRN으로 각 1,000 step씩 늘렸다. 어휘는 32K(Llama 2)→128K(Llama 3)→152K(Qwen3)→201K(gpt-oss)→262K(Gemma)로 커졌다.
7B는 결과지 입력이 아니다 — 파라미터 공식
bias 없이 SwiGLU와 RMSNorm을 쓰는 표준 디코더에서 파라미터 수는 정확히 계산된다. L=층 수, d=폭, h=쿼리 head, g=KV head, h_d=head 차원, F=FFN 중간 폭, V=어휘일 때:
- 임베딩 = V·d, 출력 헤드 = V·d (공유하면 0)
- 층당 attention = d·h_d·(2h+2g), 층당 MLP = 3·d·F, 층당 norm = 2·d (+QK-norm이면 2·h_d)
- 총합 = L·(attention + MLP + norm) + 임베딩 + 출력 헤드 + d
아래 계산기에 공개 config.json 값을 넣으면 각 랩이 보고한 크기가 파라미터 단위까지 재현된다. 프리셋을 누르거나 숫자를 직접 바꿔 보자.
Llama-2-7B → 6,738,415,616 · Llama-3-8B → 8,030,261,248 · Mistral-7B → 7,241,732,096 · Qwen3-8B → 8,190,735,360. Qwen3 보고서는 8B를 "총 8.2B / 비임베딩 6.95B"로 보고하고, 이 계산의 비임베딩 6.946B와 일치한다.
이 표에서 설계 결정의 논리가 읽힌다. Llama 2에서 3으로 갈 때 GQA(g=32→8)가 층당 attention 파라미터를 67.1M에서 41.9M으로 줄였고, 토큰당 KV 캐시도 4분의 1이 됐다. Meta는 절약한 파라미터를 FFN(11008→14336)과 어휘(32K→128K)에 재투자했다. Qwen3-8B는 같은 폭에서 층을 36으로 늘리고 FFN을 3d로 줄여 "더 깊고 좁은" 선택을 했다. 7B급에서 모든 랩이 d=4096·L=32~36에 수렴했다는 건 이 값이 광범위한 내부 실험의 결과라는 뜻이지만, 어느 랩도 그 실험을 공개하지 않았다.
MoE — expert 수·top-k·shared expert·부하 균형
MoE는 각 층의 MLP를 여러 작은 MLP(expert)로 나누고, 토큰마다 라우터가 일부만 골라 계산하는 구조다. 총 파라미터는 크지만 토큰당 연산은 작다. DeepSeek-V3가 참조 설계다. 61층 중 첫 3층은 dense, 나머지 58층은 routed expert 256개 + shared expert 1개, expert 폭 2048. expert 하나가 44M 파라미터고 256개×58층이면 653.9B로 전체 671B의 97%가 expert에 있다계산. 라우터는 softmax 대신 sigmoid를 쓰고 top-8을 고른다. sparsity(총/활성)는 32이고, Kimi K2의 소거 실험은 sparsity 8→48까지 손실이 일관되게 낮아진다고 확인했다.
부하 균형이 MoE의 급소다. 라우터가 소수 expert에 토큰을 몰아주면 나머지는 학습되지 않는다. Switch Transformer의 보조 손실 방식을 Mixtral(0.02)·Qwen3(0.001)·gpt-oss가 여전히 쓰고, DeepSeek-V3는 보조 손실이 성능을 해친다고 보고 auxiliary-loss-free를 도입했다. expert마다 bias를 두고 top-k 선택에만 더하되, step마다 과부하 expert는 내리고 저부하 expert는 올린다. 여기에 한 토큰을 최대 4개 노드로만 보내는 node-limited routing을 얹었는데, 이건 클러스터 토폴로지 결정이다.
| 모델 (시기) | 총/활성 | expert | top-k | shared | sparsity | 균형 방식 |
|---|---|---|---|---|---|---|
| Mixtral 8x7B (2023-12) | 46.7B/12.9B | 8 | 2 | 0 | 4 | aux loss 0.02 |
| DeepSeek-V3 (2024-12) | 671B/37B | 256 | 8 | 1 | 32 | aux-loss-free bias |
| Qwen3-235B (2025-04) | 235B/22B | 128 | 8 | 0 | 16 | 전역 배치 aux loss 0.001 |
| Kimi K2 (2025-07) | 1.04T/32.6B | 384 | 8 | 1 | 48 | noaux_tc |
| gpt-oss-120b (2025-08) | 116.8B/5.1B | 128 | 4 | 0 | 32 | aux loss |
| Qwen3.5-397B (2026-02) | 397B/17B | 512 | 10 | 1 | ≈51 | 미공개 |
| DeepSeek-V4-Pro (2026) | 1.6T/49B | 384 | 6 | 1 | 64 | 보고서 참조 |
추세는 명확하다. expert는 잘게·많이, sparsity는 4→32→48→64로 올라가고, 제약은 품질이 아니라 메모리와 all-to-all 통신이다추론. dense를 택할 이유도 남아 있다. 405B dense는 텐서 병렬만으로 노드 안에 들어가지만 671B MoE는 expert 병렬로 8노드에 걸쳐야 한다.
이 결정들은 어떻게 내려지나
설계는 "알려진 부품 중에서 프록시 실험으로 고르는 것"에 가깝다. DeepSeek-V3는 aux-loss-free 라우팅과 MTP를 15.7B(1.33T 토큰)와 228.7B(578B 토큰) 모델에서 검증한 뒤 671B에 적용했다. Gemma 3는 지역/전역 비율과 윈도우 크기를 perplexity가 아니라 KV 캐시 메모리로 결정했다. OpenAI·Anthropic·Gemini의 설계 과정은 공개되지 않았고, gpt-oss의 구조를 GPT-5의 구조로 가정할 근거는 없다.
출처: Qwen3-8B config · Llama-2-7B config · Llama-3-8B config · V3 config · Gemma 3 · DeepSeekMoE · Switch Transformer · DeepSeek-V4