본문 바로가기
[GPUaaS]/TensorFlow

[중요2] 운영 표준 - ☸️ Kubernetes + TensorFlow 구동 원리

by METAVERSE STORY 2026. 1. 28.
반응형

 

 

☸️ Kubernetes + TensorFlow

“이 코드가 대체 어디서 어떻게 도는 건데?” 완전 정리


0️⃣ 전체 그림 먼저 (제일 중요)

 
[로컬 PC]        (코드 작성)
   ↓ docker build
[컨테이너 이미지]
   ↓
[컨테이너 레지스트리]
   ↓
kubectl apply -f tfjob.yaml
   ↓
[Kubernetes]
   ├─ Chief Pod  ──▶ python train.py  ← 이 코드 실행됨
   └─ Worker Pod ─▶ python train.py  ← 똑같이 실행됨
 
 
 

👉 당신이 직접 실행하는 게 아님
👉 Kubernetes가 Pod 안에서 실행시킴

 

 

 


1️⃣ 이 코드는 “파일 하나”다

📄 파일명

보통 이렇게 씀:

 
train.py

 

📌 train.py 안에 들어가는 전체 코드 예시

 
# train.py
import tensorflow as tf

# 1️⃣ 분산 학습 전략 선언
strategy = tf.distribute.MultiWorkerMirroredStrategy()

# 2️⃣ 모델 정의는 반드시 scope 안에서
with strategy.scope():
    model = tf.keras.Sequential([
        tf.keras.layers.Dense(128, activation="relu"),
        tf.keras.layers.Dense(10, activation="softmax")
    ])
    model.compile(
        optimizer="adam",
        loss="sparse_categorical_crossentropy",
        metrics=["accuracy"]
    )

# 3️⃣ 데이터셋 (예제용)
dataset = tf.data.Dataset.from_tensor_slices(
    (
        tf.random.normal([1000, 32]),
        tf.random.uniform([1000], maxval=10, dtype=tf.int32)
    )
).batch(32)

# 4️⃣ 학습 시작
model.fit(dataset, epochs=10)
 
 
 

📌 중요 포인트

  • 이 파일 하나만 실행됨
  • Chief / Worker 전부 동일한 코드 실행

2️⃣ MultiWorkerMirroredStrategy 이게 뭐냐면

한 줄 설명

“지금 이 파이썬이 혼자 도는지, 여러 Pod가 같이 도는지 자동 판단해서 분산 학습 해주는 스위치”


Kubernetes + TFJob 환경에서는

  • TFJob이 TF_CONFIG 환경변수를 자동으로 넣어줌
  • TensorFlow가 이걸 보고:
    • “아 지금 Worker 4개네”
    • “그럼 GPU들끼리 통신하자”

📌 그래서 코드에 IP / Pod 이름 / 개수 전혀 없음

 

 

 


3️⃣ 이 파일은 어디서 실행되나?

아님

 
python train.py # 당신 PC ❌

 

정답

 
Kubernetes Pod 내부

TFJob YAML에서 이렇게 실행됨

 
containers:
- name: tensorflow
  image: tensorflow/tensorflow:2.14.0-gpu
  command:
  - python
  - train.py
 
 
 

👉 이 순간:

  • Pod 생성
  • 컨테이너 시작
  • python train.py 자동 실행

 

 

 


4️⃣ 그럼 누가 몇 번 실행하냐?

TFJob 설정에 따라:

 
Chief:
  replicas: 1
Worker:
  replicas: 4
 
 

결과:

Pod 실행
Chief 1개 python train.py
Worker 4개 python train.py

👉 총 5번 실행
👉 하지만 TensorFlow가 서로 통신하면서 “한 번의 학습”처럼 동작

 

 

 


5️⃣ 로컬에서는 어떻게 실행돼?

로컬 테스트 (분산 ❌)

 
python train.py
  • 이때도 MultiWorkerMirroredStrategy()는 문제 없음
  • 자동으로 단일 워커 모드로 동작

👉 그래서 로컬 → 쿠버네티스 코드 변경 없음

 

 

 


6️⃣ 실행 순서 요약 (사람 기준)

👨‍💻 당신이 하는 일

  1. train.py 작성
  2. Dockerfile 작성
  3. 이미지 빌드 & 푸시
  4. tfjob.yaml 작성
  5. kubectl apply -f tfjob.yaml

🤖 Kubernetes가 하는 일

  1. Pod 생성
  2. TF_CONFIG 설정
  3. python train.py 실행
  4. GPU 할당
  5. 실패 시 재시작

 

 

 


7️⃣ “그럼 이 코드는 왜 이렇게 생겼냐?”

핵심 이유 3가지

  1. 단일 GPU / 멀티 GPU / 멀티 노드 코드 통합
  2. Kubernetes 환경 자동 대응
  3. 연구 → 운영 코드 동일

👉 실무에서 이게 미친 장점임


8️⃣ 한 문장으로 완전 정리

이 코드는 train.py이고, 당신이 직접 실행하는 게 아니라 TFJob이 Pod 안에서 여러 번 실행해서 하나의 분산 학습을 만든다

 

 

 

반응형

댓글