Chapter 1: Amazon SageMaker & HyperPod
1. Amazon SageMaker란?
Amazon SageMaker는 AWS에서 제공하는 완전 관리형 머신러닝 서비스입니다. 데이터 사이언티스트와 ML 엔지니어가 머신러닝 모델을 빠르게 구축(Build), 학습(Train), 배포(Deploy)할 수 있도록 설계되었습니다.
인프라 관리 부담 없이 ML 워크플로우 전체를 하나의 통합 환경에서 처리할 수 있습니다. 데이터 준비부터 모델 모니터링까지 End-to-End ML 라이프사이클을 지원합니다.
Build - Train - Deploy 패러다임
| 단계 | 설명 | 주요 기능 |
|---|---|---|
| Build | 데이터 준비 및 Feature Engineering | Data Wrangler, Feature Store, Ground Truth |
| Train | 모델 학습 및 튜닝 | Training Jobs, HPO, Experiments, Debugger |
| Deploy | 추론 엔드포인트 배포 및 모니터링 | Real-time/Batch/Async Inference, Model Monitor |
2024년 통합 플랫폼 진화
2024년 AWS re:Invent에서 SageMaker는 크게 세 가지 축으로 재편되었습니다:
SageMaker AI
기존 SageMaker의 ML 기능을 통합한 핵심 플랫폼입니다. Studio, Training, Inference 등 전통적인 ML 워크로드를 담당합니다. HyperPod를 통한 대규모 Foundation Model 학습도 이 범주에 포함됩니다.
SageMaker Lakehouse
데이터 레이크와 데이터 웨어하우스를 통합한 새로운 데이터 관리 계층입니다. Apache Iceberg 기반의 테이블 포맷을 지원하며, Redshift, Athena, EMR 등과 원활하게 통합됩니다.
Amazon Bedrock 통합
Foundation Model을 활용한 Generative AI 워크로드를 위한 통합입니다. SageMaker에서 학습한 커스텀 모델을 Bedrock으로 배포하거���, Bedrock의 FM을 SageMaker에서 Fine-tuning할 수 있습니다.
2024년 이후 문서에서 "SageMaker"는 SageMaker AI를 지칭하는 경우가 많습니다. 기존 SageMaker 기능은 대부분 SageMaker AI로 이전되었으며, 데이터 관련 기능은 Lakehouse로 분리되었습니다.
2. SageMaker 핵심 컴포넌트
SageMaker는 ML 라이프사이클의 각 단계를 지원하는 다양한 컴포넌트로 구성됩니다. 아래 표는 주요 컴포넌트와 역할을 정리한 것입니다.
| 컴포넌트 | 카테고리 | 설명 |
|---|---|---|
| SageMaker Studio | 개발 환경 | 웹 기반 통합 IDE. JupyterLab, Code Editor, 터미널을 포함하며 모든 ML 작업의 중앙 허브 역할 |
| SageMaker Pipelines | MLOps | ML 워크플로우 오케스트레이션. DAG 기반 파이프라인 정의, 조건부 실행, 파라미터화 지원 |
| SageMaker Experiments | 실험 관리 | 학습 실험 추적 및 비교. 하이퍼파라미터, 메트릭, 아티팩트를 자동으로 로깅 |
| SageMaker Feature Store | 데이터 | Feature 중앙 저장소. Online(실시간)/Offline(배치) 스토어 이중 구조로 학습과 추론에서 일관된 Feature 제공 |
| SageMaker Clarify | 설명 가능성 | 모델 편향 탐지 및 설명 가능성 분석. SHAP 기반 Feature 중요도, 데이터 편향 리포트 생성 |
| SageMaker Debugger | 디버깅 | 학습 중 텐서 캡처 및 분석. Gradient Vanishing, Overfitting 등 학습 문제 실시간 탐지 |
| SageMaker JumpStart | 사전학습 모델 | 350+ 사전학습 모델 허브. 원클릭 배포, Fine-tuning 템플릿, 솔루션 템플릿 제공 |
| SageMaker Model Registry | 모델 관리 | 모델 버전 관리 및 승인 워크플로우. 모델 그룹, 버전 메타데이터, 배포 승인 상태 관리 |
| SageMaker Model Monitor | 모니터링 | 배포된 모델 품질 모니터링. Data Drift, Model Drift, Bias Drift 자동 탐지 및 알림 |
| SageMaker Ground Truth | 데이터 레이블링 | 데이터 레이블링 서비스. Human-in-the-loop, Active Learning으로 효율적인 레이블링 |
SageMaker Studio 아키텍처 상세
SageMaker Studio는 AWS 관리형 JupyterLab 환경입니다. 각 사용자에게 독립된 EFS 홈 디렉토리가 할당되며, 컴퓨팅 리소스는 요청 시 프로비저닝됩니다.
- Studio Domain: 조직 단위의 Studio 환경. VPC, 인증, 공유 설정 관리
- User Profile: 개별 사용자 설정. 실행 역할, 기본 인스턴스 타입 지정
- Space: 작업 공간 단위. Private(개인)/Shared(팀) 공간 구분
- App: 실제 컴퓨팅 인스턴스. JupyterLab, Code Editor, Terminal 등
3. SageMaker Training Jobs
SageMaker Training Job은 모델 학습을 실행하는 관리형 컴퓨팅 환경입니다. 학습 코드, 데이터, 컴퓨팅 리소스를 지정하면 SageMaker가 인프라 프로비저닝부터 학습 완료 후 정리까지 모든 과정을 자동으로 처리합니다.
컨테이너 아키텍처
SageMaker Training은 Docker 컨테이너 기반으로 동작합니다. 세 가지 유형의 컨테이너를 사용할 수 있습니다:
| 유형 | 설명 | 사용 사례 |
|---|---|---|
| Built-in Algorithm | AWS가 제공하는 사전 구축된 알고리즘 컨테이너 | XGBoost, Linear Learner, K-Means 등 표준 알고리즘 사용 시 |
| Framework Container | PyTorch, TensorFlow 등 프레임워크가 설치된 AWS 관리형 컨테이너 | 커스텀 학습 코드를 표준 프레임워크에서 실행할 때 |
| Custom Container | 사용자가 직접 빌드한 Docker 이미지 | 특수 라이브러리, 비표준 환경이 필요할 때 |
SageMaker 컨테이너는 표준화된 디렉토리 구조를 사용합니다:
/opt/ml/input/data/{channel}- 입력 데이터/opt/ml/model- 학습된 모델 아티팩트 저장/opt/ml/output- 출력 및 로그/opt/ml/code- 학습 스크립트
Input Modes 비교
학습 데이터를 컨테이너로 전달하는 방식에는 세 가지 모드가 있습니다:
| Input Mode | 동작 방식 | 장점 | 단점 | 적합한 상황 |
|---|---|---|---|---|
| File Mode | 학습 시작 전 S3에서 전체 데이터를 다운로드 | 랜덤 액세스 가능, 기존 코드 수정 불필요 | 대용량 데이터 시 시작 지연, 로컬 스토리지 제한 | 데이터 < 50GB, 랜덤 액세스 필요 |
| Pipe Mode | S3에서 데이터를 스트리밍 (Unix pipe) | 즉시 시작, 무제한 데이터 크기 | 순차 읽기만 가능, 코드 수정 필요 | 매우 큰 데이터셋, 순차 처리 |
| FastFile Mode | FUSE 기반 S3 마운트, 필요한 파일만 스트리밍 | 빠른 시작, 랜덤 액세스, 대용량 지원 | 첫 액세스 시 지연, 네트워크 의존 | 대부분의 경우 권장 |
# FastFile Mode 사용 예시
from sagemaker.inputs import TrainingInput
train_input = TrainingInput(
s3_data='s3://bucket/train/',
input_mode='FastFile' # 권장
)
estimator.fit({'train': train_input})
데이터 소스 옵션
| 데이터 소스 | 특징 | 적합한 워크로드 |
|---|---|---|
| Amazon S3 | 기본 옵션, 무제한 용량, 높은 처리량 | 대부분의 학습 작업 |
| Amazon EFS | POSIX 파일 시스템, 실시간 동기화 | 데이터 전처리와 학습 간 공유, 빈번한 데이터 업데이트 |
| Amazon FSx for Lustre | 고성능 병렬 파일 시스템, S3 통합 | 대규모 분산 학습, 높은 IOPS 요구 |
인스턴스 타입 권장
| 워크로드 유형 | 권장 인스턴스 | 특징 |
|---|---|---|
| CPU 학습 | ml.c5.xlarge ~ ml.c5.18xlarge | 범용 CPU, XGBoost/Scikit-learn에 적합 |
| GPU 학습 (일반) | ml.g5.xlarge ~ ml.g5.48xlarge | NVIDIA A10G GPU, 비용 효율적인 딥러닝 |
| GPU 학습 (고성능) | ml.p5.48xlarge | NVIDIA H100 GPU x8, NVLink, 대규모 FM 학습 |
| AWS Trainium | ml.trn1.32xlarge, ml.trn2.48xlarge | AWS 자체 ML 칩, 비용 대비 성능 최적화 |
Spot Instance를 활용하면 On-Demand 대비 최대 90%까지 비용을 절감할 수 있습니다. 단, 중단에 대비한 체크포인트 전략이 필수입니다. HyperPod의 Auto-Resume 기능과 함께 사용하면 더욱 효과적입니다.
4. SageMaker 분산 학습
대규모 모델 학습에는 단일 GPU로는 불가능한 메모리와 연산량이 필요합니다. SageMaker는 분산 학습을 위한 자체 라이브러리와 오픈소스 통합을 제공합니다.
SMDDP (SageMaker Distributed Data Parallel)
SMDDP는 Data Parallelism을 위한 SageMaker 최적화 라이브러리입니다. 각 GPU가 전체 모델 복사본을 가지고, 데이터를 분할하여 학습합니다.
AllReduce 최적화
SMDDP는 AWS 네트워크 토폴로지에 최적화된 AllReduce 알고리즘을 사용합니다:
- Hierarchical AllReduce: 노드 내부(NVLink) → 노드 간(EFA) 2단계 집계
- Gradient Compression: FP16/BF16 압축으로 통신량 감소
- Overlap Communication: 연산과 통신 오버랩으로 대기 시간 최소화
# SMDDP 사용 예시
import smdistributed.dataparallel.torch.distributed as dist
from smdistributed.dataparallel.torch.parallel.distributed import DistributedDataParallel as DDP
dist.init_process_group()
model = DDP(model)
# 학습 루프는 일반 PyTorch DDP와 동일
SMPv2 (SageMaker Model Parallelism v2)
SMPv2는 Model Parallelism을 위한 라이브러리입니다. 모델이 단일 GPU 메모리에 맞지 않을 때 모델을 여러 GPU에 분산합니다.
| 기능 | 설명 |
|---|---|
| FSDP 기반 | PyTorch FSDP(Fully Sharded Data Parallel)를 기반으로 하이브리드 샤딩 지원 |
| Tensor Parallelism | 행렬 연산을 여러 GPU에 분할. Attention, MLP 레이어 최적화 |
| Pipeline Parallelism | 모델 레이어를 순차적으로 여러 GPU에 배치 |
| Activation Checkpointing | 순전파 활성화 값을 선택적으로 저장하여 메모리 절감 |
| FlashAttention | 메모리 효율적인 Attention 연산 통합 |
# SMPv2 설정 예시 (JSON)
{
"hybrid_shard_degree": 8,
"tensor_parallel_degree": 4,
"activation_checkpointing": true,
"activation_checkpointing_type": "selective",
"fp8": true
}
- Data Parallel (SMDDP): 모델이 단일 GPU에 맞을 때. 가장 간단하고 효율적
- FSDP (SMPv2): 모델이 GPU 메모리의 2-8배일 때. 샤딩으로 메모리 절감
- Tensor Parallel: 단일 레이어가 GPU 메모리보다 클 때. 통신 오버헤드 있음
- Pipeline Parallel: 모델이 매우 클 때. 버블 타임으로 효율 저하 가능
DeepSpeed / Horovod 통합
SageMaker는 오픈소스 분산 학습 프레임워크도 지원합니다:
| 프레임워크 | 특징 | SageMaker 통합 |
|---|---|---|
| DeepSpeed | Microsoft의 분산 학습 라이브러리. ZeRO-1/2/3 메모리 최적화 | Framework Container에 사전 설치, 커스텀 스크립트로 설정 |
| Horovod | Uber의 분산 학습 라이브러리. Ring-AllReduce 기반 | SageMaker 분산 학습 모드에서 직접 지원 |
5. Amazon SageMaker HyperPod
Amazon SageMaker HyperPod는 Foundation Model 학습을 위한 복원력 있는(Resilient) 관리형 클러스터입니다. 수천 개의 GPU/Trainium 칩을 사용하는 대규모 분산 학습에서 발생하는 하드웨어 장애를 자동으로 처리합니다.
일반적인 Training Job은 작업 단위로 인프라를 프로비저닝합니다. HyperPod는 장기 실행 클러스터로, 여러 학습 작업을 연속으로 실행하며 노드 장애에 대한 복원력을 제공합니다. FM 학습처럼 수일~수주가 걸리는 작업에 적합합니다.
핵심 기능 4가지
1. Auto-Resume (자동 재시작)
하드웨어 장애 발생 시 자동으로 결함 노드를 교체하고, 마지막 체크포인트에서 학습을 재개합니다. 수동 개입 없이 24/7 학습 연속성을 보장합니다.
- GPU/Neuron 칩 상태 자동 모니터링
- 네트워크(EFA) 연결 상태 검사
- 결함 노드 자동 격리 및 교체
- 체크포인트 기반 학습 재개
2. Elastic Training (탄력적 학습)
클러스터 크기를 동적으로 조정하면서 학습을 중단 없이 계속할 수 있습니다. 노드 추가/제거 시 자동으로 분산 학습 설정을 재구성합니다.
- 노드 축소 시 graceful shutdown
- 노드 확장 시 자동 재분배
- 비용 최적화를 위한 동적 스케일링
3. Checkpointless Training (체크포인트리스 학습)
체크포인트 저장 없이도 장애 복구가 가능한 혁신적인 기능입니다. NVIDIA Resiliency Extension 또는 AWS Trainium의 in-memory redundancy를 활용합니다.
- 체크포인트 저장/로드 오버헤드 제거
- 학습 처리량 최대 20% 향상
- 스토리지 비용 절감
4. Task Governance (작업 거버넌스)
여러 팀이 공유하는 클러스터에서 리소스 할당과 우선순위를 관리합니다. 공정한 스케줄링과 리소스 격리를 보장합니다.
- 팀/프로젝트별 리소스 쿼터
- 우선순위 기반 스케줄링
- Preemption 정책 설정
- 사용량 모니터링 및 청구
HyperPod 비용 모델
HyperPod는 클러스터가 실행되는 동안 시간당 요금이 부과됩니다. 비용 최적화를 위한 전략:
- Reserved Capacity: 장기 약정으로 최대 60% 할인
- Cluster 공유: Task Governance로 여러 팀이 클러스터 공유
- 자동 축소: 유휴 시간에 노드 축소
- Checkpointless: I/O 시간 절감으로 총 학습 시간 단축
6. HyperPod 아키텍처
HyperPod는 두 가지 오케스트레이션 옵션을 제공합니다: Slurm 기반과 Amazon EKS 기반입니다.
Slurm 오케스트레이션
Slurm은 HPC(High Performance Computing) 환경에서 널리 사용되는 워크로드 매니저입니다. HyperPod는 관리형 Slurm 클러스터를 제공합니다.
| 노드 유형 | 역할 | 인스턴스 예시 |
|---|---|---|
| Head Node (Controller) | Slurm Controller 실행, 작업 스케줄링, 클러스터 상태 관리 | ml.c5.xlarge |
| Login Node | 사용자 SSH 접속 지점, 작업 제출 인터페이스 | ml.m5.xlarge |
| Worker Node (Compute) | 실제 학습 작업 실행, GPU/Trainium 탑재 | ml.p5.48xlarge, ml.trn1.32xlarge |
Slurm 주요 명령어
# 인터랙티브 작업 할당
salloc -N 4 --gres=gpu:8 --time=24:00:00
# 배치 작업 제출
sbatch train_job.sh
# 작업 실행 (할당된 노드에서)
srun --auto-resume=1 python train.py
# 작업 상태 확인
squeue -u $USER
# 클러스터 상태 확인
sinfo
EKS 오케스트레이션
Kubernetes 기반 오케스트레이션을 선호하는 팀을 위해 Amazon EKS 통합을 제공합니다.
| Slurm 개념 | EKS 매핑 | 설명 |
|---|---|---|
| Head Node | EKS Control Plane | AWS 관리형, 별도 프로비저닝 불필요 |
| Worker Node | EKS Node Group | HyperPod가 관리하는 GPU/Trainium 노드 |
| Job | PyTorchJob / MPIJob | Kubeflow Training Operator CRD |
| srun | kubectl apply | YAML 매니페스트로 작업 제출 |
| squeue | kubectl get pytorchjobs | 작업 상태 조회 |
# PyTorchJob 예시
apiVersion: kubeflow.org/v1
kind: PyTorchJob
metadata:
name: llm-training
spec:
pytorchReplicaSpecs:
Master:
replicas: 1
template:
spec:
containers:
- name: pytorch
image: 123456789012.dkr.ecr.us-east-1.amazonaws.com/training:latest
resources:
limits:
nvidia.com/gpu: 8
Worker:
replicas: 3
template:
spec:
containers:
- name: pytorch
image: 123456789012.dkr.ecr.us-east-1.amazonaws.com/training:latest
resources:
limits:
nvidia.com/gpu: 8
Slurm vs EKS 비교
| 항목 | Slurm | EKS |
|---|---|---|
| 대상 사용자 | HPC 경험자, 연구자 | 클라우드 네이티브 팀, DevOps |
| 작업 제출 | sbatch, srun | kubectl, Helm |
| 모니터링 | squeue, sacct | kubectl, Prometheus/Grafana |
| 확장성 | 수천 노드 검증됨 | Kubernetes 스케일 한계 적용 |
| 기존 워크로드 | HPC 스크립트 재사용 용이 | 컨테이너화 필요 |
| Auto-Resume | srun --auto-resume=1 | Training Operator 자동 처리 |
7. HyperPod Auto-Resume
Auto-Resume은 HyperPod의 핵심 기능으로, 하드웨어 장애 발생 시 자동으로 학습을 재개합니다.
Auto-Resume 동작 순서
- 장애 감지: Health Check 데몬이 GPU/Neuron/네트워크 이상 감지
- 작업 중단: 현재 학습 작업을 graceful하게 중단
- 노드 교체: 결함 노드를 클러스터에서 제외하고 새 노드 프로비저닝
- 체크포인트 복구: 마지막 저장된 체크포인트 로드
- 학습 재시작: 새로운 노드 구성으로 분산 학습 재개
하드웨어 Health Check
| 대상 | 검사 방법 | 주요 검사 항목 |
|---|---|---|
| NVIDIA GPU | nvidia-smi |
GPU 상태, 메모리 에러, 온도, ECC 오류 |
| AWS Trainium | /sys/devices sysfs |
Neuron 디바이스 상태, NeuronCore 가용성 |
| EFA Network | EFA 상태 확인 | RDMA 연결, 대역폭, 패킷 손실 |
| NVLink/NVSwitch | nvidia-smi nvlink |
GPU 간 연결 상태, 대역폭 |
srun --auto-resume 사용법
#!/bin/bash
#SBATCH --job-name=llm-training
#SBATCH --nodes=32
#SBATCH --ntasks-per-node=8
#SBATCH --gres=gpu:8
#SBATCH --time=168:00:00
#SBATCH --exclusive
# Auto-Resume 활성화
srun --auto-resume=1 \
--container-image=nvcr.io/nvidia/pytorch:24.01-py3 \
--container-mounts=/fsx:/fsx \
torchrun \
--nnodes=$SLURM_JOB_NUM_NODES \
--nproc_per_node=8 \
--rdzv_backend=c10d \
--rdzv_endpoint=$(hostname):29500 \
train.py \
--checkpoint_dir=/fsx/checkpoints \
--resume_from_checkpoint=auto
Auto-Resume 환경에서는
$SLURM_JOB_NODELIST를 직접 사용하면 안 됩니다. 노드 교체 후 이 변수가 업데이트되지 않아 학습 재개가 실패할 수 있습니다.
대신
$(hostname)이나 $SLURMD_NODENAME을 사용하고, Rendezvous는 c10d 백엔드의 동적 검색에 의존하세요.
체크포인트 전략
# 학습 코드에서 체크포인트 저장/로드 예시
import torch
import os
def save_checkpoint(model, optimizer, epoch, step, path):
checkpoint = {
'model_state_dict': model.state_dict(),
'optimizer_state_dict': optimizer.state_dict(),
'epoch': epoch,
'step': step,
'rng_state': torch.get_rng_state(),
}
torch.save(checkpoint, path)
def load_checkpoint(model, optimizer, path):
if os.path.exists(path):
checkpoint = torch.load(path)
model.load_state_dict(checkpoint['model_state_dict'])
optimizer.load_state_dict(checkpoint['optimizer_state_dict'])
torch.set_rng_state(checkpoint['rng_state'])
return checkpoint['epoch'], checkpoint['step']
return 0, 0
# 주기적 체크포인트 저장 (Auto-Resume과 연동)
if step % checkpoint_interval == 0:
save_checkpoint(
model, optimizer, epoch, step,
f'/fsx/checkpoints/ckpt_step_{step}.pt'
)
8. HyperPod UltraServers
HyperPod UltraServers는 NVIDIA의 최신 GPU 아키텍처를 활용한 초고성능 학습 클러스터입니다.
NVL72 구성
NVIDIA GB200 NVL72
| 인스턴스 수 | 18개 인스턴스 (p5e.48xlarge) |
| 총 GPU 수 | 72 NVIDIA B200 GPU |
| GPU 메모리 | GPU당 192GB HBM3e (총 13.8TB) |
| 상호 연결 | NVLink 5.0 (1.8TB/s 양방향) |
| 네트워크 | EFA (3.2Tbps) |
Topology-aware Scheduling
대규모 분산 학습에서 GPU 간 통신 패턴은 성능에 큰 영향을 미칩니다. HyperPod는 네트워크 토폴로지를 인식한 스케줄링을 제공합니다.
| 통신 레벨 | 대역폭 | 지연시간 | 스케줄링 전략 |
|---|---|---|---|
| GPU 내 (NVLink) | 900 GB/s | < 1 μs | Tensor Parallel 그룹을 같은 노드에 배치 |
| 노드 내 (NVSwitch) | 900 GB/s | ~1 μs | FSDP 샤드 그룹을 같은 노드에 배치 |
| 노드 간 (EFA) | 400 Gbps | ~10 μs | Data Parallel 통신, Gradient AllReduce |
# Slurm에서 토폴로지 인식 작업 제출
#SBATCH --switches=1@00:30:00 # 같은 스위치 내 노드 선호
#SBATCH --constraint=nvlink # NVLink 지원 노드만 사용
# 또는 특정 파티션 지정
#SBATCH --partition=nvl72
- Tensor Parallel degree는 8 (한 노드 내 GPU 수)로 설정
- Pipeline Parallel은 NVLink 그룹 경계에 맞춰 설정
- Data Parallel은 노드 간 통신으로, EFA 대역폭 고려
- Gradient accumulation으로 통신 빈도 감소
9. HyperPod Training Operator
HyperPod Training Operator는 EKS 기반 HyperPod에서 분산 학습 작업을 관리하는 Kubernetes Operator입니다.
Kubernetes CRD (Custom Resource Definition)
Training Operator는 다음 CRD를 제공합니다:
| CRD | 용도 |
|---|---|
PyTorchJob |
PyTorch 분산 학습 (torchrun 기반) |
MPIJob |
MPI 기반 분산 학습 (Horovod 등) |
TFJob |
TensorFlow 분산 학습 |
XGBoostJob |
XGBoost 분산 학습 |
설치 방법
# 1. EKS 클러스터에 HyperPod 애드온 설치
aws eks create-addon \
--cluster-name my-hyperpod-cluster \
--addon-name amazon-sagemaker-hyperpod-taskgovernance \
--addon-version v1.0.0
# 2. cert-manager 설치 (Training Operator 의존성)
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.0/cert-manager.yaml
# 3. Pod Identity 설정
aws eks create-pod-identity-association \
--cluster-name my-hyperpod-cluster \
--namespace training \
--service-account training-sa \
--role-arn arn:aws:iam::123456789012:role/HyperPodTrainingRole
hyperpod-elastic-agent
hyperpod-elastic-agent는 각 학습 Pod에서 실행되는 사이드카로, Auto-Resume과 Health Check를 담당합니다.
# PyTorchJob에 elastic-agent 설정 예시
apiVersion: kubeflow.org/v1
kind: PyTorchJob
metadata:
name: resilient-training
annotations:
sagemaker.amazonaws.com/enable-auto-resume: "true"
spec:
elasticPolicy:
minReplicas: 2
maxReplicas: 8
maxRestarts: 100
pytorchReplicaSpecs:
Worker:
replicas: 4
template:
spec:
containers:
- name: pytorch
image: training:latest
env:
- name: TORCHELASTIC_ENABLE_AUTO_RESUME
value: "1"
entrypoint.sh 예시
#!/bin/bash
# entrypoint.sh - HyperPod EKS 학습 컨테이너 진입점
set -e
# 환경 변수 설정
export MASTER_ADDR=${MASTER_ADDR:-$(hostname)}
export MASTER_PORT=${MASTER_PORT:-29500}
export WORLD_SIZE=${WORLD_SIZE:-1}
export RANK=${RANK:-0}
export LOCAL_RANK=${LOCAL_RANK:-0}
# Health check 시작
/opt/hyperpod/health-check-daemon &
# NCCL 환경 설정
export NCCL_DEBUG=INFO
export NCCL_SOCKET_IFNAME=eth0
export FI_EFA_USE_DEVICE_RDMA=1
export FI_PROVIDER=efa
# 체크포인트 디렉토리 확인
CHECKPOINT_DIR=${CHECKPOINT_DIR:-/checkpoints}
mkdir -p $CHECKPOINT_DIR
# 마지막 체크포인트 찾기
LATEST_CKPT=$(ls -t $CHECKPOINT_DIR/*.pt 2>/dev/null | head -1 || echo "")
# 학습 시작
if [ -n "$LATEST_CKPT" ]; then
echo "Resuming from checkpoint: $LATEST_CKPT"
RESUME_ARG="--resume_from_checkpoint=$LATEST_CKPT"
else
echo "Starting fresh training"
RESUME_ARG=""
fi
torchrun \
--nnodes=$WORLD_SIZE \
--nproc_per_node=$NUM_GPUS \
--rdzv_backend=c10d \
--rdzv_endpoint=$MASTER_ADDR:$MASTER_PORT \
train.py \
--checkpoint_dir=$CHECKPOINT_DIR \
$RESUME_ARG \
"$@"
10. 지원 리전
Amazon SageMaker HyperPod는 현재 17개 AWS 리전에서 사용 가능합니다.
| 지역 | 리전 코드 | 리전 이름 |
|---|---|---|
| 미국 (4) | us-east-1 |
US East (N. Virginia) |
us-east-2 |
US East (Ohio) | |
us-west-1 |
US West (N. California) | |
us-west-2 |
US West (Oregon) | |
| 유럽 (5) | eu-west-1 |
Europe (Ireland) |
eu-west-2 |
Europe (London) | |
eu-west-3 |
Europe (Paris) | |
eu-central-1 |
Europe (Frankfurt) | |
eu-north-1 |
Europe (Stockholm) | |
| 아시아 태평양 (6) | ap-northeast-1 |
Asia Pacific (Tokyo) |
ap-northeast-2 |
Asia Pacific (Seoul) | |
ap-northeast-3 |
Asia Pacific (Osaka) | |
ap-southeast-1 |
Asia Pacific (Singapore) | |
ap-southeast-2 |
Asia Pacific (Sydney) | |
ap-south-1 |
Asia Pacific (Mumbai) | |
| 남미 (1) | sa-east-1 |
South America (Sao Paulo) |
- 최신 인스턴스 타입: us-east-1, us-west-2에서 먼저 출시
- UltraServers (NVL72): 현재 us-east-1, us-west-2에서만 사용 가능
- Trainium 인스턴스: us-east-1, us-east-2, us-west-2 권장
- 한국 사용자: ap-northeast-2 (Seoul) 또는 지연시간 고려 시 ap-northeast-1 (Tokyo)
대규모 HyperPod 클러스터(수십~수백 노드)는 사전 용량 예약(Capacity Reservation)을 권장합니다. 특히 p5, trn1 등 고성능 인스턴스는 수요가 높아 On-Demand 가용성이 제한될 수 있습니다. AWS 담당자와 사전 협의하세요.
정리
이 Chapter에서 배운 내용
- SageMaker는 AWS의 완전 관리형 ML 플랫폼으로, Build-Train-Deploy 전체 라이프사이클을 지원
- SageMaker 분산 학습은 SMDDP(Data Parallel)와 SMPv2(Model Parallel)를 통해 대규모 모델 학습 지원
- HyperPod는 FM 학습을 위한 복원력 있는 클러스터로, Auto-Resume, Elastic Training, Checkpointless Training 제공
- Slurm vs EKS: HPC 배경이면 Slurm, 클라우드 네이티브 팀이면 EKS 선택
- Auto-Resume은 하드웨어 장애 시 자동으로 노드 교체 및 체크포인트 복구 수행
- UltraServers는 NVL72 구성으로 72 GPU를 NVLink로 연결한 초고성능 클러스터
다음 Chapter에서는 Checkpointless Training의 기술적 원리와 구현 방법을 자세히 살펴봅니다.