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

Справочная информация

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

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

Требования

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

То, что я пробовал до сих пор

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

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

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

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

Мой вопрос

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

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

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

1 Ответ

0 голосов
/ 23 ноября 2018

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

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

Мне удалось найти образ докера с примерами, которые "неофициально поддерживают совместное использование графических процессоров" , доступные здесь 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 GPU внутри контейнера для запуска вашей работы, а также заблокирует те2 графических процессора от дальнейшего использования до завершения задания.

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

Также вы можете прочитать о Расписание GPU , которое все еще является экспериментальным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...