Настройка многопользовательского планировщика заданий для задач Data Science / ML

Фон

Недавно моя лаборатория инвестировала в вычислительную инфраструктуру на GPU. Более конкретно: два TitanV установлены на стандартном серверном компьютере. В настоящее время на машине запущен ненастроенный Windows Server. Каждый из моей лаборатории может войти в систему и делать все, что захочет. Время от времени случается, что машина совершенно бесполезна для окружающих, потому что кто-то случайно занял всю доступную память.

С тех пор ML здесь растет. Я ищу лучший способ использовать нашу инфраструктуру.

Requierments

  • Многопользовательский. Кандидаты и студенты должны иметь возможность выполнять свои задачи.
  • Очередь заданий или планирование (желательно что-то вроде временного планирования)
  • Динамическое распределение ресурсов. Если выполняется одна задача, можно использовать всю память, но как только запускается вторая, они должны совместно использовать ресурсы.
  • Простое / удаленное предоставление работы: может быть, веб-страница?

Что я пробовал до сих пор

У меня есть небольшая тестовая установка (потребительский ПК с GTX 1070) для экспериментов. Мои интернет-исследования указали мне на SLURM и Kubernetes.

Прежде всего мне нравится идея системы управления кластером, поскольку она предлагает возможность расширения инфраструктуры в будущем.

SLURM был довольно прост в настройке, но я не смог настроить что-то вроде удаленной отправки или планирования временных интервалов.

В то же время я также пытался работать с Kubernetes. Для меня это предлагает более интересные функции, прежде всего контейнеризацию. Однако все эти функции усложняют настройку и понимание. И снова я не смог построить что-то вроде удаленной регистрации.

Мой вопрос

Кто-нибудь сталкивался с такой же проблемой и может сообщить о своем решении? У меня такое чувство, что Кубернетес лучше подготовлен к будущему.

Если вам нужна дополнительная информация, дайте мне знать.

Спасибо, Тим!

1 ответ

Насколько мне известно, Kubernetes не поддерживает совместное использование GPU, о котором здесь спрашивали.

Продолжается дискуссия. Возможно ли совместное использование GPU для нескольких контейнеров? # 52757

Мне удалось найти образ докера с примерами, которые "неофициально поддерживают совместное использование графических процессоров", доступный здесь https://hub.docker.com/r/cvaldit/nvidia-k8s-device-plugin/.

Это можно использовать следующим образом:

apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: containers: - name: cuda-container image: nvidia/cuda:9.0-devel resources: limits: nvidia.com/gpu: 2 # requesting 2 GPUs - name: digits-container image: nvidia/digits:6.0 resources: limits: nvidia.com/gpu: 2 # requesting 2 GPUs

Это позволит выставить 2 графических процессора внутри контейнера для выполнения вашей работы, а также заблокировать эти 2 графических процессора от дальнейшего использования до завершения задания.

Я не уверен, как вы масштабируете их для нескольких пользователей, иначе как ограничите их максимальным количеством используемых графических процессоров на задание.

Также вы можете прочитать о расписании графических процессоров, которые все еще являются экспериментальными.

Другие вопросы по тегам