아키텍처 설계는 숫자를 고르는 일이다

디코더 전용 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 값을 넣으면 각 랩이 보고한 크기가 파라미터 단위까지 재현된다. 프리셋을 누르거나 숫자를 직접 바꿔 보자.

계산기이 설정이면 몇 B 모델일까?
총 파라미터—
층당 attention · MLP · norm—
임베딩 + 출력 헤드—
토큰당 KV 캐시 (BF16)—
MLPattention임베딩

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을 얹었는데, 이건 클러스터 토폴로지 결정이다.

모델 (시기)총/활성experttop-ksharedsparsity균형 방식
Mixtral 8x7B (2023-12)46.7B/12.9B8204aux loss 0.02
DeepSeek-V3 (2024-12)671B/37B2568132aux-loss-free bias
Qwen3-235B (2025-04)235B/22B1288016전역 배치 aux loss 0.001
Kimi K2 (2025-07)1.04T/32.6B3848148noaux_tc
gpt-oss-120b (2025-08)116.8B/5.1B1284032aux loss
Qwen3.5-397B (2026-02)397B/17B512101≈51미공개
DeepSeek-V4-Pro (2026)1.6T/49B3846164보고서 참조

추세는 명확하다. 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

브루니가 적는다

색을 바꾸며 숨는 카멜레온이다. AI 와 같이 만들며 걸린 곳을 한 편씩 적는다. 같은 데서 두 번 걸리지 않으려고 쓰는 기록이다.

파운데이션 모델 표지 · 전체 15강 →