AWS SageMaker HyperPod 및 ParallelCluster를 위한 헬퍼 스크립트 및 가이드 모음입니다. HPC 클러스터에서 대규모 분산 학습 및 추론을 쉽게 시작할 수 있습니다.
- HF_TOKEN 사전 조건 검사 추가:
02_run_basic.sh,03_run_aws_optimized.sh에HF_TOKEN미설정 시 조기 종료 처리 - GPU/Precision 선택 분리:
03_run_aws_optimized.sh에서 GPU 타입 선택과 FP8 Precision 선택을 독립적으로 분리 — GPU 타입에 관계없이fp8_mx/fp8_cs/bf16자유 선택 가능 - CUDA Graph 이슈 문서 추가:
benchmark/CUDA_GRAPH_NOTES.md신규 작성 — FP8-CS 스케일 팩터 고정(이슈 A)·mRoPE 가변 시퀀스 충돌(이슈 B) 원인 및 해결책 상세 정리
- 벤치마크 버전별 폴더 분리:
25.11/(NeMo 25.11.01 / Megatron-Bridge r0.2.0)과26.02/(NeMo 26.02.01 / Megatron-Bridge v0.3.1)로 독립 분리 — 각 버전마다env.sh,01_prepare_environment.sh,02_run_basic.sh,03_run_aws_optimized.sh,presets/포함 - 버전별 WORK_DIR 분리:
25.11은/fsx/megatron-bridge-test-25.11,26.02는/fsx/megatron-bridge-test-26.02로 경로 충돌 방지 - 공용 환경 점검 스크립트:
env_check.sh로 이름 변경, 두 버전 공용 사용 - 26.02 전용 NCCL 패치 스크립트:
fix_nccl_setup.sh추가 —setup_experiment.py의 NCCL 설정을 AWS 환경에 맞게 자동 패치
클릭하여 전체 업데이트 내역 보기
- 토크나이저 자동 다운로드 지원:
download_tokenizers.sh로 모델 그룹별 토크나이저 일괄 다운로드,scripts/ensure_tokenizer.py로 학습 전 토크나이저 자동 확인 및 다운로드 - TorchTitan 설정 개선:
run_train.shpre-flight 체크에 토크나이저 자동 확인 통합,train.sbatch에서 venv 로컬 torchrun 경로 자동 인식으로 변경 - 전체 노드 환경 점검 지원:
env_check.sh --all옵션 추가 —srun으로 모든 컴퓨트 노드 동시 점검 - 트러블슈팅 가이드 추가:
TROUBLE_SHOOTING.md신규 작성 — Slurm, NCCL/aws-ofi-nccl, Pyxis, GPU/CUDA, 노드 관리, 성능, 메모리, 스토리지, 배포 문제 등 14개 섹션
- NeMo Megatron-Bridge 벤치마크 추가: NVIDIA Megatron-Bridge Performance Summary 재현을 위한 벤치마크 스크립트 추가 (Qwen3 30B A3B, Llama3 8B, GPT-OSS 120B, Qwen3-VL 30B A3B, p5/p5e/p5en/p6-b200 인스턴스)
- 전반적인 코드 리팩토링: FSDP2, Lightning 학습 스크립트 및 인자 처리 코드 정리
- TorchTitan 가이드 대폭 변경: 새로운 디렉토리 구조로 재편, 벤치마크/스크립트/멀티노드 학습 파일 추가
- Lightning 학습 지표 개선: TPS(Tokens Per Second) 및 TFLOPs/s 실시간 모니터링 추가 (train.py, train_fabric.py)
- Workshop Studio 지원 강화: Workshop Studio의 저사양 GPU 리소스(예:
ml.g5.2xlarge)에서도 핸즈온 가능하도록 개선
- HyperPod EKS Training 핸즈온 추가: EKS 기반 분산 학습 클러스터 설정 및 운영 가이드
- Inference 핸즈온 워크샵 최적화: Workshop Studio 환경에 맞춘 추론 실습 가이드 및 자동화 스크립트 개선
- HyperPod EKS Task Governance 핸즈온 추가: 팀과 프로젝트 간의 리소스 할당을 간소화하고 컴퓨팅 리소스의 효율적인 활용을 보장하는 관리 환경 구성
- HyperPod EKS Workshop Stduio (실습용 임시 계정) 실습을 위한 가이드 및 코드 추가
- HyperPod EKS Inference 핸즈온 추가: HyperPod Inference Operator를 활용한 Kubernetes 기반 AI/ML 모델 추론 환경 구성
- Basic 추론 환경: FSx Lustre 및 S3 CSI 기반 모델 배포, 자동화 스크립트 제공
- KV Cache & Intelligent Routing: Managed Tiered KV Cache와 Intelligent Routing을 활용한 고성능 추론 최적화
- FSDP2 & Lightning Pyxis+Enroot 지원: 컨테이너 기반 분산 학습 환경을 FSDP2와 Lightning에도 확장
- DeepSpeed Pyxis+Enroot 지원: 컨테이너 기반 분산 학습 환경 구성
- Lightning 분산 학습 추가: PyTorch Lightning과 Lightning Fabric을 활용한 이중 프레임워크 지원
- 데이터셋 관리 개선: 한국어 Q&A 데이터셋(glan-qna-kr) 등 다양한 데이터셋 추가, 로컬 저장 및 FSx Lustre DRA 동기화 기능 지원
- 데이터셋 용도별 분류: Pre-training과 SFT(Supervised Fine-tuning) 용도로 구분하여 체계적 관리
- 새로운 유틸리티 스크립트: CloudFormation 스택 관리용
export-stack-outputs.sh와 FSx Lustre DRA 생성용create-dra.sh추가
- FSDP2 지원 추가: PyTorch 2.5+ FSDP2 기반 분산 학습 예제 및 가이드
- DeepSpeed 통합: DeepSpeed ZeRO 기반 대규모 모델 학습 샘플 추가
- Qwen 3 0.6B 테스트: 최신 Qwen 3 0.6B 모델 학습 및 추론 예제 (p4/p5 인스턴스 권장)
- 성능 최적화: 최신 GPU 인스턴스 타입에 최적화된 설정 및 가이드
이 저장소는 다음을 제공합니다:
- 클러스터 관리 스크립트: HyperPod 클러스터 연결 및 설정 도구
- 분산 학습 예제: FSDP, Megatron-LM, TorchTitan을 사용한 대규모 모델 학습
- 검증 및 설치 스크립트: 클러스터 환경 검증 및 필수 도구 설치
- 한국어 가이드: 각 프레임워크별 상세한 한국어 문서
- AWS 서비스: SageMaker HyperPod (w/ Slurm), AWS ParallelCluster
- 분산 학습 프레임워크: PyTorch FSDP/FSDP2, DeepSpeed, Lightning, Megatron-LM, TorchTitan
- 컨테이너 런타임: Pyxis/Enroot (Slurm 컨테이너 지원)
- 네트워크: AWS EFA (Elastic Fabric Adapter)
📁 클릭하여 전체 구조 보기
aws-ai-infra-helper/
├── prepare-datasets.py # 데이터셋 준비 및 S3/FSx 동기화 스크립트
├── scripts/ # 유틸리티 스크립트
│ ├── hyperpod-connect.sh # SSM 기반 HyperPod 연결
│ ├── hyperpod-ssh.sh # SSH 기반 HyperPod 연결
│ ├── export-stack-outputs.sh # CloudFormation 스택 출력 추출
│ ├── create-dra.sh # FSx Lustre DRA 생성
│ ├── check-fsx.sh # FSx for Lustre 검증
│ ├── check-munged.sh # Slurm 연결 검증
│ ├── check-pyxis-enroot.sh # Pyxis/Enroot 설치 검증
│ ├── install-pyxis-enroot.sh # 컨테이너 지원 설치
│ ├── install-nccl-efa.sh # NCCL/EFA 설치
│ ├── fix-cuda-version.sh # CUDA 버전 확인 및 수정
│ └── generate-nccl-test.sh # NCCL 테스트 생성
│
├── lightning/ # Lightning 분산 학습
│ ├── README.md # Lightning 한국어 가이드
│ ├── train.py # PyTorch Lightning 구현
│ ├── train_fabric.py # Lightning Fabric 구현
│ ├── train.sbatch # PyTorch Lightning Slurm 스크립트
│ ├── train_fabric.sbatch # Lightning Fabric Slurm 스크립트
│ ├── train-pyxis.sbatch # Pyxis+Enroot 컨테이너 학습 스크립트
│ ├── Dockerfile # 컨테이너 이미지 빌드용
│ ├── setup-pyxis.sh # Pyxis+Enroot 환경 설정
│ ├── release.sh # 릴리즈 자동화 스크립트
│ └── RELEASE_NOTES.md # 상세 릴리즈 노트
│
├── fsdp/ # PyTorch FSDP 예제
│ ├── README.md # FSDP 한국어 가이드
│ ├── train-fsdp.sbatch # 멀티노드 학습 스크립트
│ ├── train-fsdp-singlegpu.sbatch # 단일 GPU 학습 스크립트
│ └── src/
│ ├── train.py # FSDP 학습 스크립트
│ ├── requirements.txt # Python 의존성
│ └── model_utils/ # 모델 유틸리티
│
├── fsdp2/ # PyTorch FSDP2 예제
│ ├── README.md # FSDP2 한국어 가이드
│ ├── train-fsdp2.sbatch # 멀티노드 학습 스크립트
│ ├── train-fsdp2-singlenode.sh # 단일 노드 학습 스크립트
│ ├── train-pyxis.sbatch # Pyxis+Enroot 컨테이너 학습 스크립트
│ ├── Dockerfile # 컨테이너 이미지 빌드용
│ ├── setup-pyxis.sh # Pyxis+Enroot 환경 설정
│ └── src/
│ ├── train_fsdp2.py # FSDP2 학습 스크립트
│ └── model_utils/ # 모델 유틸리티
│
├── deepspeed/ # DeepSpeed 예제
│ ├── README.md # DeepSpeed 영문 가이드
│ ├── train-qwen3-0-6b.sbatch # Qwen 3 0.6B 학습 스크립트
│ ├── train-qwen3-0-6b-singlenode.sh # 단일 노드 학습
│ ├── train-pyxis.sbatch # Pyxis+Enroot 컨테이너 학습 스크립트
│ ├── Dockerfile # 컨테이너 이미지 빌드용
│ ├── setup-pyxis.sh # Pyxis+Enroot 환경 설정
│ ├── ds_config.json # DeepSpeed 설정
│ └── src/
│ ├── train_deepspeed.py # DeepSpeed 학습 스크립트
│ └── model_utils/ # 모델 유틸리티
│
├── megatron/ # Megatron-LM 예제
│ ├── megatron-lm-slurm-guide-ko.md # Slurm 가이드
│ └── megatron-lm-eks-guide-ko.md # EKS 가이드
│
├── benchmark/ # NeMo Megatron-Bridge 벤치마크
│ ├── CUDA_GRAPH_NOTES.md # CUDA graph 이슈 A·B 분석 및 해결책
│ ├── env_check.sh # 전체 노드 환경 점검 스크립트 (공용)
│ ├── 25.11/ # NeMo 25.11.01 / Megatron-Bridge r0.2.0
│ │ ├── env.sh # 환경 변수 설정
│ │ ├── 01_prepare_environment.sh # 환경 준비 (레포·venv·sqsh)
│ │ ├── 02_run_basic.sh # 기본 벤치마크 실행
│ │ ├── 03_run_aws_optimized.sh # AWS 최적화 벤치마크 실행
│ │ └── presets/ # 모델별 파라미터 프리셋
│ └── 26.02/ # NeMo 26.02.01 / Megatron-Bridge v0.3.1
│ ├── env.sh # 환경 변수 설정
│ ├── 01_prepare_environment.sh # 환경 준비
│ ├── 02_run_basic.sh # 기본 벤치마크 실행
│ ├── 03_run_aws_optimized.sh # AWS 최적화 벤치마크 실행
│ ├── fix_nccl_setup.sh # NCCL 설정 자동 패치 (26.02 전용)
│ └── presets/ # 모델별 파라미터 프리셋
│
├── torchtitan/ # TorchTitan 예제
│ ├── README.md # TorchTitan 한국어 가이드
│ ├── train.sbatch # 멀티노드 학습 Slurm 스크립트
│ ├── multinode_trainer.slurm # 멀티노드 트레이너 Slurm 스크립트
│ ├── run_train.sh # 학습 실행 쉘 스크립트
│ ├── benchmarks/ # 벤치마크 설정 및 스크립트
│ ├── scripts/ # 유틸리티 스크립트
│ └── torchtitan/ # TorchTitan 소스 코드
│
├── observability/ # 모니터링 및 관찰성 도구
│ ├── install_observability.py # 통합 설치 스크립트
│ ├── run-observability.sh # 관찰성 도구 실행
│ ├── stop_observability.py # 관찰성 도구 중지
│ ├── install_node_exporter.sh # Node Exporter 설치
│ ├── install_dcgm_exporter.sh # DCGM Exporter 설치
│ ├── install_efa_exporter.sh # EFA Exporter 설치
│ ├── install_slurm_exporter.sh # Slurm Exporter 설치
│ ├── install_otel_collector.sh # OpenTelemetry Collector 설치
│ ├── otel_config/ # OTel 설정 파일
│ └── dcgm_metrics_config/ # DCGM 메트릭 설정
│
└── eks/ # EKS 관련 도구 및 가이드
├── setup/ # EKS 학습 클러스터 설정
│ ├── README.md # EKS 학습 가이드
│ ├── 1.create-config.sh # 환경 설정 생성
│ ├── 1.create-config-workshop.sh # Workshop Studio용 환경 설정
│ ├── 2.setup-eks-access.sh # EKS 접근 권한 설정
│ ├── 3.validate-cluster.sh # 클러스터 검증
│ └── check-nodegroup.sh # NodeGroup 정보 확인
│
├── inference/ # HyperPod EKS 추론 솔루션
│ ├── README.md # HyperPod EKS Inference 가이드
│ ├── install_tools.sh # 필수 도구 설치 스크립트
│ ├── explore_fsx.sh # FSx 탐색 도구
│ │
│ ├── basic/ # 기본 추론 환경
│ │ ├── README.md # 기본 추론 배포 가이드
│ │ ├── 1.grant_eks_access.sh # EKS 접근 권한 설정
│ │ ├── 2.prepare_fsx_inference.sh # FSx 기반 추론 환경 준비
│ │ ├── 3.copy_to_s3.sh # 모델을 S3에 복사
│ │ ├── 4.fix_s3_csi_credentials.sh # S3 CSI 자격증명 수정
│ │ ├── 5a.prepare_s3_inference_operator.sh # S3 Inference Operator 배포
│ │ ├── 5b.prepare_s3_direct_deploy.sh # S3 Direct 배포
│ │ ├── 6a.create_test_pod.sh # 테스트 Pod 생성
│ │ ├── invoke.py # 기본 추론 테스트
│ │ └── template/ # Kubernetes 배포 템플릿
│ │ ├── deploy_S3_inference_operator_template.yaml
│ │ ├── deploy_S3_direct_template.yaml
│ │ ├── deploy_fsx_lustre_inference_operator_template.yaml
│ │ └── copy_to_fsx_lustre_template.yaml
│ │
│ └── kvcache-and-intelligent-routing/ # 고급 추론 최적화
│ ├── README.md # KV Cache & Intelligent Routing 가이드
│ ├── 1.copy_to_s3.sh # 모델을 S3에 복사
│ ├── 2.setup_s3_csi.sh # S3 CSI 설정
│ ├── 3.prepare.sh # 환경 준비
│ ├── 4.check_status.sh # 상태 확인
│ ├── cleanup.sh # 리소스 정리
│ ├── benchmark.py # 고성능 벤치마크
│ ├── invoke.py # 추론 테스트
│ └── inference_endpoint_config.yaml # 추론 엔드포인트 설정
│
└── task-governance/ # HyperPod EKS Task Governance
├── README.md # Task Governance 가이드
├── setup-task-governance.sh # Task Governance 설정 스크립트
├── g5.8xlarge/ # g5.8xlarge 인스턴스용 설정
└── g5.12xlarge/ # g5.12xlarge 인스턴스용 설정
- scripts/ - 클러스터 연결, 환경 검증, 설치 스크립트
- observability/ - 모니터링 및 관찰성 도구 (Prometheus, Grafana 등)
- benchmark/25.11/ - NeMo 25.11.01 / Megatron-Bridge r0.2.0 벤치마크
- benchmark/26.02/ - NeMo 26.02.01 / Megatron-Bridge v0.3.1 벤치마크
- benchmark/CUDA_GRAPH_NOTES.md - CUDA graph 이슈 분석 및 해결책
- lightning/ - PyTorch Lightning + Lightning Fabric 이중 프레임워크
- fsdp/ - PyTorch 네이티브 FSDP 분산 학습
- fsdp2/ - 차세대 FSDP2 (PyTorch 2.5+)
- deepspeed/ - Microsoft DeepSpeed ZeRO 최적화
- megatron/ - NVIDIA Megatron-LM 대규모 모델 학습
- torchtitan/ - Meta TorchTitan 최신 학습 플랫폼
- eks/training/ - EKS 기반 학습 클러스터 설정
- eks/inference/ - HyperPod EKS Inference 솔루션
- basic/ - 기본 추론 환경 (FSx/S3 기반)
- kvcache-and-intelligent-routing/ - 고급 추론 최적화
# 헤드 노드 연결
./scripts/hyperpod-connect.sh
# 특정 클러스터 지정
./scripts/hyperpod-connect.sh --cluster-name my-cluster./scripts/hyperpod-ssh.sh --cluster-name my-cluster# FSx for Lustre 마운트 확인
./scripts/check-fsx.sh
# Slurm 연결 확인
./scripts/check-munged.sh
# Pyxis/Enroot 설치 확인 (컨테이너 사용 시)
./scripts/check-pyxis-enroot.sh# Pyxis 및 Enroot 설치 (컨테이너 런타임)
sudo ./scripts/install-pyxis-enroot.sh
# NCCL 및 EFA 라이브러리 설치
./scripts/install-nccl-efa.shHyperPod 클러스터에서 로컬 데이터셋을 사용하려면 두 가지 방법 중 선택할 수 있습니다.
S3 동기화나 DRA 설정 없이 /fsx/data/ 에 바로 다운로드합니다:
# 데이터셋을 /fsx/data/pretrain/ 또는 /fsx/data/sft/ 에 직접 저장
uv run prepare-datasets.py --local-only
# 저장 경로를 변경하려면 (기본값: /fsx/data)
uv run prepare-datasets.py --local-only --local-base-dir /fsx/data다운로드가 완료되면 다음 경로에서 데이터셋을 바로 사용할 수 있습니다:
- Pre-training:
/fsx/data/pretrain/<dataset-name>/ - SFT:
/fsx/data/sft/<dataset-name>/
# 1. 스택 정보 추출 및 환경변수 설정
./scripts/export-stack-outputs.sh hyperpod-cluster-name
source stack-env-vars.sh
# 2. FSx Lustre DRA (Data Repository Association) 생성
./scripts/create-dra.sh
# 3. 데이터셋 다운로드 및 S3/FSx 동기화
uv run prepare-datasets.py이 과정을 통해 선택한 데이터셋이 S3와 FSx Lustre에 자동으로 동기화됩니다.
사용 가능한 데이터셋:
Pre-training 용도:
- wikitext-2: Language modeling dataset (~36k samples)
- wikitext-103: Large language modeling dataset (limited to 180k)
Supervised Fine-tuning (SFT) 용도:
- emotion: Emotion classification with 6 emotions (~20k samples)
- sst2: Stanford Sentiment Treebank binary classification (~67k samples)
- cola: Corpus of Linguistic Acceptability (~8.5k samples)
- rte: Recognizing Textual Entailment (~2.5k samples)
- imdb: Movie review sentiment analysis (~50k samples)
- ag_news: News categorization into 4 classes (~120k samples)
- yelp_polarity: Yelp review sentiment analysis (limited to 100k)
- glan-qna-kr: Korean Q&A dataset (limited to 150k samples)
각 프레임워크별 상세 가이드를 참고하세요.
| 프레임워크 | 설명 | 가이드 |
|---|---|---|
| Lightning | PyTorch Lightning + Lightning Fabric 이중 프레임워크 | lightning/README.md |
| FSDP | PyTorch 네이티브 FSDP 분산 학습 | fsdp/README.md |
| FSDP2 | 차세대 FSDP2 (PyTorch 2.5+) | fsdp2/README.md |
| DeepSpeed | Microsoft DeepSpeed ZeRO 최적화 | deepspeed/README.md |
| Megatron-LM | NVIDIA Megatron-LM 대규모 모델 학습 | megatron/megatron-lm-slurm-guide-ko.md |
| TorchTitan | Meta TorchTitan PyTorch 네이티브 학습 플랫폼 | torchtitan/README.md |
| 스크립트 | 설명 | 사용법 |
|---|---|---|
hyperpod-connect.sh |
SSM 기반 HyperPod 연결 | ./scripts/hyperpod-connect.sh [--cluster-name NAME] |
hyperpod-ssh.sh |
SSH 기반 HyperPod 연결 | ./scripts/hyperpod-ssh.sh --cluster-name NAME |
| 스크립트 | 설명 | 사용법 |
|---|---|---|
check-fsx.sh |
FSx for Lustre 마운트 확인 | ./scripts/check-fsx.sh |
check-munged.sh |
Slurm 연결 확인 | ./scripts/check-munged.sh |
check-pyxis-enroot.sh |
Pyxis/Enroot 설치 확인 | ./scripts/check-pyxis-enroot.sh |
| 스크립트 | 설명 | 사용법 |
|---|---|---|
install-pyxis-enroot.sh |
Pyxis/Enroot 설치 | sudo ./scripts/install-pyxis-enroot.sh |
install-nccl-efa.sh |
NCCL 및 EFA 라이브러리 설치 | ./scripts/install-nccl-efa.sh |
| 스크립트 | 설명 | 사용법 |
|---|---|---|
fix-cuda-version.sh |
CUDA 버전 확인 및 수정 | ./scripts/fix-cuda-version.sh |
generate-nccl-test.sh |
NCCL 테스트 생성 | ./scripts/generate-nccl-test.sh |
클러스터의 네트워크 성능을 테스트하려면:
# NCCL 테스트 스크립트 생성
./scripts/generate-nccl-test.sh
# 생성된 스크립트 실행
sbatch nccl-test.sbatch대부분의 학습 스크립트는 AWS EFA 및 NCCL 최적화를 위한 환경 변수를 포함합니다:
# EFA 설정
export FI_PROVIDER=efa
export FI_EFA_USE_HUGE_PAGE=0
export FI_EFA_SET_CUDA_SYNC_MEMOPS=0
# NCCL 설정
export NCCL_DEBUG=INFO
export NCCL_SOCKET_IFNAME=^docker,lo,veth,eth
# HuggingFace 타임아웃
export HF_HUB_ETAG_TIMEOUT=60모든 학습 스크립트는 HyperPod의 자동 재시작 기능을 지원합니다. 노드 장애 시 마지막 체크포인트에서 자동으로 학습을 재개합니다.
# 자동 재시작 활성화 (스크립트에 포함됨)
if [ -d "/opt/sagemaker_cluster" ]; then
AUTO_RESUME="--auto-resume=1"
fi# 작업 제출
sbatch script.sbatch
# 작업 상태 확인
squeue
squeue -u $USER
# 작업 취소
scancel <JOB_ID>
# 노드 정보
sinfo
sinfo -N -l
# 작업 상세 정보
scontrol show job <JOB_ID>
# 파티션 정보
scontrol show partition연결, Slurm, 네트워크, GPU 관련 문제 해결 방법은 TROUBLE_SHOOTING.md를 참고하세요.
- EFA 사용 (Enhanced Networking)
- NCCL 버퍼 크기 조정:
export NCCL_BUFFSIZE=2097152 - 비동기 에러 처리:
export NCCL_ASYNC_ERROR_HANDLING=1
- Activation checkpointing 활성화
- 혼합 정밀도 학습 (BF16/FP16)
- Gradient accumulation으로 효과적인 배치 크기 증가
- 필요시 CPU offloading (성능 저하 주의)
- torch.compile 사용 (PyTorch 2.0+)
- Flash Attention 활용
- 최적의 병렬화 전략 선택 (TP, PP, DP 조합)
이슈 및 풀 리퀘스트를 환영합니다!
MIT-0 License - 자유롭게 사용, 수정, 배포 가능합니다.