약 60분

Chapter 1: Amazon SageMaker & HyperPod

1. Amazon SageMaker란?

Amazon SageMaker는 AWS에서 제공하는 완전 관리형 머신러닝 서비스입니다. 데이터 사이언티스트와 ML 엔지니어가 머신러닝 모델을 빠르게 구축(Build), 학습(Train), 배포(Deploy)할 수 있도록 설계되었습니다.

SageMaker의 핵심 가치
인프라 관리 부담 없이 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 칩을 사용하는 대규모 분산 학습에서 발생하는 하드웨어 장애를 자동으로 처리합니다.

HyperPod vs SageMaker Training Jobs
일반적인 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 동작 순서

  1. 장애 감지: Health Check 데몬이 GPU/Neuron/네트워크 이상 감지
  2. 작업 중단: 현재 학습 작업을 graceful하게 중단
  3. 노드 교체: 결함 노드를 클러스터에서 제외하고 새 노드 프로비저닝
  4. 체크포인트 복구: 마지막 저장된 체크포인트 로드
  5. 학습 재시작: 새로운 노드 구성으로 분산 학습 재개

하드웨어 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
주의: $SLURM_JOB_NODELIST 사용 금지
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
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의 기술적 원리와 구현 방법을 자세히 살펴봅니다.