모델 트레이닝

지원 버전: Kubernetes 1.31, 1.32, 1.33 마지막 업데이트: 2026년 2월 25일

모델 훈련은 AI/ML 라이프사이클에서 가장 리소스 집약적인 워크로드입니다. 이 장에서는 분산 훈련 전략, Slinky를 통한 Slurm 통합, GPU 및 Trainium 기반 훈련, 그리고 Amazon EKS에서 대규모 훈련 작업을 실행하기 위한 모범 사례를 다룹니다.

훈련 파이프라인 개요

Kubernetes에서의 일반적인 모델 훈련 파이프라인은 데이터 준비부터 모델 평가까지 여러 단계를 포함합니다:

spinner

분산 훈련 전략

대규모 모델을 훈련하려면 여러 GPU와 노드에 걸쳐 연산을 분산해야 합니다. 다양한 병렬화 전략을 이해하는 것이 효율적인 훈련에 필수적입니다.

spinner

병렬화 전략 비교

전략
적합한 경우
메모리 효율성
통신 오버헤드
구현 복잡도

데이터 병렬화

단일 GPU 메모리에 맞는 모델

낮음 (GPU당 전체 모델)

중간 (그래디언트 동기화)

낮음

텐서 병렬화

대규모 레이어 (어텐션, FFN)

높음 (레이어 분할)

높음 (레이어 내부)

중간

파이프라인 병렬화

매우 깊은 모델

높음 (스테이지 분산)

낮음 (스테이지 경계)

중간

전문가 병렬화

MoE 모델 (Mixtral, Switch)

중간

중간 (라우팅)

높음

3D 병렬화

1000억+ 파라미터 모델

최고

복합

매우 높음

적절한 전략 선택

Slinky를 통한 EKS에서의 Slurm

Slinky는 친숙한 Slurm 워크로드 관리자를 Kubernetes에 도입하여 AI/ML 훈련 워크로드를 위한 HPC 스타일의 작업 스케줄링을 가능하게 합니다.

Slinky 아키텍처

spinner

Slinky 컴포넌트

컴포넌트
설명
Kubernetes 리소스

slurmctld

작업, 파티션 및 리소스를 관리하는 중앙 컨트롤러

PVC가 있는 StatefulSet

slurmdbd

작업 어카운팅 및 클러스터 상태를 위한 데이터베이스 데몬

MySQL/MariaDB가 있는 StatefulSet

slurmd

각 워커 노드에서 실행되는 컴퓨트 데몬

GPU 노드의 DaemonSet

slurmrestd

프로그래밍 방식 작업 제출을 위한 REST API

Service가 있는 Deployment

로그인 Pod

사용자가 작업을 제출하기 위한 SSH 접근 지점

NLB 노출이 있는 Pod

Slinky CRD

Slinky는 Slurm 클러스터 관리를 위한 Custom Resource Definition을 도입합니다:

ArgoCD를 사용한 Slinky 배포

GPU 오토 스케일링을 위한 Karpenter NodePool

Slurm에 작업 제출하기

NVIDIA GPU에서의 훈련

NVIDIA GPU는 AI/ML 훈련의 주요 선택지로 남아 있습니다. NCCL, EFA 및 멀티노드 통신의 적절한 구성이 성능에 필수적입니다.

멀티노드 훈련을 위한 NCCL 구성

EFA 네트워킹 구성

EKS에서의 NVIDIA BioNeMo

BioNeMo는 신약 개발 및 분자 모델링을 위한 NVIDIA의 프레임워크입니다:

AWS Trainium/Neuron에서의 훈련

AWS Trainium 칩은 대규모 모델 훈련을 위한 비용 효율적인 솔루션을 제공합니다. Neuron SDK는 PyTorch 및 TensorFlow 통합을 제공합니다.

Neuron SDK 컴포넌트

컴포넌트
설명
목적

Neuron Compiler

XLA 기반 컴파일러

Neuron 하드웨어를 위한 모델 최적화

Neuron Runtime

실행 런타임

Neuron 디바이스 및 실행 관리

Neuron Tools

프로파일링 및 디버깅

neuron-top, neuron-monitor, neuron-profile

torch-neuronx

PyTorch 통합

Trainium을 위한 네이티브 PyTorch API

transformers-neuronx

HuggingFace 통합

Neuron용 최적화된 트랜스포머

optimum-neuron

HuggingFace Optimum

고수준 훈련 및 추론 API

지원되는 프레임워크 및 모델

Trainium에서의 Llama 3 LoRA 파인튜닝

NeuronX Distributed를 사용한 Trainium에서의 BERT-Large 훈련

Trainium 노드 구성

훈련 인프라 컴포넌트

분산 훈련을 위한 KubeRay와 RayTrain

전통적인 HPC 워크로드를 위한 MPI Operator

Gang 스케줄링을 위한 Volcano 스케줄러

대화형 훈련 개발을 위한 JupyterHub

훈련을 위한 스토리지

FSx for Lustre 구성

공유 모델 스토리지를 위한 Amazon EFS

체크포인트 관리

훈련 최적화 팁

혼합 정밀도 훈련

그래디언트 누적

Flash Attention 구성

학습률 스케줄링 모범 사례

DeepSpeed ZeRO 구성

모범 사례 요약

카테고리
모범 사례
이점

병렬화

1000억+ 모델에 3D 병렬화 사용

최대 메모리 효율성

통신

멀티노드 훈련에 EFA 활성화

400 Gbps 네트워킹

스토리지

S3 데이터 리포지토리와 함께 FSx Lustre 사용

높은 처리량 + 내구성

체크포인팅

N 스텝마다 저장, 마지막 3-5개 유지

스토리지와 복구 균형

정밀도

안정성을 위해 FP16 대신 BF16 사용

손실 스케일링 불필요

메모리

그래디언트 체크포인팅 활성화

3-4배 메모리 절약

스케줄링

Gang 스케줄링에 Volcano 사용

전부 아니면 전무 파드 배치

스케일링

GPU NodePool과 함께 Karpenter 사용

자동 GPU 프로비저닝

참고 자료

퀴즈

이 장에서 배운 내용을 테스트하려면 모델 훈련 퀴즈를 풀어보세요.

마지막 업데이트