Назад | Перейти на главную страницу

Контейнеры для пакетной обработки HPC

Мы сталкиваемся с проблемой, что многие люди хотят запускать различное научное программное обеспечение на нашем высокопроизводительном вычислительном кластере. Каждому пользователю требуется свой набор библиотек и версий библиотек, и мы не хотим, чтобы администратор каждый раз занимался установкой новой библиотеки.

Поэтому мы думаем об использовании для этой цели контейнеров-докеров: каждый пользователь может настроить свой собственный контейнер с необходимыми ему библиотеками, а затем запускать задания пакетной обработки, используя этот контейнер.

Однако, как мне кажется, докер в основном ориентирован на Сервисы вместо того пакетная обработка заданий: обычно у вас есть (например, веб-служба), которая должна работать все время и обрабатывать новые задания (что в основном всегда одна и та же задача с новыми входными данными), как только они поступают.

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

Поэтому мне интересно, есть ли уже решение для этого сценария. Я смотрел на https://github.com/NERSC/shifter который, кажется, идет в правильном направлении, но развитие застопорилось.

Мы широко используем докер-контейнеры для временных пакетных заданий. В нашем случае это интенсивная обработка трехмерных изображений, но каждый контейнер обрабатывает «пакет» из тысяч связанных изображений. Мы обнаружили, что этот вариант использования работает очень хорошо, нет причин не использовать для него докер.

Вот несколько вещей, о которых следует подумать при разработке решения:

  1. Все ли люди, отправляющие код, доверяют? Если нет, вам нужно долго думать о безопасности.
  2. Убедитесь, что вы запускаете свои контейнеры с -rm флаг, чтобы контейнеры автоматически удалялись по завершении.
  3. Запустите локальный реестр докеров, чтобы 1) вы не зависели от внешнего реестра и 2) вы могли настроить свой сервер пакетной обработки для автоматического получения изображений по мере необходимости.
  4. Следите за изображениями, которые не использовались какое-то время, и удаляйте их с сервера.

ProActive от ActiveEon - это пакетный планировщик, изначально разработанный для кластеров HPC. Он включает функцию запуска задач в контейнерах. Эта статья проходит демонстрацию с пакетами R в контейнере Docker.

По вопросам дизайна:

  1. Рабочие процессы можно хранить в каталоге с помощью RBAC. Можно создать защищенный процесс, чтобы добавить их в него.
  2. Контейнеры автоматически удаляются после выполнения задачи.
  3. По мере необходимости.
  4. Можно построить рабочий процесс для регулярного отслеживания и удаления неиспользуемых изображений из различных ресурсов.

Наконец, дополнительная функция - это возможность работать в облаке (общедоступном или частном), если требуется дополнительная емкость.