AI와 그 인프라 구조 — 학습·추론에서 계층·병렬화, GPU 랙까지 한 장에
아래 한 장 지도에서 모듈을 누르면 그 부분의 상세 + 관련 문서(뉴스레터 변환본) + 관련 신호가 바로 아래 열린다.
★ 전체 구조 한 칸에 — 모듈을 눌러보세요
국면 — 학습 vs 추론, Prefill vs Decode
어느 국면·단계냐가 병목을 정한다 — 학습·Prefill은 연산(FLOPs), Decode는 메모리 대역폭.
AI 모델을 쓰는 방식은 두 국면. 추론은 다시 두 단계로 쪼개진다. 어느 국면·단계냐가 병목과 핵심 기법을 정한다.
| 국면·단계 | 연산 방식 | 병목 | 핵심 기법 |
|---|---|---|---|
| 학습 | 순전파+역전파, 대배치 | FLOPs (compute) | TP·EP·PP·DP 병렬 + MoE |
| Prefill | 입력 토큰 동시 처리 (GEMM) | FLOPs (compute) | TP·MoE · 전용칩(Rubin CPX) |
| Decode | 토큰 1개씩 순차 생성 | 메모리 대역폭 (KV·가중치) | GQA·선형어텐션 · NVL72 스케일업 |
Prefill=연산, Decode=대역폭 → 그래서 추론을 Prefill/Decode로 분리(disaggregation)해 서로 다른 하드웨어에 태운다.
① Attention — 토큰 간 맥락, KV를 줄이는 진화
토큰 간(가로) 맥락 연산. 계보 전체가 KV 캐시를 줄이는 방향 — MHA→MQA→GQA→MLA→선형.
Inter-token 정보 교환 — 문장 내 다른 모든 토큰을 둘러봐 맥락을 잡는다. 나누는 단위는 Head.
어텐션 변종은 KV Cache를 줄이는 방향으로 진화 — Decode 대역폭 병목이 동력.
| 변종 | K/V 처리 | KV Cache | 대표 |
|---|---|---|---|
| MHA | Q·K·V Head 1:1:1 | 최대 | 초기 GPT |
| MQA | 모든 Query가 K/V 1개 공유 | 최소 (품질 손실) | PaLM |
| GQA | 그룹별 K/V 공유 (절충) | 중간 | Llama 2/3 |
| MLA | K/V를 저차원 latent로 압축 | 대폭↓ + 품질 유지 | DeepSeek V2~V4 |
| 선형/SSM | 선형복잡도 상태로 압축 | 상태 고정 (대역폭 10배↓) | Kimi K3 KDA, Mamba |
② MLP / FFN — 토큰 내부 가공, Dense에서 MoE로
토큰 내부(세로) 특징 가공. Dense→MoE로 파라미터 용량은 키우되 실제 FLOPs는 라우팅으로 절감.
Intra-token 특징 변환 — 각 토큰이 독립적으로 지식·의미를 깊게 가공. 나누는 단위는 Expert.
병렬화 완전체 — 5D 병렬
학습·대규모 추론은 DP·TP·PP·EP·SP 5개 축을 겹쳐 쓴다 — 각기 다른 축·통신·무대.
TP·EP는 병렬의 일부. 학습·대규모 추론은 아래 5개 축을 겹쳐서 쓴다.
| 병렬 | 나누는 축 | 통신 패턴 | 주 무대 |
|---|---|---|---|
| DP Data | 배치 (모델 복제) | gradient all-reduce | 스케일아웃 |
| TP Tensor 병렬 | 레이어 가중치 (Head·Matrix) | activation all-reduce | 스케일업 |
| PP Pipeline | 레이어 (깊이) | activation P2P | 스케일아웃 |
| EP Expert 병렬 | MoE Expert | all-to-all | 스케일업/아웃 혼합 |
| SP Sequence | 시퀀스 (토큰 축) | ring / all-gather | 초장문 컨텍스트 |
프론티어 학습은 5D를 동시에 겹침 — 예: MoE 세계기록(GB300 NVL72).
물리 계층 — GPU → 랙 → 클러스터, 스케일업 vs 스케일아웃
NVLink로 묶인 랙(NVL72) 안은 스케일업, 랙 밖은 스케일아웃 — 이 경계가 병렬 기법을 가른다.
NVLink로 묶인 랙(NVL72) 안은 스케일업, 랙과 랙 사이는 스케일아웃. 이 경계가 병렬 기법이 갈리는 선.
스케일업
노드 내부 · 초고대역
스케일아웃
노드 간 · 대수 확장
GPU 자체 내부 구조는 GPU 구조 시뮬레이터 ↗.
정밀도·양자화 — FP16 → FP4
비트를 줄여 메모리·대역폭·용량을 산다 — FP32→BF16→FP8→FP4, Decode 대역폭 병목에 특효.
비트↓ = 메모리·대역폭·용량↓, 처리량↑. Decode(대역폭 병목)에 특효. 학습 BF16/FP8, 추론 FP8/FP4.
품질 손실은 블록 스케일링(MXFP)·LUT로 방어. 단 비트를 줄여도 용량은 남는다 — Kimi K3 2.8T는 FP4로 눌러도 단일 B200에 안 들어가 NVL72급 필요. Rubin은 NVFP4 50PFLOPS.
메모리 소비 — 가중치(정적) vs KV 캐시(동적)
추론 메모리 = 가중치(정적·고정비) + KV 캐시(동적·변동비). 이 둘이 배치·컨텍스트 한계를 정한다.
추론 중 GPU HBM을 채우는 건 크게 둘. 이 둘의 합이 배치 크기·컨텍스트 한계와 Decode 대역폭 병목을 정한다.
| 구성 | 성격 | 크기 결정 | 줄이는 법 |
|---|---|---|---|
| Model Weight 가중치 | 정적 — 요청과 무관, 항상 상주 (고정비) | 파라미터 수 × 비트폭 (예: 1.6T FP4 ≈ 800GB) | 양자화(FP8·FP4) · MoE(활성 파라미터↓) |
| KV Cache | 동적 — 토큰마다 누적, 요청별 (변동비) | 레이어 × 2 × K/V차원 × 컨텍스트 × 배치 × 비트폭 | GQA·MLA(K/V 압축) · 선형/SSM(상태 고정) · 양자화 |
가중치는 한 번 올리면 끝인 고정비, KV 캐시는 긴 컨텍스트·큰 배치일수록 폭증하는 변동비. 그래서 어텐션 계보(MHA→MLA→선형)와 양자화는 모두 가중치·KV를 HBM 대역폭 안에 욱여넣는 싸움이다. 용량이 한 GPU를 넘으면 TP·스케일업(NVL72)으로 분산.
세 번째 소비원 = 활성화(Activation) — 레이어 통과 중 생기는 중간 텐서. 추론에선 쓰고 바로 버려 작지만(그래서 위 표는 가중치·KV 둘로 압축), 학습에선 역전파용으로 전부 붙잡아야 해 급증 + 그래디언트·옵티마이저 상태까지 얹힌다 → 활성화 체크포인팅(재계산)으로 방어. ※ MoE의 "활성 파라미터"는 이와 다른 개념(가중치 중 실제 켜지는 몫).
연결 — 가중치: TP(레이어 가중치 분할)·MoE로 다룸(② MLP). KV 캐시: 어텐션 변종·SP(시퀀스 분할)로 다룸(① Attention). 정밀도(FP4)는 둘 다에 작용.
★ 종합 치트시트 — AI 모델 × 인프라 한 장 (펼치기)
4개 축이 직교 — 블록(Attn/MLP) · 유형(구조적/병렬) · 단계(학습/Prefill/Decode) · 네트워크(스케일업/아웃).
| 핵심 단계 | 기법 | 블록·대상 | 유형 | 물리 | 목적 한 줄 |
|---|---|---|---|---|---|
| 학습 | DP | 배치 (모델 복제) | 병렬 | 스케일아웃 | 데이터 병렬 처리 |
| 학습 | PP | 레이어 깊이 | 병렬 | 스케일아웃 | 레이어 깊이 분할 |
| 학습·Prefill | TP | Attn·MLP 가중치 | 병렬 | 스케일업 | 큰 연산을 GPU에 분산 |
| 학습·추론 | EP | MoE Expert | 병렬 | 업+아웃 | Expert를 GPU에 분산 |
| 전 단계 | MoE | MLP 전체 | 구조적 | — | FLOPs 고정, 모델 용량↑ |
| Decode | GQA·MLA·선형 | Attention K/V | 구조적 | 노드 무관 | KV Cache↓ = 대역폭 절감 |
| Decode | 양자화 | 가중치·활성 비트폭 | 구조적 | — | 메모리·대역폭↓, 처리량↑ |
| 장문 | SP | 시퀀스 (토큰축) | 병렬 | 업+아웃 | 컨텍스트 길이 확장 |
gen_conceptmap_docs.py로 자동 갱신. 블로그·세미나 자료로 재사용 가능.