GPU 클러스터 운영의 핵심 중 핵심
👉 라벨링 → Affinity → TFJob 적용 → 운영 팁 순서
1️⃣ 왜 GPU 타입 분리가 필수냐?
문제 상황 (안 하면 생기는 일)
- A100 / H100 혼재 노드
- Worker 일부는 A100, 일부는 H100
- ❌ NCCL 성능 저하
- ❌ 학습 속도 불균형
- ❌ 결과 재현성 깨짐
👉 분산 학습은 GPU “동질성”이 생명
2️⃣ GPU 노드 라벨링 (관리자의 1회 작업)
🔹 권장 라벨 설계
gpu.model=A100
gpu.model=H100
gpu.mem=80gb
gpu.interconnect=nvlink
예시 (A100 노드) (임시용)
예시 (H100 노드) (임시용)
📌 이 라벨은 오토스케일링돼도 자동 상속되게 구성 (영구용)
(NCP / Managed K8s에서는 노드풀 라벨로 설정)
3️⃣ Node Affinity 기본 패턴 (GPU 타입 고정)
🎯 목표
“이 TFJob은 A100에서만 실행”
Affinity 필수 옵션
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gpu.model
operator: In
values:
- A100
의미 해석
- required → 다른 노드면 절대 스케줄 ❌
- IgnoredDuringExecution → 실행 중 이동은 안 함
4️⃣ TFJob에 실제 적용 (A100 전용)
✅ Worker / Chief 동일하게 적용해야 함
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gpu.model
operator: In
values:
- A100
5️⃣ H100 전용 TFJob 패턴
- H100
👉 TFJob 단위로 GPU 타입 완전 분리
6️⃣ Soft Affinity (차선책 허용 전략)
“A100 우선, 없으면 H100”
- weight: 100
preference:
matchExpressions:
- key: gpu.model
operator: In
values:
- A100
📌 연구용 / 테스트용에만 추천
운영 학습에는 ❌
7️⃣ GPU 타입 + 용도까지 분리하는 실전 설계
라벨 예시
gpu.pool=train
gpu.pool=inference
Affinity
- key: gpu.model
operator: In
values: [A100]
- key: gpu.pool
operator: In
values: [train]
👉 학습/추론 완전 분리
8️⃣ (중요) GPU 타입 섞이면 왜 안 되냐 – 실무 이유
| 항목 | 문제 |
| 성능 | AllReduce 지연 |
| NCCL | topology mismatch |
| TF_CONFIG | worker sync 지연 |
| 재현성 | step time 변동 |
| 비용 | H100 낭비 |
9️⃣ TFJob 최종 예시 (A100 고정 + 안정성)
Worker:
replicas: 4
restartPolicy: OnFailure
template:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gpu.model
operator: In
values:
- A100
containers:
- name: trainer
image: tensorflow/tensorflow:2.14.0-gpu
command: ["python", "train.py"]
resources:
requests:
nvidia.com/gpu: 1
limits:
nvidia.com/gpu: 1
10️⃣ 운영 체크 명령어
kubectl get nodes --show-labels | grep gpu.model
# 실제 배치 확인
kubectl get pod -n ml -o wide
# GPU 모델 확인
kubectl exec tf-mnist-train-worker-0 -- nvidia-smi -L
🔥 한 줄 결론
GPU 타입 분리는 선택이 아니라 필수이며,
Node Affinity는 분산 학습 안정성을 보장하는 “안전벨트”다.
'[GPUaaS] > TensorFlow' 카테고리의 다른 글
| [중요2] 운영 표준 - ☸️ Kubernetes + TensorFlow 구동 원리 (0) | 2026.01.28 |
|---|---|
| [중요2] 운영 표준 - GPU 노드 라벨 세트 (0) | 2026.01.28 |
| [GPU 타입] 운영 무중단 - 라벨 NodePool 등록 (1) | 2026.01.27 |
| [GPU 타입] 신규 라벨 NodePool 등록 (라벨 + Taint + Affinity 세트) (0) | 2026.01.26 |
| [GPU] requests = limits가 좋은 이유 (0) | 2026.01.26 |
| [TF 분산학습] 스토리지 관점 + TensorFlow 내부 동작 (0) | 2026.01.26 |
| [쿠버네티스 워크로드 개념] TFJob / CronJob / Job / Deployment / Pod (0) | 2026.01.26 |
| [TensorFlow] 구글이 만든 머신러닝·딥러닝 프레임워크 !! (0) | 2026.01.26 |
댓글