Слurm неправильно распределяет GPU

Вопрос или проблема

Я использую Slurm 21.08.5, установленный через apt.

Мой кластер состоит из 4 GPU машин (nd-gpu[001-005]) с 8 GPU в каждой. Я могу запускать задания следующим образом:

srun --gres=gpu:8 nvidia-smi -L

И я вижу свои GPU. Я также могу планировать реальные задания с любым числом GPU от 0 до 8. Однако планирование ресурсов работает неправильно.

Если я запускаю:

srun --gres=gpu:1 sleep 1000

Вся нода будет выделена, и я не смогу использовать оставшиеся 7 GPU на этой ноде.

Следующий файл gres.conf:

NodeName=nd-gpu001 Name=gpu File=/dev/nvidia0
NodeName=nd-gpu001 Name=gpu File=/dev/nvidia1
NodeName=nd-gpu001 Name=gpu File=/dev/nvidia2
NodeName=nd-gpu001 Name=gpu File=/dev/nvidia3
NodeName=nd-gpu001 Name=gpu File=/dev/nvidia4
NodeName=nd-gpu001 Name=gpu File=/dev/nvidia5
NodeName=nd-gpu001 Name=gpu File=/dev/nvidia6
NodeName=nd-gpu001 Name=gpu File=/dev/nvidia7
NodeName=nd-gpu002 Name=gpu File=/dev/nvidia0
NodeName=nd-gpu002 Name=gpu File=/dev/nvidia1
NodeName=nd-gpu002 Name=gpu File=/dev/nvidia2
NodeName=nd-gpu002 Name=gpu File=/dev/nvidia3
NodeName=nd-gpu002 Name=gpu File=/dev/nvidia4
NodeName=nd-gpu002 Name=gpu File=/dev/nvidia5
NodeName=nd-gpu002 Name=gpu File=/dev/nvidia6
NodeName=nd-gpu002 Name=gpu File=/dev/nvidia7
NodeName=nd-gpu003 Name=gpu File=/dev/nvidia0
NodeName=nd-gpu003 Name=gpu File=/dev/nvidia1
NodeName=nd-gpu003 Name=gpu File=/dev/nvidia2
NodeName=nd-gpu003 Name=gpu File=/dev/nvidia3
NodeName=nd-gpu003 Name=gpu File=/dev/nvidia4
NodeName=nd-gpu003 Name=gpu File=/dev/nvidia5
NodeName=nd-gpu003 Name=gpu File=/dev/nvidia6
NodeName=nd-gpu003 Name=gpu File=/dev/nvidia7
NodeName=nd-gpu004 Name=gpu File=/dev/nvidia0
NodeName=nd-gpu004 Name=gpu File=/dev/nvidia1
NodeName=nd-gpu004 Name=gpu File=/dev/nvidia2
NodeName=nd-gpu004 Name=gpu File=/dev/nvidia3
NodeName=nd-gpu004 Name=gpu File=/dev/nvidia4
NodeName=nd-gpu004 Name=gpu File=/dev/nvidia5
NodeName=nd-gpu004 Name=gpu File=/dev/nvidia6
NodeName=nd-gpu004 Name=gpu File=/dev/nvidia7

файл slurm.conf:

# См. страницу man для slurm.conf для получения дополнительной информации.  
#  
ClusterName=cluster  
SlurmctldHost=nd-cpu01  
SlurmctldHost=nd-cpu02  
#  

#GresTypes=  
#GroupUpdateForce=0  

ProctrackType=proctrack/cgroup  
ReturnToService=1  
SlurmctldPidFile=/var/run/slurmctld.pid  
SlurmctldPort=6817  
SlurmdPidFile=/var/run/slurmd.pid  
SlurmdPort=6818  
SlurmdSpoolDir=/var/spool/slurmd  
SlurmUser=slurm  
StateSaveLocation=/home/slurm/slurmctd  
TaskPlugin=task/affinity,task/cgroup  

# ТАЙМЕРЫ  
InactiveLimit=0  
KillWait=30  

MinJobAge=300  

SlurmctldTimeout=120  
SlurmdTimeout=300  
Waittime=0  

# ПЛАНИРОВАНИЕ  
SchedulerType=sched/backfill  
SelectType=select/cons_tres  

# ЖУРНАЛИРОВАНИЕ И УЧЕТ  
JobCompType=jobcomp/none  
JobAcctGatherFrequency=30  
SlurmctldDebug=info  
SlurmctldLogFile=/var/log/slurmctld.log  
SlurmdDebug=info  
SlurmdLogFile=/var/log/slurmd.log  

# ВЫЧИСЛИТЕЛЬНЫЕ НОДЫ  
GresTypes=gpu
NodeName=nd-gpu[001-004] Sockets=2 CoresPerSocket=56 ThreadsPerCore=1 State=UNKNOWN Gres=gpu:8
PartitionName=debug Nodes=ALL Default=YES MaxTime=INFINITE State=UP

и файл cgroups.conf:

ConstrainDevices=yes

Ответ или решение

Проблема, с которой вы сталкиваетесь, связана с неправильным распределением ресурсов GPU в вашем кластере Slurm. Когда вы запускаете команду srun --gres=gpu:1 sleep 1000, и вся нода занимает все 8 GPU, это может быть связано с несколькими факторами, которые мы рассмотрим ниже.

Возможные причины проблемы и решения

  1. Конфигурация GRES (Generic Resources):
    Убедитесь, что ваша настройка gres.conf правильно определяет ресурсы GPU на каждой узле. Ваш файл gres.conf, судя по предоставленным данным, выглядит корректно, так как он перечисляет каждый GPU на каждой ноде. Однако, проверьте, чтобы GresTypes=gpu было явно указано в slurm.conf.

  2. Опции SelectType и SelectTypeParameters:
    Параметр в файле slurm.conf SelectType=select/cons_tres является верным, но не забудьте также указать параметры SelectTypeParameters для правильной конфигурации ресурсов. Убедитесь, что вы добавили SelectTypeParameters=CR_CPU,Gres, если вы используете только ресурсы GPU.

  3. Проверка состояния узлов:
    Выполните команду sinfo для проверки состояния ваших узлов. Убедитесь, что они находятся в состоянии UP и доступны для работы. Также можно использовать команду scontrol show nodes, чтобы увидеть детальную информацию о каждом узле, включая доступные ресурсы и статус.

  4. Ресурсные ограничения:
    Проверьте, нет ли установленных ограничений в вашей конфигурации на использование ресурсов. В параметрах запуска вы можете задать дополнительные ограничения в зависимости от ваших нужд. Например, если у вас есть ограничения по количеству запущенных задач на один узел, это может повлиять на выделение ресурсов.

  5. Классы ресурсов (partition):
    Убедитесь, что ваша конфигурация PartitionName=debug Nodes=ALL Default=YES MaxTime=INFINITE State=UP не накладывает никаких дополнительных ограничений на использование GPU.

  6. Логи Slurm:
    Проверьте логи Slurm (/var/log/slurmctld.log и /var/log/slurmd.log) на наличие ошибок или предупреждений. Это может дать вам подсказки о том, почему ресурсы распределяются неправильно. Обратите внимание на сообщения об ошибках и предупреждениях, которые могут говорить о проблемах с конфигурацией или взаимодействием между компонентами.

  7. Тестирование с учетом более поздней версии:
    Рассмотрите возможность обновления вашей версии Slurm. Версия 21.08.5 может иметь известные ошибки, которые были исправлены в более поздних версиях.

Пример изменения конфигурационного файла

Добавление параметра SelectTypeParameters в slurm.conf:

SelectTypeParameters=CR_CPU,Gres

После внесения изменений в конфигурационные файлы не забудьте перезапустить службы Slurm:

sudo systemctl restart slurmctld
sudo systemctl restart slurmd

Заключение

При тщательном анализе ваших конфигурационных файлов и логов, а также проверке состояния узлов, вы сможете устранить проблему с выделением GPU в вашем кластере. Убедитесь, что все настройки пропорциональны вашим требованиям и, при необходимости, обратитесь к документации Slurm для получения дополнительных рекомендаций. Если проблема сохраняется, рассмотрите возможность обращения в сообщество поддержки Slurm или на форумы, где специалисты смогут оказать вам дополнительную помощь.

Оцените материал
Добавить комментарий

Капча загружается...