만 장의 GPU는 네 축으로 쪼갠다

두 벽이 있다. 메모리 벽은 16바이트/파라미터에서 온다. 405B의 상태만 6.48TB인데 H100은 80GB, H200은 141GB다. 시간 벽은 6·N·D에서 온다. Llama 3 405B의 3.8×10²⁵ FLOPs를 H100 한 장이 40% 효율로 돌리면 약 3,000년이다계산. 그래서 모델을 여러 축으로 쪼개고 조각들이 통신으로 하나처럼 동작하게 만든다. Llama 3는 [TP, CP, PP, DP] 4D 병렬화를, DeepSeek-V3는 PP·EP·ZeRO-1 DP(TP 없음)를 썼다.

축무엇을 쪼개나통신한계와 사례
DP 데이터 병렬배치를 N등분, 모델은 복제기울기 all-reduce (2Ψ 바이트)모든 GPU가 16Ψ를 다 듦 → ZeRO가 옵티마이저(1)·기울기(2)·파라미터(3)를 샤딩해 16Ψ/N까지. FSDP는 ZeRO-3의 PyTorch 구현, 512 A100에서 55~60% MFU
TP 텐서 병렬한 층의 행렬곱을 열/행 방향으로층마다 all-reduce 4회, 활성값 크기NVLink(900GB/s) 안에서만 감당 → 노드 안 8장까지. Llama 3 TP=8
PP 파이프라인 병렬층을 p개 스테이지로스테이지 간 점대점 한 덩어리버블 (p−1)/m. Zero Bubble PP는 +23~31%, DualPipe는 계산과 통신을 겹침. TorchTitan 405B 교차 1F1B +30%
CP/SP 시퀀스 병렬시퀀스를 여러 GPU에Ring Attention은 K/V 블록을 링으로7B를 8×A100에서 512K 문맥. Llama 3 131K 단계는 TP8·CP16·PP16·DP8
EP expert 병렬MoE expert를 GPU에 분산all-to-all dispatch/combineV3는 8노드 64-way EP, node-limited routing, 20개 SM으로 IB+NVLink 대역폭 채움. DeepEP 공개 커널

NCCL은 GPU 간 집합 통신 라이브러리다. AllReduce(합산해 모두가 결과를 가짐), AllGather(조각을 모아 모두에게), ReduceScatter(합산 결과를 조각내 하나씩), AlltoAll. all-reduce는 수학적으로 reduce-scatter + all-gather다. MFU는 관측 처리량을 피크 FLOPs 대비로 잰 비율이고 PaLM 46.2%, Llama 3 405B 38~43%, FSDP GPT-175B 55~60%다. DeepSeek-V3의 1조 토큰당 180K H800시간은 GPU당 약 343 TFLOPS, BF16 피크 대비 35%지만 FP8 피크 대비로는 17%라 all-to-all이 한계임을 시사한다추론.

8,192장의 H100으로 한 step — 서사와 산술

Llama 3의 8,192-GPU 구성(TP=8, PP=16, DP=64, 시퀀스 8,192, MFU 43%)과 405B dense를 기준으로 재구성한 거다. 구성과 하드웨어 수치는 출처가 있지만 step의 시간 전개는 계산이다추론·계산.

  • 배치 조립 — 전역 배치 16M 토큰 = 2,048 시퀀스 × 8,192 (64 DP × 32). 각 DP 복제본이 32개 시퀀스를 32개 마이크로배치로 잘라 파이프라인에 넣는다.
  • 배치(placement) — 1,024 노드 × 8. TP=8이 한 노드를 NVLink로 묶고, PP=16이 16개 노드에 126층을 약 8층씩 나누고, 이 128-GPU 복제본이 64개. GPU당 파라미터 3.16B: BF16 가중치 6.3GB + 기울기 6.3GB + ZeRO-1 옵티마이저 샤드 약 0.6GB.
  • forward — 층마다 열 병렬 QKV → FlashAttention-3 → 행 병렬 W_o → all-reduce(268MB, NVLink) → SP RMSNorm → SwiGLU → all-reduce. 남기는 활성값은 스테이지당 약 47GB라 재계산 없이 80GB에 들어간다 (Llama 3의 "활성 체크포인팅 없음"과 일치). 스테이지 출력 268MB는 400Gbps NIC로 약 5ms.
  • backward와 DP 축약 — logits [1, 8192, 128256] 2.1GB에서 시작해 층이 역순으로. 마지막 마이크로배치가 끝나면 6.3GB 기울기 버퍼를 64개 동료와 reduce-scatter. 링 트래픽 약 12.4GB, 50GB/s에서 약 0.25초라 backward 꼬리와 겹쳐 사라진다.
  • 옵티마이저 — 각 rank가 약 49M 파라미터에 대해 FP32로 AdamW → BF16 캐스팅 → all-gather.
  • 시간 — step당 FLOPs = 6 × 405e9 × 16e6 = 3.89×10¹⁹. GPU당 유효 396 TFLOPS이면 ≈12.0초/step. 15.6T 토큰을 16M 배치로 나누면 975,000 step. 16,384 GPU면 ≈5.9초, B200급 8,000장이면 ≈5.4초.
  • 장애 — 54일간 419건 중단 중 78%가 하드웨어, 58.7%가 GPU 관련(불량 GPU 148건, HBM3 72건, 소프트웨어 버그 54건, 스위치/케이블 35건, 조용한 데이터 손상 6건). 수동 개입은 단 3회, 유효 학습 시간 90% 이상. 낮 기온에 따른 DVFS로 처리량이 1~2% 변동하고 "단 하나의 straggler가 수천 GPU를 늦출 수 있다".

MoE 변형(V3식, 37B 활성)은 TP가 없고, MoE 층마다 all-to-all dispatch → FP8 expert GEMM → combine이 일어난다. step당 FLOPs는 dense 405B의 1/11이고, 2,048 H800에서 약 5초. 8,000 GPU에서 all-to-all이 완벽히 확장된다면 1.3초지만 실제로는 그렇지 않고, 이게 node-limited routing의 존재 이유다추론.

2026년의 스택

공개 스택은 PyTorch(FSDP2/DTensor/TorchTitan, Megatron-Core, DeepSpeed) + FlashAttention-3 + Transformer Engine으로 수렴했다. Google은 TPU Ironwood pod(최대 9,216칩) 위의 JAX/XLA, DeepSeek는 자체 HAI-LLM과 PTX 커널, Meta는 PyTorch+NCCLX. Anthropic은 Trainium·TPU·GPU에서 학습하며 100만 개 이상의 Trainium2를 쓴다고 밝혔지만 배분·프레임워크·MFU는 공개하지 않았다. 규모 상한은 xAI Colossus 2로 Epoch AI가 약 44만 장으로 추정하지만 회사 공식 수치는 아니다.

한 줄: 병렬화는 통신을 숨기는 기술이다. 숨기지 못한 시간이 MFU에서 빠진다.

출처: Llama 3 · ZeRO · FSDP · Megatron-LM · Zero Bubble PP · Ring Attention · DeepEP · NCCL · TorchTitan · Anthropic–Amazon · Epoch AI

브루니가 적는다

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

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