약 60분

성능 & Getting Started

Checkpointless Training의 실제 성능 벤치마크와 단계별 통합 가이드를 제공합니다.

1. 성능 벤치마크

1.1 복구 시간 및 Goodput 비교

구성 복구 시간 시간 단축 Goodput
2,304 GPU (대규모) < 2분 87-93% 95%+
256 GPU Llama-3 70B Pre-training 47초 84% 95%+
16 GPU Fine-tuning 50초 84% 95%+
핵심 성과 기존 15-30분 이상 소요되던 복구 시간을 90초 미만으로 단축. 클러스터 규모와 관계없이 95% 이상의 Goodput을 달성합니다.

1.2 기존 방식 대비 비교

Metric Traditional Checkpoint-Restart HyperPod Checkpointless
Recovery Time 15-30+ 분 < 90초
Training Goodput 60-85% 95%+
Storage I/O 수 TB 읽기/쓰기 제거됨
Max Validated Scale 규모 증가 시 성능 저하 수만 GPU

2. Amazon Nova 검증

Production-Level Validation

Checkpointless Training은 Amazon Nova 모델 제품군 학습에 직접 사용되어 프로덕션 레벨의 검증을 마쳤습니다.

  • 규모: 수만 개(tens of thousands)의 가속기
  • Goodput: 95% 이상 유지
  • 안정성: 잦은 개별 노드 장애에도 학습 지속
  • 검증: 스토리지 병목 없이 안정적인 스케일링 증명
Amazon Nova의 의미 Amazon Nova는 AWS의 자체 Foundation Model로, Checkpointless Training이 실제 대규모 FM 학습에서 검증되었음을 의미합니다.

3. Prerequisites

3.1 지원 Instance Types

Instance Type Accelerator GPU/Chip 수 EFA 대역폭
p5.48xlarge NVIDIA H100 80GB 8 3,200 Gbps
p5e.48xlarge NVIDIA H100 80GB (Enhanced) 8 3,200 Gbps
p5en.48xlarge NVIDIA H200 8 3,200 Gbps
p6-b200 (예정) NVIDIA B200 8 TBD
trn2.48xlarge AWS Trainium2 16 3,200 Gbps

3.2 소프트웨어 요구사항

Component 버전 비고
Training Operator v1.2.0+ Checkpointless 지원 필수
Elastic Agent v1.1.0+ In-Process Recovery 지원
Kubernetes 1.28 - 1.33 EKS 지원 버전
PyTorch 2.4.0 - 2.7.1 FSDP2 지원
Python >= 3.10, < 3.14 -
Kueue (선택) v0.12.2 / v0.12.3 Job 스케줄링

3.3 Container Image

AWS에서 제공하는 Pre-built 컨테이너 이미지를 사용합니다.

# Container Image URI (ap-northeast-1 예시)
356859066553.dkr.ecr.ap-northeast-1.amazonaws.com/hyperpod-checkpointless-training:v1.0.0

# 지원 리전
us-east-1, us-east-2, us-west-1, us-west-2
eu-west-1, eu-west-2, eu-central-1, eu-north-1
ap-northeast-1, ap-south-1, ap-southeast-1, ap-southeast-2
sa-east-1

3.4 Container 버전 정보 (v1.0.0)

Component Version
PyTorchv2.6.0
CUDAv12.9
NCCLv2.27.5
EFAv1.43.0
AWS-OFI-NCCLv1.16.0
Libfabricv2.1
Megatronv0.15.0
NeMov2.6.0rc0

4. 4-Tier Integration Guide

Checkpointless Training은 단계별로 통합할 수 있습니다. 각 Tier는 이전 Tier를 포함합니다.

Tier 1: 환경 변수만 설정 (Rootless NCCL)

가장 간단한 통합. Rootless NCCL만 활성화하여 NCCL 초기화 시간을 단축합니다.

# entrypoint.sh
#!/bin/bash
set -ex

# Tier 1: Rootless NCCL 활성화
export HPCT_USE_ROOTLESS=1
export TORCH_SKIP_TCPSTORE=1
sysctl -w net.ipv4.ip_local_port_range="20000 65535"

# 기존 학습 스크립트 실행
python training_script.py
Tier 1 효과 코드 수정 없이 환경 변수만으로 NCCL 재초기화 시간을 수십 분에서 수 초로 단축합니다.

Tier 2: MMAP Data Loading 추가

공유 메모리 기반 데이터 로딩으로 DataLoader 초기화 시간을 제거합니다.

from hyperpod_checkpointless_training.dataloader.mmap_data_module import MMAPDataModule
from hyperpod_checkpointless_training.dataloader.config import CacheResumeMMAPConfig

# Tier 2: MMAP DataLoader 설정
mmap_config = CacheResumeMMAPConfig(
    cache_dir="/dev/shm/pdl_cache",
    prefetch_length=10,
    lookback_length=2,
)

data_module = MMAPDataModule(
    data_module=YourDataModule(...),
    mmap_config=mmap_config,
)

# Trainer에서 사용
trainer.fit(model, data_module)

Tier 3: In-Process Recovery (IPR) 추가

프로세스 레벨 장애 격리로 정상 노드의 재시작을 방지합니다.

from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper
from hyperpod_checkpointless_training.inprocess.health_check import CudaHealthCheck
from hyperpod_checkpointless_training.inprocess.train_utils import wait_rank, HPAgentK8sAPIFactory
from hyperpod_checkpointless_training.inprocess.abort import (
    CheckpointlessAbortManager,
    CheckpointlessFinalizeCleanup
)

# Tier 3: In-Process Recovery 설정
wait_rank()  # Training Operator로부터 Rank 정보 수신 대기

@HPWrapper(
    health_check=CudaHealthCheck(),
    hp_api_factory=HPAgentK8sAPIFactory(),
    abort_timeout=60.0,
    abort=CheckpointlessAbortManager.get_default_checkpointless_abort(),
    finalize=CheckpointlessFinalizeCleanup(),
)
def run_main(cfg, caller=None):
    trainer = Trainer(...)
    trainer.wrapper = caller
    trainer.fit(model, data_module)

if __name__ == "__main__":
    run_main(config)

Tier 4: P2P Checkpointless (완전 통합)

메모리 기반 P2P 상태 복제로 디스크 I/O를 완전히 제거합니다.

from hyperpod_checkpointless_training.nemo_plugins.strategy import CheckpointlessMegatronStrategy
from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager
from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback

# Tier 4: P2P State Replication 설정
checkpoint_manager = CheckpointManager(
    enable_checksum=False,
    enable_offload=False,
)

@HPWrapper(
    health_check=CudaHealthCheck(),
    hp_api_factory=HPAgentK8sAPIFactory(),
    checkpoint_manager=checkpoint_manager,  # CheckpointManager 추가
    abort=CheckpointlessAbortManager.get_default_checkpointless_abort(),
    finalize=CheckpointlessFinalizeCleanup(),
)
def run_main(cfg, caller=None):
    trainer = Trainer(
        strategy=CheckpointlessMegatronStrategy(
            # N+1 Redundancy: 최소 2개 인스턴스
            num_distributed_optimizer_instances=2,
            tensor_model_parallel_size=8,
            pipeline_model_parallel_size=4,
        ),
        callbacks=[
            CheckpointlessCallback(checkpoint_manager=checkpoint_manager),
        ],
    )
    trainer.wrapper = caller
    trainer.fit(model, data_module)

5. Pre-configured Recipes

AWS에서 제공하는 사전 구성된 학습 레시피입니다.

Model Method Size Nodes Instance
GPT OSS Full Finetune 120B 16 p5.48xlarge
GPT OSS LoRA 120B 2 p5.48xlarge
Llama3 Pretrain 70B 16 p5.48xlarge
Llama3 LoRA 70B 2 p5.48xlarge
Custom Any Any Any p5.48xlarge

GitHub Repositories

6. Complete Code Example

4개 Tier를 모두 통합한 전체 Python 스크립트 예시입니다.

#!/usr/bin/env python3
# training_script.py - Checkpointless Training Complete Example

import os
from omegaconf import OmegaConf
from pytorch_lightning import Trainer

# Tier 2: MMAP Data Loading
from hyperpod_checkpointless_training.dataloader.mmap_data_module import MMAPDataModule
from hyperpod_checkpointless_training.dataloader.config import CacheResumeMMAPConfig

# Tier 3: In-Process Recovery
from hyperpod_checkpointless_training.inprocess.wrap import HPWrapper
from hyperpod_checkpointless_training.inprocess.health_check import CudaHealthCheck
from hyperpod_checkpointless_training.inprocess.train_utils import wait_rank, HPAgentK8sAPIFactory
from hyperpod_checkpointless_training.inprocess.abort import (
    CheckpointlessAbortManager,
    CheckpointlessFinalizeCleanup
)

# Tier 4: P2P State Replication
from hyperpod_checkpointless_training.nemo_plugins.strategy import CheckpointlessMegatronStrategy
from hyperpod_checkpointless_training.nemo_plugins.checkpoint_manager import CheckpointManager
from hyperpod_checkpointless_training.nemo_plugins.callbacks import CheckpointlessCallback

# Your model and data modules
from my_project import MyModel, MyDataModule


def create_data_module(cfg):
    """Tier 2: MMAP DataLoader 생성"""
    base_data_module = MyDataModule(
        data_path=cfg.data.path,
        batch_size=cfg.data.batch_size,
    )

    mmap_config = CacheResumeMMAPConfig(
        cache_dir="/dev/shm/pdl_cache",
        prefetch_length=cfg.data.prefetch_length,
        lookback_length=cfg.data.lookback_length,
    )

    return MMAPDataModule(
        data_module=base_data_module,
        mmap_config=mmap_config,
    )


def create_trainer(cfg, checkpoint_manager):
    """Tier 4: Checkpointless Trainer 생성"""
    strategy = CheckpointlessMegatronStrategy(
        num_distributed_optimizer_instances=cfg.model.num_optimizer_instances,
        tensor_model_parallel_size=cfg.model.tp_size,
        pipeline_model_parallel_size=cfg.model.pp_size,
        context_parallel_size=cfg.model.cp_size,
    )

    callbacks = [
        CheckpointlessCallback(checkpoint_manager=checkpoint_manager),
    ]

    return Trainer(
        strategy=strategy,
        callbacks=callbacks,
        max_steps=cfg.training.max_steps,
        accelerator="gpu",
        devices=cfg.training.devices,
        num_nodes=cfg.training.num_nodes,
    )


# Tier 4: CheckpointManager 설정
checkpoint_manager = CheckpointManager(
    enable_checksum=False,
    enable_offload=False,
)


# Tier 3: In-Process Recovery Wrapper
@HPWrapper(
    health_check=CudaHealthCheck(timeout=30),
    hp_api_factory=HPAgentK8sAPIFactory(),
    abort_timeout=60.0,
    checkpoint_manager=checkpoint_manager,
    abort=CheckpointlessAbortManager.get_default_checkpointless_abort(),
    finalize=CheckpointlessFinalizeCleanup(),
)
def run_main(cfg, caller=None):
    """메인 학습 함수 - Re-executable Code Block (RCB)"""

    # 모델 생성
    model = MyModel(cfg.model)

    # Tier 2: MMAP DataLoader
    data_module = create_data_module(cfg)

    # Tier 4: Checkpointless Trainer
    trainer = create_trainer(cfg, checkpoint_manager)
    trainer.wrapper = caller  # HPWrapper 연결 필수

    # 학습 실행
    trainer.fit(model, data_module)


if __name__ == "__main__":
    # Tier 3: Training Operator로부터 Rank 정보 수신 대기
    wait_rank()

    # 설정 로드
    cfg = OmegaConf.load("config.yaml")

    # 학습 실행
    run_main(cfg)

7. HyperPod Elastic Agent

7.1 entrypoint.sh 예시

#!/bin/bash
set -ex

# Tier 1: Rootless NCCL 환경 설정
export HPCT_USE_ROOTLESS=1
export TORCH_SKIP_TCPSTORE=1
sysctl -w net.ipv4.ip_local_port_range="20000 65535"

# 추가 환경 설정
export CUDA_DEVICE_MAX_CONNECTIONS=1
export NCCL_DEBUG=INFO

# HyperPod Elastic Agent로 학습 실행
hyperpodrun \
    --nproc_per_node=8 \
    --inprocess-restart \
    --inprocess-timeout=120 \
    --shutdown-signal=SIGKILL \
    --shutdown-timeout=15 \
    training_script.py

7.2 hyperpodrun Arguments

Argument 기본값 설명
--nproc_per_node 8 노드당 프로세스 수 (GPU 수)
--inprocess-restart - In-Process Recovery 활성화
--inprocess-timeout 120 Sync barrier 대기 시간 (초)
--shutdown-signal SIGKILL 프로세스 종료 시그널 (SIGTERM/SIGKILL)
--shutdown-timeout 15 시그널 간 대기 시간 (초)

8. IAM Policy

Tiered Checkpointing 사용 시 S3 접근을 위한 IAM 정책입니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::your-checkpoint-bucket",
        "arn:aws:s3:::your-checkpoint-bucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "fsx:DescribeFileSystems"
      ],
      "Resource": "*"
    }
  ]
}

9. Troubleshooting

NCCL Timeout 발생

증상: NCCL 작업이 타임아웃되며 학습이 중단됨

원인:

  • 네트워크 대역폭 부족
  • 노드 간 시간 동기화 문제
  • EFA 드라이버 버전 불일치

해결:

# NCCL 타임아웃 증가
export NCCL_TIMEOUT=1800

# 디버그 로그 활성화
export NCCL_DEBUG=INFO
export NCCL_DEBUG_SUBSYS=ALL
/dev/shm 공간 부족

증상: MMAP DataLoader 초기화 실패, "No space left on device" 오류

원인: 공유 메모리 크기가 prefetch 배치를 담기에 부족

해결:

# /dev/shm 크기 확인
df -h /dev/shm

# K8s Pod에서 shm 크기 증가
# spec.containers.volumeMounts:
#   - name: dshm
#     mountPath: /dev/shm
# spec.volumes:
#   - name: dshm
#     emptyDir:
#       medium: Memory
#       sizeLimit: 64Gi
P2P Recovery 실패 후 Checkpoint Fallback

증상: Checkpointless 복구 실패 후 S3 Checkpoint 로딩으로 Fallback

원인:

  • 복제본을 가진 모든 노드가 동시 장애
  • num_distributed_optimizer_instances 값이 1
  • 네트워크 파티션으로 피어 노드 접근 불가

해결:

# 복제 인스턴스 수 증가
strategy = CheckpointlessMegatronStrategy(
    num_distributed_optimizer_instances=3,  # 2에서 3으로 증가
)

# Fallback용 Checkpoint 저장 주기 설정
# 완전한 장애 대비를 위해 주기적 Checkpoint도 유지
CudaHealthCheck Timeout

증상: GPU 상태 검사가 타임아웃되며 IPR 트리거됨

원인: GPU가 무거운 연산 중이거나 실제 장애 발생

해결:

# Health check 타임아웃 증가
@HPWrapper(
    health_check=CudaHealthCheck(timeout=60),  # 30에서 60으로
    ...
)
Training Operator Pod 통신 실패

증상: wait_rank()가 무한 대기, Rank 정보 수신 안됨

원인:

  • Training Operator가 설치되지 않음
  • K8s RBAC 권한 부족
  • Pod 네트워크 정책 문제

해결:

# Training Operator 상태 확인
kubectl get pods -n sagemaker-hyperpod-system

# Operator 로그 확인
kubectl logs -n sagemaker-hyperpod-system deployment/training-operator
추가 지원