Поиск по сайту:

Контейнеры 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.

Статьи по данной тематике: