Scaling Efficiency and Topology
마지막 수정:
GPU를 더 붙인다고 항상 같은 비율로 빨라지지는 않는다.
1 GPU -> 1초
8 GPU -> 반드시 0.125초는 아님
이 차이를 보는 말이 scaling efficiency다.
ideal speedup = GPU 수
actual speedup = 실제 빨라진 배수
scaling efficiency = actual speedup / ideal speedup
8 GPU에서 4배 빨라졌다면:
4 / 8 = 50%
왜 선형으로 안 빨라지나
분산 학습 step은 계산만 있는 것이 아니다.
local compute
communication
synchronization
pipeline bubble
host/runtime overhead
GPU 수를 늘리면 local compute는 줄어들 수 있다. 하지만 통신은 새로 생기거나 커진다.
Data Parallelism:
각 GPU의 batch compute는 줄어듦
gradient all-reduce가 필요함
Tensor Parallelism:
layer 내부 matmul을 나눔
layer마다 activation/result 통신이 필요할 수 있음
Pipeline Parallelism:
layer를 stage로 나눔
microbatch가 부족하면 bubble이 생김
Strong scaling과 weak scaling
두 가지 질문을 구분해야 한다.
strong scaling:
같은 일을 더 많은 GPU로 더 빨리 끝내는가?
weak scaling:
GPU를 늘린 만큼 일도 키웠을 때 같은 속도를 유지하는가?
LLM 학습에서는 weak scaling이 특히 중요하다. 보통 1000 GPU를 쓰는 이유는 같은 작은 모델을 1000배 빨리 학습하기 위해서가 아니라, 더 큰 모델과 더 큰 batch를 감당하기 위해서다.
Topology가 효율을 바꾼다
같은 통신량도 어디를 지나가느냐에 따라 비용이 달라진다.
same-node NVLink:
Tensor Parallelism처럼 자주 통신하는 축에 유리
cross-node InfiniBand:
통신은 가능하지만 더 비싸므로 자주 넘나들면 병목
PCIe-only node:
같은 single-node라도 tight collective가 더 비쌀 수 있음
그래서 병렬화 전략은 보통 하드웨어 배치와 함께 정한다.
한 노드 안:
TP, PP처럼 촘촘한 model-parallel 축
노드 사이:
DP처럼 더 큰 단위의 동기화 축
항상 그런 것은 아니지만, 좋은 기본 직관이다.
판단 질문
새로운 병렬화 전략을 볼 때는 이 순서로 묻는다.
1. 무엇을 줄이는가?
compute time, memory, activation, optimizer state
2. 무엇을 늘리는가?
all-reduce, all-gather, reduce-scatter, point-to-point transfer
3. 그 통신은 어디를 지나가는가?
NVLink, PCIe, InfiniBand, Ethernet
4. 이 workload는 strong scaling이 중요한가, weak scaling이 중요한가?
이 네 질문을 통과해야 “GPU를 더 쓰면 좋아진다”는 말을 실제 성능 예측으로 바꿀 수 있다.
확인
- scaling efficiency가 100%보다 낮아지는 대표 이유는 무엇인가?
- strong scaling과 weak scaling은 어떤 질문이 다른가?
- 왜 Tensor Parallelism을 보통 같은 노드 안에 두려 하는가?