반응형

1️⃣ 먼저 숫자부터 시작해봅시다
✅ 0차원 → 스칼라 (숫자 하나)
5
✅ 1차원 → 벡터 (리스트)
[1, 2, 3]
✅ 2차원 → 행렬 (표 형태)
[[1, 2],
[3, 4]]
[3, 4]]
✅ 3차원 이상 → 여러 장의 행렬
예: 이미지 여러 장
2️⃣ 그럼 tensor란?
📦 tensor는 "숫자들이 들어있는 다차원 박스"
쉽게 말하면:
- 스칼라도 tensor
- 벡터도 tensor
- 행렬도 tensor
- 3차원, 4차원도 tensor
전부 tensor입니다.
3️⃣ 딥러닝에서 tensor는 뭐냐?
딥러닝에서 모든 것은 tensor입니다.
예:
- 입력 데이터 → tensor
- 모델 weight → tensor
- gradient → tensor
- loss 값 → tensor
예를 들어
PyTorch 에서는
import torch
x = torch.tensor([[1,2],[3,4]])
x = torch.tensor([[1,2],[3,4]])
이게 바로 tensor입니다.
4️⃣ shape가 뭐냐?
shape = tensor의 구조
예:
x.shape
결과:
(2, 2)
의미:
- 2행
- 2열
5️⃣ 분산학습에서 말하는 tensor는 무엇인가?
64노드 분산학습에서 AllReduce할 때 통신하는 것은:
🎯 gradient tensor 입니다
예를 들어 모델 weight가:
Linear layer weight shape = (4096, 4096)
그러면 backward 후 gradient도:
(4096, 4096)
이 tensor를 모든 GPU가 서로 합칩니다.
6️⃣ 왜 “같은 shape”여야 하나?
AllReduce는 이렇게 작동합니다:
GPU0 → grad (4096, 4096)
GPU1 → grad (4096, 4096)
GPU2 → grad (4096, 4096)
GPU3 → grad (4096, 4096)
GPU1 → grad (4096, 4096)
GPU2 → grad (4096, 4096)
GPU3 → grad (4096, 4096)
같은 크기라야:
같은 위치끼리 더할 수 있음
❌ 만약 다르면?
GPU0 → (4096, 4096)
GPU1 → (2048, 4096)
GPU1 → (2048, 4096)
이건 수학적으로 더할 수 없음.
그래서:
AllReduce mismatch 발생
통신 에러 + 학습 중단
7️⃣ “같은 타이밍”은 무슨 뜻?
각 GPU는 이런 순서로 움직입니다:
forward
→ loss 계산
→ backward
→ gradient 생성
→ AllReduce
→ optimizer step
→ loss 계산
→ backward
→ gradient 생성
→ AllReduce
→ optimizer step
64노드라면:
- 모든 GPU가
- 같은 step 번호에서
- 동시에 AllReduce 호출해야 합니다.
한 GPU라도:
- 에러 발생
- NaN 발생
- 먼저 종료
- 다른 코드 경로 진입
하면 timing mismatch 발생합니다.
8️⃣ 초보자용 비유
🧮 4명이 계산한다고 가정
각자 종이에 숫자 100개를 적어옴
이걸 모두 합치기로 함
조건:
- 종이 크기가 같아야 함 (shape 동일)
- 동시에 합쳐야 함 (타이밍 동일)
한 명이:
- 종이 50개만 가져오면 → mismatch
- 아예 안 오면 → 대기 상태 (hang)
9️⃣ NaN과 연결
만약 GPU 1에서:
gradient tensor 안에 NaN 포함
그러면 AllReduce 후:
모든 GPU gradient 안에 NaN 포함
왜냐하면:
5 + NaN = NaN
그래서 한 GPU 문제 → 64노드 전체 오염
🔟 핵심 요약 (초보자용)
Tensor = 숫자들이 들어있는 다차원 배열
분산학습에서 통신하는 tensor는 주로 gradient
모든 GPU가 같은 모양(shape)의 tensor를
같은 타이밍에 통신해야 한다
🔥 64노드에서 기억할 것
- tensor shape 다르면 → 즉시 에러
- tensor 안에 NaN 있으면 → 전체 오염
- 한 rank 늦으면 → AllReduce hang
반응형
'[GPUaaS] > GPUmgt' 카테고리의 다른 글
| [마운트] /etc/fstab vs /etc/rc.local 차이 !! (0) | 2026.02.27 |
|---|---|
| [vi편집기/less] 대용량(GB급) 로그 실무 분석 기준 !! (0) | 2026.02.22 |
| [분산 학습] 부동소수점 연산 !! (1) | 2026.02.22 |
| [분산 학습] AllReduce & AllReduce mismatch 란 !! (0) | 2026.02.21 |
| [Syslog] mlx5_core ... Detected insufficient power on the PCIe slot (27W) (0) | 2026.02.21 |
| [GPU서버 HW문제] NaN 발생 가능성 !! (0) | 2026.02.21 |
| [분산 학습] 운영 관점에서 NaN vs Inf 차이 !! (0) | 2026.02.21 |
| [분산 학습] NaN 반드시 알아야 하는 개념 !! (0) | 2026.02.21 |
댓글