3.2 KiB
3.2 KiB
nccl-perftest Helm Chart
Multi-node NCCL 분산 학습 성능 테스트를 위한 Helm chart. VGG11 + CIFAR-10 기반 torchrun 분산 학습을 StatefulSet으로 배포한다.
Prerequisites
- Kubernetes 1.24+
- Helm 3.x
- NVIDIA GPU Operator 설치
- Multus CNI + hostdevice NAD 구성
- InfiniBand 장치 (
/dev/infiniband)
Helm Repo (Harbor OCI)
# Harbor 로그인
helm registry login harbor.inje-private.com -u admin
# Chart pull
helm pull oci://harbor.inje-private.com/nccl-perftest/nccl-perftest --version 0.1.0
Install
# 기본 설치 (values.yaml 기본값 사용)
helm install nccl-perftest ./nccl-perftest
# 릴리스 이름 지정
helm install my-release ./nccl-perftest
# OCI 레지스트리에서 직접 설치
helm install nccl-perftest oci://harbor.inje-private.com/nccl-perftest/nccl-perftest --version 0.1.0
Uninstall
helm uninstall nccl-perftest
Values 설정
커스텀 values 파일 사용
helm install nccl-perftest ./nccl-perftest -f my-values.yaml
CLI로 개별 값 오버라이드
# 노드 수 변경 (3노드)
helm install nccl-perftest ./nccl-perftest --set replicaCount=3
# GPU 수 + 노드 수 동시 변경
helm install nccl-perftest ./nccl-perftest \
--set replicaCount=4 \
--set resources.gpu=4 \
--set training.nprocPerNode=4
# 이미지 태그 변경
helm install nccl-perftest ./nccl-perftest --set image.tag="24.12-py3"
# NCCL 디버그 옵션
helm install nccl-perftest ./nccl-perftest \
--set nccl.ibHCA="mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3" \
--set nccl.debugFile="/tmp/nccl-%h-%p.log"
Values Reference
| Key | Default | Description |
|---|---|---|
nameOverride |
nccl-test |
리소스 이름 |
replicaCount |
2 |
노드(Pod) 수. NNODES에 자동 반영 |
image.repository |
nvcr.io/nvidia/pytorch |
컨테이너 이미지 |
image.tag |
24.10-py3 |
이미지 태그 |
image.pullPolicy |
IfNotPresent |
이미지 풀 정책 |
training.nprocPerNode |
8 |
노드당 GPU 프로세스 수 |
training.masterPort |
29500 |
마스터 rendezvous 포트 |
training.batchSize |
1200 |
글로벌 배치 사이즈 |
training.epochs |
90 |
학습 에포크 수 |
training.lr |
0.01 |
학습률 |
resources.gpu |
8 |
nvidia.com/gpu 요청 수 |
resources.hostdev |
2 |
nvidia.com/hostdev 요청 수 |
shmSize |
128Gi |
/dev/shm 크기 |
network.nadName |
hostdevice-net |
Multus NAD 이름 |
nccl.debug |
INFO |
NCCL_DEBUG 레벨 |
nccl.debugSubsys |
INIT,NET,IB |
NCCL_DEBUG_SUBSYS |
nccl.ibDisable |
0 |
NCCL_IB_DISABLE (0=IB 사용) |
nccl.socketIfname |
net |
NCCL_SOCKET_IFNAME |
nccl.ibHCA |
"" |
NCCL_IB_HCA (비어있으면 미설정) |
nccl.debugFile |
"" |
NCCL_DEBUG_FILE (비어있으면 미설정) |
volumes.infiniband.hostPath |
/dev/infiniband |
IB 장치 경로 |
volumes.dataset.hostPath |
/home/ubuntu/cifar-10-batches-py |
CIFAR-10 데이터셋 경로 |
예시: 3노드 4GPU 설정
# my-values.yaml
replicaCount: 3
training:
nprocPerNode: 4
batchSize: 600
resources:
gpu: 4
hostdev: 1
nccl:
ibHCA: "mlx5_0,mlx5_1"
helm install nccl-3node ./nccl-perftest -f my-values.yaml