LabHub

HPC 와 Slurm · 노드·파티션·GRES 정의 · 실습

GPU 를 GRES 로 정의하기

LabHub 에서 이어서 보기

목표

slurm.confgres.conf 를 함께 작성해 GPU 를 GRES 로 정의하고, 두 파일의 개수 일치를 검증합니다.

왜 중요한가

GRES 설정 오류 1위는 slurm.conf 의 GPU 개수와 gres.conf 의 장치 개수 불일치입니다. slurm.confgpu:a100:8 이라고 적었는데 gres.confFile=/dev/nvidia[0-3] 이면 4개뿐이고, slurmd 가 count reported lower than configured 를 남기며 노드를 DRAIN 시킵니다. 이 검증은 배포 전에 스크립트로 자동화해야 하는 대표적인 항목입니다.

그리고 Cores= 로 NUMA 친화도를 알려 주면 Slurm 이 GPU 와 CPU 를 같은 소켓에 배치해 PCIe 왕복을 줄입니다. 대규모 학습에서 이 차이가 몇 퍼센트씩 납니다.

앞 실습(slurm-conf)에서 만든 /etc/slurm/slurm.conf 를 이어서 씁니다.

단계

1. /etc/slurm/slurm.confGresTypes=gpu 를 추가하세요.
2. 세 노드의 NodeName 줄에 Gres=gpu:a100:4 를 추가하세요.
3. /etc/slurm/gres.conf 를 만드세요. 세 노드 각각에 대해 NodeName=, Name=gpu, Type=a100, File= 을 포함한 줄이 있어야 하고, File 은 장치 4개를 가리켜야 합니다.
4. gpu-node01 에 대해서는 장치를 하나씩 네 줄로 나눠 쓰고, /dev/nvidia0, /dev/nvidia1Cores=0-15, /dev/nvidia2, /dev/nvidia3Cores=16-31 로 지정하세요. (나머지 두 노드는 3번의 범위 표기 그대로 두어도 됩니다.)
5. /etc/slurm/slurm.conf 에 GPU 전용 파티션 gpu 를 추가하세요. Nodes= 는 세 노드 전부, MaxTime=72:00:00, State=UP 입니다.
6. /root/slurm/gres-check.txt 를 다음 두 줄로 만드세요. 값은 설정 파일을 파싱해 얻은 실제 개수입니다.
SLURM_CONF_GPUS=<slurm.conf 의 Gres 로 선언된 GPU 총 개수> / GRES_CONF_DEVICES=<gres.conf 의 File 이 가리키는 장치 총 개수>
두 값이 같아야 합니다.
7. /root/slurm/autodetect.txt 를 다음 3줄로 만드세요.
AUTODETECT=nvml / NEEDS=nvml-library / MANUAL_PRO=reproducible
8. /root/slurm/gres-report.txt 를 다음 4줄로 만드세요.
GRESTYPES=gpu / NODES=3 / GPUS_PER_NODE=4 / PARTITIONS=<slurm.conf 의 PartitionName 줄 수>

참고

단계 8개

  1. GRES 타입 선언
  2. 노드별 GPU 선언
  3. gres.conf 작성
  4. NUMA 친화도 표기
  5. GPU 전용 파티션
  6. 개수 일치 검증
  7. AutoDetect 비교 메모
  8. GRES 설계 보고서