Контейнеры HPC в любом масштабе с использованием Podman
Узнайте, как Podman модифицируется для крупномасштабной работы в сфере высокопроизводительных вычислений (HPC).
В этой статье описывается недавняя работа, проделанная NERSC в сотрудничестве с Red Hat по модификации Podman (инструмента управления модулями) для крупномасштабной работы, что является ключевым требованием для высокопроизводительных вычислений (HPC). Podman — это инструмент с открытым исходным кодом для разработки, управления и запуска контейнеров в системах Linux. Более подробную информацию об этой работе можно найти в нашей статье, которая будет опубликована в материалах CANOPIE-HPC Supercomputing 2022.
В следующем демонстрационном видеоролике мы покажем, как загрузить изображение в Perlmutter из реестра NERSC, сгенерировать сжатую версию изображения с помощью podman-hpc и запустить тест EXAALT в большом масштабе (900 узлов, 3600 графических процессоров) через наш <код. >podman-exec оболочка. Флагманской суперкомпьютерной системой NERSC является Perlmutter, которая в настоящее время занимает 7-е место в списке 500 лучших. Он имеет раздел графического процессора с более чем 6000 графическими процессорами NVIDIA A100 и раздел ЦП с более чем 6000 процессорами AMD Milan. Вся работа, описанная в этом сообщении блога, была выполнена на Perlmutter.
NERSC, Национальный научно-вычислительный центр энергетических исследований, является вычислительным центром производственной миссии Министерства энергетики США, который обслуживает Управление науки Министерства энергетики США, которое финансирует широкий спектр фундаментальных и прикладных исследований. В первой половине 2022 года более 700 уникальных пользователей использовали Shifter, текущее контейнерное решение NERSC, и общий интерес пользователей к контейнерам растет.
Хотя NERSC продемонстрировал практически «голую производительность» с Shifter в больших масштабах, несколько недостатков побудили нас изучить Podman. Основным фактором является то, что Shifter не предоставляет никаких утилит сборки. Пользователи должны создавать контейнеры в своей локальной системе и отправлять свои образы в NERSC через реестр. Еще одним препятствием является то, что Shifter обеспечивает безопасность, ограничивая работающий контейнер привилегиями пользователя, который его запустил. Наконец, Shifter в основном является «внутренним» решением, поэтому пользователи должны изучать новую технологию, а персонал NERSC несет дополнительную нагрузку по поддержке этого программного обеспечения.
Podman предлагает решение всех этих основных проблем. Podman — это инфраструктура, совместимая с OCI, которая соответствует набору стандартов сообщества. Он будет знаком пользователям, которые использовали другие OCI-совместимые инструменты, такие как Docker. У него также есть большое сообщество пользователей и разработчиков с более чем 15 тысячами звезд на GitHub по состоянию на октябрь 2022 года. Главное нововведение, которое привлекло нас в Podman, — это контейнеры без root-прав. Контейнеры без рута элегантно ограничивают привилегии, используя карту subuid/subgid, чтобы позволить контейнеру работать в пространстве имен пользователя, но с тем, что похоже на полные привилегии root. Podman также предоставляет функцию сборки контейнеров, которая позволит пользователям создавать образы непосредственно на узлах входа в Perlmutter, устраняя основные препятствия в рабочих процессах разработки.
[ Ознакомьтесь с последними статьями Podman о включении системного администратора. ]
Включение Podman в больших масштабах на Perlmutter с производительностью, близкой к исходной, потребовало от нас решения проблем интеграции, масштабируемости и производительности сайта. Кроме того, мы разработали два сценария-оболочки для реализации двух режимов работы: Podman контейнер-процесс
и podman-exec
. Режим Podman container-per-process
описывает ситуацию, в которой на узле выполняется множество процессов (обычно в приложении MPI), при этом для каждого процесса выполняется один отдельный контейнер. Режим podman-exec
описывает ситуацию, в которой на каждом узле работает один контейнер, даже если существует несколько процессов MPI.
Мы провели несколько тестов с podman-hpc
на Perlmutter, чтобы измерить производительность реализаций «голого железа»: Shifter, Podman container-per-process
и podman-exec
режим. Тест EXAALT запускает приложение молекулярной динамики LAMMPS, тест Pynamic имитирует импорт пакетов Python и вызовы функций, а тест DeepCAM представляет собой приложение глубокого обучения для сегментации климатических данных. В целом, тесты показывают сопоставимую производительность между корпусами «голого железа», Shifter и podman-exec
. Накладные расходы при запуске Podman контейнер-процесс
можно увидеть в результатах как Pynamic, так и DeepCAM. В целом, podman-exec
оказался нашей самой эффективной конфигурацией, поэтому именно на этом режиме мы сосредоточим наши будущие усилия по разработке.
(Лори Стефи, CC BY-SA 4.0)
Результаты нашего масштабируемого теста EXAALT на 32, 64, 128 и 256 узлах. Среднее значение двух результатов запуска на «голом железе» показано красным, результаты запуска Shifter показаны синим, результаты запуска Podman container-per-process
показаны темно-зеленым, а podman-exec
Результаты режима показаны светло-зеленым цветом с соответствующими полосами ошибок.
(Лори Стефи, CC BY-SA 4.0)
Результаты теста Pynamic для «голого железа» (красный), Shifter (синий), режима podman-exec
(зеленый) и режима Podman container-per-process
(светлый -зеленый) для двух размеров заданий (128 и 256 узлов) с использованием 64 задач на узел. Все конфигурации запускались трижды.
(Лори Стефи, CC BY-SA 4.0)
Результаты теста сильного масштабирования MLPerf TM DeepCAM для Shifter (синий), Podman container-per-process
(светло-зеленый) и режима podman-exec
(темно-зеленый) в различных размерах заданий (16, 32, 64 и 128 узлов Perlmutter GPU). Мы разделяем данные о времени на запуск контейнера, запуск обучения и время выполнения обучения.
Мы воодушевлены достигнутыми на данный момент результатами, но нам еще предстоит поработать, прежде чем мы сможем открыть Podman для всех пользователей NERSC. Чтобы улучшить взаимодействие с пользователем, мы стремимся изучить возможность добавления интеграции Slurm, чтобы устранить некоторую сложность работы с вложенными скриптами-оболочками, особенно в случае podman-exec
. Мы также стремимся включить наши сценарии и двоичные файлы podman-hpc
в загрузочные образы Perlmutter всех узлов, чтобы отпала необходимость размещать их на каждом узле. Мы надеемся устранить некоторые ограничения функциональности перехватчиков OCI (например, невозможность устанавливать переменные среды) вместе с сообществом OCI. Наконец, наша цель — перенести большую часть нашей работы в сам Podman, чтобы более широкое сообщество Podman могло использовать нашу работу.
Эти результаты не были проверены Ассоциацией MLCommons. Обратите внимание, что мы измеряем время для N эпох, что не является официальной методологией измерения MLPerf.