본문 바로가기
[GPUaaS]/GPUmgt

[분산 학습] Tensor 란!!

by METAVERSE STORY 2026. 2. 21.
반응형

 

 

 

 

 

1️⃣ 먼저 숫자부터 시작해봅시다

✅ 0차원 → 스칼라 (숫자 하나)

 
 
5
 

✅ 1차원 → 벡터 (리스트)

 
 
[1, 2, 3]
 

✅ 2차원 → 행렬 (표 형태)

 
 
[[1, 2],
[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]])
 

이게 바로 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)
 

같은 크기라야:

 
 
같은 위치끼리 더할 수 있음
 

❌ 만약 다르면?

 
 
GPU0 → (4096, 4096)
GPU1 → (2048, 4096)
 

이건 수학적으로 더할 수 없음.

그래서:

AllReduce mismatch 발생

통신 에러 + 학습 중단

 

 


7️⃣ “같은 타이밍”은 무슨 뜻?

각 GPU는 이런 순서로 움직입니다:

 
 
forward
→ loss 계산
→ backward
→ gradient 생성
→ AllReduce
→ optimizer step
 

64노드라면:

  • 모든 GPU가
  • 같은 step 번호에서
  • 동시에 AllReduce 호출해야 합니다.

한 GPU라도:

  • 에러 발생
  • NaN 발생
  • 먼저 종료
  • 다른 코드 경로 진입

하면 timing mismatch 발생합니다.

 

 


8️⃣ 초보자용 비유

🧮 4명이 계산한다고 가정

각자 종이에 숫자 100개를 적어옴
이걸 모두 합치기로 함

조건:

  1. 종이 크기가 같아야 함 (shape 동일)
  2. 동시에 합쳐야 함 (타이밍 동일)

한 명이:

  • 종이 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

 

 

 

반응형

댓글