LLM 실무 하드웨어 용어 정리

문서 목적

LLM을 실무에서 서빙하거나 파인튜닝할 때 반복적으로 마주치는 하드웨어 용어를 정리한다.
구매 결정, 리소스 산정, 병목 분석, 학습 레시피 선택의 직관을 잡기 위한 레퍼런스.

핵심 한 줄 요약

LLM 학습은 compute-bound, 추론(decode)은 memory-bound. 그래서 실무 체감 속도는 FLOPS보다 메모리 대역폭이 지배한다.


1. 메모리 계층과 대역폭 (Memory Hierarchy & Bandwidth)

왜 대역폭이 중요한가

LLM decode 단계에서는 매 토큰마다 모델 전체 가중치를 메모리에서 읽어 MatMul을 수행한다. 따라서 최대 토큰 생성 속도는 대략:

  • 예: Llama-3-70B를 FP16(140GB)으로 H100 SXM(3.35TB/s)에서 돌리면 이론 상한 ≈ 24 tok/s (단일 배치, KV-cache 제외).
  • 즉, FLOPS가 아니라 GB/s가 추론 속도의 상한을 결정한다.

메모리 종류별 대역폭 (대략치)

메모리대역폭주 용도비고
HBM3e4.8 TB/sH200, B2002024~ 데이터센터 GPU
HBM33.35 TB/sH100 SXM, MI300X현행 DC 표준
HBM2e2 TB/sA100 80GB2020 세대
GDDR71.7 TB/sRTX 50902025 소비자 플래그십
GDDR6X1 TB/sRTX 409024GB, 소비자 최상위
GDDR6700 GB/sRTX 4070/4080급
LPDDR5X (Unified)300–800 GB/sApple M3/M4 Ultra용량-대역폭 동시 확보
DDR5 (시스템 RAM)70–90 GB/s서버/워크스테이션 CPU RAM듀얼채널 기준
DDR4 (시스템 RAM)25–50 GB/s구세대 플랫폼
NVMe Gen5 SSD14 GB/s스토리지데이터 로딩 병목 지점
NVMe Gen4 SSD7 GB/s스토리지

VRAM vs CPU RAM의 진짜 차이

단순히 “GPU 메모리 vs 시스템 메모리”가 아니다. 대역폭이 30배 이상 차이나므로, 파라미터를 CPU로 offload하면 decode tok/s가 같은 비율로 떨어진다.
device_map="auto"로 CPU offload가 걸리는 순간, 30–50배 느려지는 것이 정상이다.


2. GPU 상호연결 (Interconnect)

인터커넥트대역폭 (단방향)용도
NVLink 5 (B200)900 GB/s per GPUGPU↔GPU, 텐서 병렬
NVLink 4 (H100)450 GB/s per GPU (bi-dir 900)GPU↔GPU
NVSwitch모든 GPU fully-connected8-GPU 노드 내부
PCIe Gen5 x1664 GB/sCPU↔GPU, 비NVLink GPU간
PCIe Gen4 x1632 GB/s기존 서버/워크스테이션
InfiniBand NDR400 Gbps (50 GB/s)노드간 (멀티노드 학습)
Ethernet 100/200/400G12.5–50 GB/s일반 데이터센터

PCIe (Peripheral Component Interconnect Express)란?

정의: CPU와 주변기기(GPU, NVMe SSD, NIC 등)를 연결하는 범용 고속 시리얼 버스 표준. 마더보드의 긴 슬롯이 곧 PCIe. GPU의 “기본 통로”지만 NVLink가 있으면 GPU↔GPU는 우회한다.

세대(Generation)와 lane 구조:

  • PCIe는 세대마다 per-lane 대역폭이 2배로 증가. Gen3 → Gen4 → Gen5 → Gen6.
  • 슬롯 크기는 lane 수로 표기: x1, x4, x8, x16. GPU는 거의 모두 x16.
  • 총 대역폭 = per-lane × lane 수.
세대per-lane (편방향)x16 슬롯 (편방향)x16 양방향현역성
Gen31 GB/s16 GB/s32 GB/s레거시 서버
Gen42 GB/s32 GB/s64 GB/s현행 주류
Gen54 GB/s64 GB/s128 GB/sH100/B200/RTX 5090
Gen68 GB/s128 GB/s256 GB/s2025~ 데이터센터

표기 주의: NVIDIA 스펙시트는 보통 양방향(bi-directional) 으로 기재 (예: “PCIe Gen5 x16 128GB/s”), NVLink 표기와 혼동되기 쉬움. 실효 단방향은 절반.

CPU가 lane을 “발행”한다:

  • PCIe lane 수는 CPU 스펙에서 고정. 예: AMD EPYC Genoa = 128 lanes, Intel Sapphire Rapids = 80 lanes, 소비자 Ryzen 9 = 28 lanes.
  • 다중 GPU 워크스테이션에서 GPU가 x16 → x8로 떨어지는 이유가 이것 (lane 부족).
  • GPU 2개 + NVMe 2개 = 보통 x8 + x8 + x4 + x4로 분배됨.

LLM 실무에서의 역할:

  • CPU ↔ GPU: 데이터 로딩, 체크포인트 I/O, activation offload. 여기가 병목이면 DataLoader에서 GPU idle 발생.
  • GPU ↔ GPU (NVLink 없을 때): DDP all-reduce를 PCIe로 타야 함 → NVLink 대비 ~10–30배 느림. TP는 사실상 불가.
  • GPU ↔ NVMe (GPUDirect Storage): ZeRO-Infinity offload, dataset streaming.

실효 대역폭은 스펙의 70–85%: 프로토콜 오버헤드(TLP 헤더, 128b/130b 인코딩), re-timer, 메인보드 신호 품질로 실측은 Gen5 x16에서 50–55GB/s가 현실적.

nvidia-smi topo -m 으로 현재 GPU간 연결 경로 확인: NV4(NVLink 4링크), PIX(PCIe bridge 경유), SYS(CPU 넘어감) 순으로 느려짐.

  • NVLink: NVIDIA GPU 전용 point-to-point 고속 링크. PCIe를 우회해 GPU↔GPU 직결 통신 수행.
    • H100 SXM: NVLink 4 lane 18개 묶음 → 900 GB/s bi-directional (편방향 450).
    • B200: NVLink 5 → 1.8 TB/s bi-directional.
    • PCIe Gen5(64GB/s) 대비 약 10–30배 빠름. 이 배수가 TP(Tensor Parallel) 가능 여부를 가른다.
  • NVSwitch: 8-GPU 노드 내부에서 모든 GPU를 fully-connected로 묶는 스위치 칩. DGX H100/H200, HGX 보드에 탑재.
    • 결과적으로 한 노드 안에서는 어떤 GPU 쌍이든 동일 full-bandwidth로 통신. TP=8 구성의 전제.
  • NVLink Switch System (NVL72): Blackwell 세대에서 72개 GPU를 단일 NVLink 도메인으로 묶음. 사실상 “한 노드”가 72 GPU.
  • NVLink의 한계: 노드 경계를 넘지 못한다. 멀티노드는 반드시 InfiniBand/Ethernet + RDMA/GPUDirect를 탄다.

2.2 Collective Communication Primitives (NCCL) - ❓

분산 학습의 모든 통신은 몇 가지 집합 통신(collective) 패턴으로 환원된다. 각 병렬화 전략이 어떤 collective를 얼마나 자주 호출하느냐가 인터커넥트 요구사항을 결정한다.

프리미티브동작등장 위치
All-Reduce모든 rank 값을 합산 후 모두에 배포DDP grad sync, TP 레이어 경계
All-Gather각 rank의 shard를 모두 모음FSDP/ZeRO-3 param fetch
Reduce-Scatter합산 결과를 shard로 분배FSDP grad reduce
All-to-All각 rank가 모두에게 개별 데이터 송신MoE expert dispatch, SP
Broadcast / Reduce1→N / N→1체크포인트 로드, scalar 수집
Point-to-Point (P2P)지정한 rank 쌍 간 송수신Pipeline Parallel stage 전달
  • NCCL은 위 연산을 ring / tree / double-binary-tree 알고리즘으로 구현. 링 알고리즘의 한 step 시간은 tensor_size / bandwidth에 비례 → 대역폭이 곧 학습 스텝 시간.

All-Reduce란?

정의: N개 rank가 각자 가진 같은 shape의 텐서를 elementwise 합(혹은 평균) 으로 reduce한 뒤, 그 결과를 모든 rank에 동일하게 배포하는 집합 연산.

개념적으로는 Reduce (N→1로 모음) + Broadcast (1→N으로 뿌림) 를 한 번에 처리한 것이지만, 실제 구현은 훨씬 똑똑하다.

DDP에서의 역할: 각 GPU가 자기 micro-batch로 gradient를 계산한 뒤, all-reduce로 모든 GPU의 grad를 더해 평균 내어 모두가 동일한 gradient를 갖게 만든다. 이래야 다음 step에서 파라미터가 일치.

Ring All-Reduce 알고리즘 (NCCL 기본):

  1. 텐서를 N조각으로 나눔.
  2. Reduce-Scatter 단계 (N−1 step): 각 rank가 인접 rank로 조각을 흘려보내며 합산 → 결국 rank k는 “k번째 조각의 전체 합”만 갖는다.
  3. All-Gather 단계 (N−1 step): 그 조각들을 다시 링을 돌려 모두가 전체를 갖도록 공유.

통신량: 2 × (N−1)/N × tensor_size — N이 커져도 GPU당 통신량은 거의 2배로 수렴. 이게 ring all-reduce가 대규모 학습에서 표준이 된 이유(= 스케일링이 좋음).

대역폭 병목 식: T ≈ 2 × tensor_size / bandwidth. 예) 70B 모델 FP16 grad(140GB)를 NVLink4(450GB/s)로 all-reduce → 약 0.62초. PCIe Gen4(32GB/s)면 8.75초 → DP step 시간을 모조리 잡아먹음.

2.3 병렬화 전략과 인터커넥트 요구

관점 차이

여기서는 “어떤 인터커넥트가 있어야 각 병렬화가 실전에서 동작하는가” 에 집중한다. 메모리 샤딩/학습 footprint 관점은 §6 참조.

Data Parallel (DP / DDP)

  • 아이디어: 모든 GPU가 모델 전체를 복제하고, 배치를 쪼개 각자 forward/backward. step 끝에 gradient를 all-reduce로 동기화.
  • 통신량: step당 1회, 2 × params 바이트(FP16 grad).
    • 7B 모델이면 grad all-reduce 14GB. PCIe Gen4(32GB/s)로 ~0.4초. → 참을 만함.
  • 한계: 모델이 단일 GPU VRAM을 넘으면 불가능. LLM 70B는 DP만으로는 안 된다.
  • 인터커넥트: PCIe로도 동작. 멀티노드는 IB 필요.

Summary

DP = gradient accumulation을 병렬화 버전으로 바꾼 거.

Tensor Parallel (TP, Megatron-style)

  • 아이디어: 한 레이어의 weight 행렬column/row로 쪼개 여러 GPU에 분산. QKV projection, FFN의 두 Linear를 각각 “Column-parallel → Row-parallel”로 묶어 중간에 activation을 나눠 갖는다.
  • 통신 패턴: 매 transformer block마다 all-reduce 2회 (attention 후, FFN 후). 시퀀스 길이 × hidden × batch 만큼의 activation을 계속 주고받음.
    • Llama-3-70B, hidden=8192, seq=4096, batch=1, FP16 → 레이어당 ~67MB × 80 layers × 2 = ~10GB 통신 / forward 1회.
    • 이걸 레이어 계산 시간 안에 끝내야 하므로 TB/s 급 대역폭 필요.
  • 인터커넥트: NVLink 필수. PCIe Gen5로도 10배 이상 느려짐. TP=8이 DGX 한 노드 내 상한(= NVSwitch 연결 범위).
  • 주 구현체: Megatron-LM, NeMo, TransformerEngine.

Pipeline Parallel (PP)

  • 아이디어: 레이어를 stage 단위로 쪼개 서로 다른 GPU에 배치 (예: 레이어 1–20은 GPU0, 21–40은 GPU1). 입력 배치를 micro-batch로 더 잘게 나눠 각 stage에 파이프라이닝.
  • 통신 패턴: stage 경계에서 activation만 P2P 전달 (forward) / gradient 전달 (backward). all-reduce 없음.
    • 통신량 매우 적음 (TP의 1/10~1/100 수준).
  • 주 비용: pipeline bubble (첫 micro-batch이 끝까지 가기 전/마지막 batch가 끝나기 전 idle 구간). 1F1B, Interleaved 1F1B (Megatron), Chimera, Zero-Bubble 등으로 완화.
  • 인터커넥트: PCIe로도 실용적. 노드 간 PP를 IB로 타는 구성도 흔함.
  • 전형적 조합: TP는 노드 내, PP는 노드 간.

FSDP (Fully Sharded Data Parallel) / ZeRO-3

  • 아이디어: DP처럼 동작하되, 파라미터·gradient·optimizer state를 GPU들 사이에 shard해서 VRAM 절약.
    • 레이어가 필요해질 때 all-gather로 파라미터를 모아 계산 → 계산 후 즉시 해제 (overlap 가능).
    • backward에서 gradient는 reduce-scatter로 자기 shard에만 누적.
  • 통신량: 전통 DP의 약 1.5배 (all-gather + reduce-scatter). 하지만 레이어 단위로 쪼개져 계산과 overlap 가능.
  • 인터커넥트: NVLink 권장. PCIe에서도 동작하지만 overlap 여유가 줄어 throughput 30–50% 손해. 멀티노드 FSDP는 IB가 사실상 필수.
  • 주 구현체: torch.distributed.fsdp (PyTorch 2.x), DeepSpeed ZeRO-3.
  • FSDP2 (PyTorch 2.4+): per-parameter sharding, torch.compile/TP와 조합 개선.

Sequence Parallel (SP)

  • TP와 짝지어 사용. TP가 hidden 차원을 나눌 때, LayerNorm/Dropout 등 non-TP 영역은 sequence 차원으로 쪼개 activation 메모리를 추가 절감. 통신: all-gather + reduce-scatter (TP의 all-reduce를 쪼갠 형태).

Expert Parallel (EP) — MoE

  • MoE 모델에서 expert들을 GPU간 분산. 라우팅된 토큰을 해당 expert GPU로 all-to-all로 보냄.
  • 통신 패턴: all-to-all이 지배적. bandwidth-heavy. DeepSpeed-MoE, Megatron-Core, MegaBlocks가 최적화.

3D Parallelism

  • 실제 대규모 학습은 TP × PP × DP(+ZeRO) 조합.
    • 예: Llama-3 405B 학습 — TP=8 (노드 내 NVLink), PP=16 (노드 간 IB), DP=128 (replica).
  • 규칙: 통신 다발성 높은 축을 빠른 인터커넥트에 매핑. TP→NVLink, PP/DP→IB/Ethernet.

2.4 한 장 요약 (인터커넥트 ↔ 병렬화 매핑)

병렬화주요 collective통신 빈도최소 요구권장
DP / DDPAll-Reduce (grad)step당 1회PCIe Gen4NVLink + IB
TP (Megatron)All-Reduce (activation)레이어당 2회NVLinkNVSwitch
PPP2P (activation)stage 경계PCIe Gen4IB (노드간)
FSDP / ZeRO-3All-Gather + Reduce-Scatter레이어당 2회PCIe Gen5NVLink
SPAll-Gather + Reduce-Scatter레이어당 2회NVLinkNVSwitch
EP (MoE)All-to-All레이어당 2회NVLinkNVSwitch + IB

의사결정 플로우

  1. 모델이 단일 GPU에 들어가나? → 예: DDP로 충분. / 아니오: 다음으로.
  2. NVLink 노드를 갖고 있나? → 예: TP=#GPU로 묶고 남는 축은 FSDP/PP. / 아니오: FSDP만, 혹은 PP.
  3. 노드가 여러 개인가? → 예: 노드 내 TP, 노드 간 PP 또는 FSDP. IB 필수.
  4. MoE인가? → EP 축 추가, all-to-all 대역폭 확보.

3. 주요 GPU 스펙 비교 (LLM 실무 기준)

GPUVRAM대역폭FP16 TFLOPSFP8 TFLOPSTDP비고
B200192GB HBM3e8 TB/s2,2504,5001000WBlackwell, 2025
H200141GB HBM3e4.8 TB/s9891,979700WH100 메모리 확장판
H100 SXM80GB HBM33.35 TB/s9891,979700W현행 DC 표준
H100 PCIe80GB HBM32 TB/s7561,513350WNVLink 제한적
A100 80GB80GB HBM2e2 TB/s312400WFP8 없음
L40S48GB GDDR6864 GB/s362733350W추론/소형 학습
RTX 6000 Ada48GB GDDR6960 GB/s362733300W워크스테이션
RTX 509032GB GDDR71.79 TB/s419838575W2025 소비자 최상위
RTX 409024GB GDDR6X1 TB/s330660450W24GB 제약이 실무 상한
MI300X (AMD)192GB HBM35.3 TB/s1,3072,614750WROCm, 192GB가 강점
Apple M3 Ultra192GB unified800 GB/s28 (GPU)200WMLX, 대형 모델 로컬 실험

스펙 시트의 FLOPS는 sparse/이론치인 경우가 많다

NVIDIA는 “w/ sparsity” 값을 대표 수치로 내세우는데, 실제 dense LLM 학습은 그 절반으로 봐야 한다.


4. 정밀도 (Precision) & 양자화 (Quantization)

학습/추론에 쓰이는 수치 포맷

포맷비트지수/가수주 용도비고
FP32328/23레거시 학습현재는 거의 사용 안 함
TF3219 (하드웨어)8/10A100+ 기본 MatMulFP32 호환 I/O
FP16165/10혼합정밀도 학습/추론overflow 위험
BF16168/7현행 학습 표준FP32와 지수 범위 동일
FP8 (E4M3/E5M2)84/3 or 5/2H100+ 학습/추론2023 이후 확산
INT88추론 양자화LLM.int8, SmoothQuant
INT44추론 양자화GPTQ, AWQ, GGUF Q4
NF44normal-floatQLoRAbitsandbytes 4-bit

메모리 footprint 규칙 (경험식)

  • 추론 모델 가중치: params × bytes/param
    • 7B FP16 = 14GB / 7B INT4 = ~4GB
  • 학습 메모리 (AdamW, FP16 mixed precision): ~16–20 × params (bytes)
    • 7B 모델 full fine-tune = ~120–140GB VRAM 필요 → 단일 GPU 불가
    • 구성: params(2) + grads(2) + optimizer m,v(각 4) + activations
  • LoRA: base 모델(FP16) + 작은 adapter만 학습 → 7B가 단일 24GB에서 학습 가능
  • QLoRA: base 4-bit + LoRA FP16 → 7B가 12–16GB에서 학습 가능

KV Cache 크기

  • Llama-3-70B, batch=1, seq=8192, FP16 → 약 2.5GB. seq=128K가 되면 40GB 소모 → VRAM의 절반.
  • 그래서 long-context serving은 PagedAttention(vLLM)이 사실상 필수.

주요 양자화 방식 — GPTQ / AWQ / GGUF / bitsandbytes

양자화는 언제 적용하느냐(학습 중 vs 사후), 무엇을 줄이느냐(weight만 vs weight+activation), 어떤 하드웨어 타깃이냐(GPU vs CPU/Apple)로 분류한다.

GPTQ (Frantar et al., 2022) — GPU 추론용 W4A16 표준

  • Post-Training Quantization (PTQ). 학습된 모델을 calibration set(수백 샘플)으로 재양자화.
  • 레이어별로 Hessian 기반 OBS/OBQ(Optimal Brain Surgeon/Quantizer)를 풀어, 한 weight를 양자화할 때의 오차를 남은 weight로 보정.
  • 결과물: 4-bit weight + 16-bit activation (W4A16). 7B 모델 14GB → ~4GB.
  • 툴: AutoGPTQ, GPTQ-for-LLaMa. vLLM/TGI/TensorRT-LLM 네이티브 지원.
  • 약점: calibration이 오래 걸리고(수십 분~몇 시간), 3/2-bit까지 내리면 품질 급락.

AWQ (Lin et al., 2023) — activation-aware, 하드웨어 친화

  • 핵심 관찰: 0.1–1%의 “salient” weight가 성능을 지배 → activation magnitude로 찾아 보존.
  • Hessian을 풀지 않고 per-channel scaling만 탐색하므로 calibration이 GPTQ보다 훨씬 빠름(수 분).
  • W4A16. GPTQ와 비슷한 품질이지만 추론 커널이 단순해 속도가 더 빠른 경우가 많음.
  • 툴: llm-awq, AutoAWQ. vLLM/TGI 지원. 현재 서빙 현장 de facto.

GGUF (llama.cpp) — CPU / Apple Silicon / 엣지 포맷

  • 포맷 이름이자 양자화 스킴들의 묶음. 이전 GGML을 대체한 파일 포맷.
  • k-quants(Q2_K, Q3_K_S/M/L, Q4_K_S/M, Q5_K_M, Q6_K, Q8_0): 블록 단위로 서로 다른 비트폭을 섞어 품질/크기 trade-off.
    • 실무 권장: Q4_K_M (크기↓ 품질 준수), 여유 있으면 Q5_K_M / Q6_K.
    • IQ-quants (IQ2_XXS, IQ3_XS 등): importance matrix로 극저비트에서도 품질 유지.
  • 특화: CPU/Apple Silicon 에서 mmap + SIMD로 구동. Metal/CUDA 백엔드도 있음.
  • 툴: llama.cpp, Ollama, LM Studio, text-generation-webui.

bitsandbytes (bnb)학습 친화, QLoRA의 기반

  • Tim Dettmers의 CUDA 라이브러리. HuggingFace Transformersload_in_4bit=True로 통합.
  • LLM.int8(): 큰 값(outlier)은 FP16으로 유지하고 나머지는 INT8로 → 품질 거의 동일. 추론용.
  • NF4 (NormalFloat 4-bit): weight가 정규분포를 따른다는 가정 위에 quantile 기반 4-bit 포맷 설계. information-theoretically optimal.
  • QLoRA: base를 NF4로 고정 + LoRA adapter를 BF16으로 학습 → 70B 모델도 단일 48GB에서 파인튜닝 가능.
  • 약점: 순수 추론 throughput은 GPTQ/AWQ보다 느림(학습 지원이 주 목적).

비교 요약

기법타이밍타깃비트용도속도대표 구현
GPTQPTQGPUW4A16추론빠름AutoGPTQ, vLLM
AWQPTQGPUW4A16추론매우 빠름AutoAWQ, vLLM
GGUF k-quantsPTQCPU/Apple/GPU2–8bit 혼합추론 (로컬)llama.cpp, Ollama
bnb LLM.int8PTQGPUW8A16추론transformers
bnb NF4PTQGPUW4A16학습 (QLoRA)느림(학습용)transformers+PEFT
FP8 (TE)QAT/PTQH100+W8A8학습·추론가장 빠름TransformerEngine
SmoothQuantPTQGPUW8A8추론빠름여러 구현

선택 가이드

  • GPU 서빙: AWQ 먼저, 호환 이슈면 GPTQ.
  • 로컬(맥북/미니PC/CPU): GGUF Q4_K_M.
  • 파인튜닝 VRAM 부족: QLoRA (NF4).
  • H100/H200 보유 + 처리량 극대화: FP8 (TransformerEngine).
  • outlier 민감한 큰 모델(>30B)에서 품질 우선: LLM.int8 또는 SmoothQuant + W8A8.

5. FLOPS와 연산량 계산 (Compute Budget)

5.1 용어 정의

  • FLOP (Floating-Point Operation): 부동소수점 연산 1회. 관례적으로 FMA(a·b + c)는 2 FLOPs로 센다.
  • FLOPs (복수, count): 총 연산 횟수. 예: “학습에 3×10²³ FLOPs 소모”.
  • FLOP/s = FLOPS (rate): 초당 연산 속도. 예: “H100 BF16 989 TFLOPS”.
  • 표기 주의: 논문에서 소문자 끝 FLOPs는 count, 대문자 끝 FLOPS는 rate.

5.2 단위

단위
GFLOPS10⁹모바일 NPU 수준
TFLOPS10¹²소비자 GPU / DC GPU 단일
PFLOPS10¹⁵DGX 노드, 소형 슈퍼컴
EFLOPS10¹⁸현행 최상위 슈퍼컴
ZFLOPS10²¹한 번의 대형 LLM 학습 총량

5.3 정밀도별 FLOPS (같은 하드웨어도 포맷에 따라 다름)

H100 SXM 기준:

정밀도Dense TFLOPS비고
FP6434HPC 용도
FP3267LLM에선 거의 안 씀
TF32495FP32 호환 matmul
BF16 / FP16989학습 표준
FP8 (E4M3/E5M2)1,979H100+ 학습/추론
INT81,979추론 양자화

규칙: 비트수가 절반이 되면 처리량은 대략 2배.

5.4 Transformer FLOPs 경험식

파라미터 수 N, 토큰 수 T에 대해 (Kaplan 2020 / Hoffmann 2022):

  • Forward2N / 토큰, Backward4N / 토큰 → 학습 합계 6N.
  • Attention 보정항: + 12 × L × d × s × T (L=layers, d=hidden, s=seq)
    • s < d/12면 무시 가능. long-context에서는 지배적이 됨.

5.5 계산 예시

예시 1. Llama-3-70B 추론, 토큰당 FLOPs 및 이론 속도

  • 토큰당 forward = 2 × 70×10⁹ = 1.4×10¹¹ FLOPs = 140 GFLOPs
  • H100 BF16 989 TFLOPS 기준 compute 상한: 989×10¹² / 1.4×10¹¹7,000 tok/s
  • 메모리 상한(§1): 3.35 TB/s / 140 GB24 tok/s
  • 결론: 300배 차이로 memory-bound. 배치를 키워 FLOPS를 쓰는 게 남는 장사.

예시 2. Llama-3-70B를 15T 토큰으로 학습하는 총 예산

  • 총 FLOPs = 6 × 70×10⁹ × 15×10¹² = 6.3×10²⁴ FLOPs = 6.3 YFLOPs
  • H100 SXM 1대, MFU 40% 가정: 실질 989×10¹² × 0.4 = 395 TFLOPS
  • 필요 시간 = 6.3×10²⁴ / 3.95×10¹⁴5×10¹⁰ s ≈ 1,600년 (단일 GPU)
  • 16,000 H100으로 분산 → 1,600년 / 16,00036일 (Llama-3 논문 보고치와 근사)

예시 3. 7B 모델을 10B 토큰으로 파인튜닝

  • FLOPs = 6 × 7×10⁹ × 10×10⁹ = 4.2×10²⁰
  • A100 80GB BF16 312 TFLOPS × MFU 50% = 156 TFLOPS
  • 단일 GPU 시간 = 4.2×10²⁰ / 1.56×10¹⁴2.7×10⁶ s ≈ 31일
  • 8-GPU 노드 → ~4일. QLoRA로 연산은 동일하나 VRAM만 절감.

예시 4. Chinchilla 최적 토큰 수

  • Chinchilla 법칙: T_opt ≈ 20 × N
  • 7B → 140B 토큰, 총 FLOPs = 6 × 7×10⁹ × 140×10⁹5.88×10²¹
  • 70B → 1.4T 토큰 → 5.88×10²³ (N을 10배 키우면 FLOPs는 100배, 비용은 N²에 비례)

5.6 MFU (Model FLOPs Utilization)

실측 throughput을 이론 FLOPS로 나눈 “하드웨어 활용률”:

현업 보고치MFU
PaLM (TPU v4)46%
GPT-3 (A100)20%
Llama 250%
Megatron-LM 최적화52%
  • 40–55%면 건강한 학습. 20% 미만이면 DataLoader, 통신, recompute 중 하나가 병목.
  • HFU(Hardware FLOPs Utilization)는 activation recompute 등 실제 수행된 FLOPs를 포함하므로 항상 HFU ≥ MFU.

5.7 빠른 계산용 Cheat Sheet

상황공식비고
추론 1 tok FLOPs2Ndecode, attention 무시
학습 1 tok FLOPs6Nforward + backward
학습 총 FLOPs6 N TChinchilla 기준 T=20N
Attention 항4 L d s² · (batch)long-context 지배
필요 시간총 FLOPs / (GPU수 × peak × MFU)MFU 0.4 디폴트
Chinchilla 비용∝ N²모델 2배면 학습비 4배

30초 견적법

“N B짜리 모델을 T T 토큰으로 학습하려면 몇 GPU·며칠?” → 6NT / (GPU수 × peak_FLOPS × 0.4). 숫자만 넣으면 초 단위 답이 나온다.


6. Compute-bound vs Memory-bound (Roofline 직관)

Arithmetic Intensity (연산 밀도)

  • Prefill (프롬프트 처리): 배치/시퀀스 전체를 MatMul → AI 높음 → compute-bound
  • Decode (토큰 생성): 단일 토큰마다 전체 가중치 읽음 → AI 낮음 → memory-bound
단계지배 자원최적화 방향
PrefillFP16/FP8 TFLOPSFlashAttention, FP8
Decode메모리 대역폭양자화, speculative decoding, 배치 확대

배치를 키우면 decode가 compute-bound로 이동

배치 1에서는 memory-bound, 배치 32+에서는 가중치를 한 번 읽고 여러 샘플에 재사용 → compute-bound로 전환. 서빙 시 continuous batching이 효과적인 이유.


7. 분산 학습 개념 (Distributed Training)

병렬화 축

기법분할 대상통신 빈도요구 인터커넥트
Data Parallel (DP/DDP)배치step당 1회 all-reducePCIe 가능
Tensor Parallel (TP)레이어 내부 matrix매 레이어NVLink 필수
Pipeline Parallel (PP)레이어 블록stage간 activation 전달PCIe 가능
Sequence Parallel (SP)시퀀스 차원Attention 주변NVLink 권장
Expert Parallel (EP)MoE expertall-to-allNVLink/IB
ZeRO-1/2/3 (DeepSpeed)optimizer/grad/params 샤딩stage 3은 매 레이어 fetchNVLink 권장
FSDP (PyTorch)ZeRO-3 PyTorch 네이티브 구현위와 동일NVLink 권장

메모리 절감 트릭

  • Gradient Checkpointing (activation checkpointing): activation 재계산으로 메모리 ~60–80% 절감, 속도 ~20% 감소.
  • Gradient Accumulation: batch를 쪼개 누적 → effective batch 확대, VRAM 그대로.
  • CPU Offload (ZeRO-Infinity): optimizer state를 CPU RAM/NVMe로 → VRAM 절약하지만 PCIe 대역폭 병목.

8. 추론 최적화 키워드

용어설명
FlashAttention (v2/v3)Attention을 SRAM tiling으로 재작성, HBM 왕복 제거. 2–4배 빠름 + 메모리 선형.
PagedAttentionKV cache를 OS 가상 메모리처럼 페이지 단위 관리 (vLLM). fragmentation 제거.
Continuous Batching생성 중 요청을 동적으로 합류/퇴출. throughput 10배+
Speculative Decoding작은 draft 모델이 N토큰 예측 → 큰 모델이 검증. 2–3배 가속.
Prefix Caching공통 시스템 프롬프트의 KV를 재사용.
Chunked Prefill긴 프롬프트를 조각내어 decode와 섞어 처리 (vLLM, TensorRT-LLM).
Tensor Parallel w/ NCCL여러 GPU에 가중치 분할, NVLink all-reduce.

서빙 성능 지표

지표의미
TTFT (Time To First Token)요청 도착 → 첫 토큰 출력까지. prefill 성능 지배.
TPOT (Time Per Output Token)토큰당 평균 생성 시간. decode 성능 = 메모리 대역폭 지배.
Throughput (tok/s)서버 전체 초당 토큰 수. 배치/TP 설계 성능.
GoodputSLA(예: TTFT<2s) 만족하는 throughput만 카운트.

9. 주요 프레임워크 매핑

레이어대표 도구비고
학습 (분산)DeepSpeed, FSDP, Megatron-LM, NeMoMegatron은 TP+PP 레퍼런스
PEFTPEFT (HF), bitsandbytes, UnslothQLoRA = bnb+PEFT, Unsloth는 커널 최적화
추론 서빙vLLM, SGLang, TensorRT-LLM, TGI, llama.cppvLLM이 오픈소스 de facto
양자화GPTQ, AWQ, GGUF(llama.cpp), bitsandbytes, FP8 (TE)GGUF는 CPU/Apple 친화
프로파일링nvidia-smi, nsys, nvprof, PyTorch Profiler, py-spynsys가 GPU 타임라인 분석 표준

10. 실무 체크리스트

모델 → 하드웨어 산정 빠른 공식

추론: VRAM ≥ params(B) × bytes/param × 1.2 (+KV cache)
LoRA 학습: VRAM ≥ params(B) × 2 × 1.5 (BF16 기준, batch=1, grad ckpt 가정)
Full FT: VRAM ≥ params(B) × 20 (AdamW, BF16 mixed)

자주 마주치는 병목

  1. OOM인데 VRAM은 남음 → fragmentation. PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True 또는 vLLM PagedAttention 사용.
  2. 배치 키워도 느려짐 → compute-bound 전환 후 FLOPS 한계 도달. FP8/TP 필요.
  3. decode는 빠른데 TTFT가 김 → prefill compute 부족. GPU TFLOPS 체크 or chunked prefill.
  4. CPU RAM 스왑 발생os.cached + dataloader num_workers 과다. NVMe로 WebDataset 전환.
  5. multi-node가 single-node보다 느림 → IB 없이 Ethernet로 all-reduce. NCCL_DEBUG=INFO로 확인.

11. 용어 Cheat Sheet

용어한 줄 정의
VRAMGPU 전용 고대역폭 메모리 (HBM/GDDR)
HBM3D 스택형 초고대역폭 메모리, 데이터센터 GPU 표준
GDDR그래픽 전용 DRAM, 소비자 GPU용
Unified MemoryCPU와 GPU가 동일 물리 메모리 공유 (Apple Silicon)
TDPThermal Design Power, 발열/전력 설계 기준 (W)
SMStreaming Multiprocessor, NVIDIA GPU 연산 단위
Tensor CoreMatMul 전용 연산 유닛, FP16/BF16/FP8 지원
NVLinkNVIDIA GPU 전용 고속 인터커넥트
PCIe범용 CPU↔장치 버스, Gen5 x16 = 64GB/s
NCCLNVIDIA Collective Communications Library
KV CacheAttention 계산 시 저장되는 Key/Value, 메모리 주범
Checkpointingactivation 재계산으로 메모리 절감
OffloadingCPU RAM/NVMe로 텐서 이동해 VRAM 절약
Quantization저비트 표현(INT8/INT4)로 메모리/대역폭 절감

12. 참고 링크


13. 내 워크로드 메모 (TODO — 본인 환경 입력)

학습 모드에서 직접 채우기

아래 3개 항목은 사용자 본인의 환경/목표를 적어두면, 이후 모델·기법 선택 시 빠른 판단 기준이 된다. 5–10줄이면 충분.

# 내 현재 하드웨어
- GPU:
- VRAM:
- 시스템 RAM:
- 인터커넥트 (NVLink/PCIe):
- 스토리지:

# 주 워크로드
- 주로 다루는 모델 크기 (예: 7B/13B/70B):
- 목적 (추론 서빙 / LoRA / Full FT / 실험):
- 시퀀스 길이 요구:
- throughput vs latency 중 어느 쪽 우선:

# 현재 겪고 있는 병목 (있다면)
-