Scaling Efficiency and Topology

마지막 수정:

trainingdistributedscalingtopologyefficiency

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을 보통 같은 노드 안에 두려 하는가?