GPU 자원과 스케줄링¶
GPU 배정은 Kubernetes 가 한다. 사용자는 GPU 를 고르지 않는다.
| 계층 | 무엇 | 어디 |
|---|---|---|
| 노드가 GPU 광고 | nvidia device plugin (Ubuntu 20.04 호스트) 또는 GPU Operator (24.04) 가 nvidia.com/gpu 등록 |
infra/k3s/nodes/<host>.env GPU_VISIBLE_DEVICES |
| 파드가 요청 | train/evaluate/ray-worker 파드에 limits: nvidia.com/gpu: 1, runtimeClassName: nvidia |
infra/argo/*.yaml |
| 배치·대기 | 빈 GPU 가 있는 노드에 배치. 없으면 Pending. 빈 슬롯이 생기면 자동 시작 |
k8s 스케줄러 |
| 우선순위 | deadline 이 explore 를 선점. 72h 초과 explore 는 선점 대상 |
PriorityClass |
| 프로젝트 상한 | 네임스페이스 ResourceQuota 기본 2장. 기간 지정 신청으로 4장 |
콘솔 설정 → 쿼터 |
| 관측 | DCGM exporter → Prometheus. 85°C 5분이면 GPUHot 알림 |
Grafana RLflow · Cluster |
규칙:
- 런당 GPU 1장. 멀티노드 학습은 지원하지 않는다.
- 스윕은 trial 당 1장 ×
max_concurrent. - 클러스터는 하나이고 노드가 늘면 슬롯이 는다. 2노드 × 4장 = 슬롯 8개.
- Kubernetes 는 자기 밖에서 도는 프로세스를 모른다. 노드에 SSH 로 들어가 직접 GPU 를 잡으면 스케줄러와 충돌한다. GPU 학습은 콘솔·CLI 로만 제출한다.
콘솔 런 제출 3단계와 개요에 클러스터 used / allocatable, 프로젝트 used / quota 가 보인다. deadline 런이 30분 이상 대기하면 admin 에게 알림이 간다.