
Инфраструктура для ИИ на Dell PowerEdge 17G с AMD: рекомендации по оптимизации
Содержание
Развитие генеративного ИИ, обучения больших языковых моделей (LLM) и высокопроизводительного инференса вывело серверную платформу - а не только GPU - в число ключевых факторов производительности. Процессоры, подсистема памяти, ввод-вывод и возможности системы охлаждения совместно определяют, насколько эффективно ускорители получают данные и способны длительно работать с максимальной производительностью.
Серверы Dell PowerEdge с процессорами AMD EPYC 9005 и высокой плотностью ускорителей NVIDIA H200, B200 и B300, а также RTX Pro 6000 предоставляют необходимую для таких нагрузок пропускную способность памяти, поддержку PCIe 5.0, до 12 каналов DDR5 на сокет и архитектуру с топологией NUMA.
Однако штатные настройки ориентированы на сбалансированную работу с универсальными нагрузками, а не на максимальную устойчивую производительность ускоренных вычислений. Без целевой оптимизации производительность задач ИИ может снижаться из-за неоптимальной топологии NUMA, задержек при выходе из состояний простоя, переключения интерконнекта между режимами энергопотребления, влияния PCIe ASPM, теплового ограничения частот и обращений к памяти удаленных NUMA-узлов.
Ниже рассматривается комплексная методика настройки четырех уровней:
-
BIOS - конфигурация NUMA, SMT, управление питанием, детерминированностью производительности и режимами PCIe
-
iDRAC - настройка профиля охлаждения и скорости вращения вентиляторов
-
операционная система - параметры загрузки ядра для ASPM, IOMMU и NUMA
-
среда выполнения - привязка задач к CPU, памяти и PCIe с учетом топологии системы
Совместное применение этих настроек позволяет объединить процессорные ядра, системную память, Infinity Fabric, корневые комплексы PCIe и GPU в согласованные домены локальности. Цель такой настройки - минимизировать вариативность задержек и обращения к удаленным ресурсам, ограничивающие производительность ИИ, и добиться максимально стабильной производительности серверов Dell PowerEdge на базе AMD под длительной нагрузкой.
Архитектура платформ AMD EPYC и Dell PowerEdge для ИИ
Портфель Dell AI Factory с AMD включает высокопроизводительные серверные платформы, рассчитанные в том числе на наиболее ресурсоемкие задачи с базовыми моделями.
Процессоры AMD EPYC используют сложную архитектуру: несколько вычислительных кристаллов Core Complex Die (CCD) соединены через Infinity Fabric с кристаллом ввода-вывода I/O Die (IOD), в котором размещены контроллеры памяти и корневые комплексы PCIe 5.0. Такая топология приводит к неодинаковым задержкам доступа к памяти и устройствам PCIe в зависимости от их расположения - именно поэтому локальность ресурсов становится основой дальнейших рекомендаций.
Рекомендации основаны на трех принципах:
-
Максимальная локальность ресурсов - вычисления, память и ввод-вывод по возможности должны находиться в одном NUMA-домене.
-
Минимальная вариативность задержек - переходы в энергосберегающие состояния, способные нарушать стабильную работу GPU под постоянной нагрузкой, следует отключать.
-
Устойчивая, а не только пиковая производительность - необходим достаточный запас по охлаждению и питанию для поддержания повышенных частот процессоров и Infinity Fabric при длительной нагрузке ИИ.
Все настройки необходимо проверять на характерных для конкретной инфраструктуры нагрузках до промышленного внедрения. Оптимальное соотношение стабильности производительности, энергопотребления и теплового запаса зависит от поколения платформы, версии BIOS и условий эксплуатации серверов в стойке.
Настройка BIOS для платформ ИИ и серверов с GPU
Настройка BIOS - базовый уровень оптимизации платформ для задач ИИ и вычислений на GPU.
Количество NUMA-узлов на сокет - NPS
NPS - NUMA Nodes Per Socket - определяет, на сколько NUMA-доменов разделяется каждый процессорный сокет. Эта настройка не объединяет два сокета в единый NUMA-домен - каждый процессор разделяется независимо.
-
NPS1 - 1 NUMA-узел на сокет
-
NPS2 - 2 NUMA-узла на сокет
-
NPS4 - 4 NUMA-узла на сокет - рекомендуется для оптимизированных GPU-нагрузок
NPS4 позволяет повысить локальность ресурсов и лучше подходит для максимизации производительности ИИ при корректной настройке NUMA. NPS1 упрощает управление ресурсами и предпочтителен для приложений без поддержки NUMA или сред, где ручная привязка CPU и GPU нецелесообразна.
Расширенная настройка NPS
NPS4 - режим с оптимизацией производительности - рекомендуется для ИИ. При NPS4 процессорные ядра, контроллеры памяти и корневые комплексы PCIe распределяются по меньшим локальным NUMA-доменам. Это дает следующие преимущества:
-
точная привязка CPU к GPU с учетом топологии
-
сокращение обмена данными между NUMA-доменами через Infinity Fabric
-
снижение задержек при передаче данных между сервером и GPU
-
более стабильная и предсказуемая производительность при высокой параллельной нагрузке
NPS4 лучше всего подходит для:
-
обучения больших языковых моделей и других задач на нескольких GPU
-
распределенных вычислений
-
приложений с поддержкой NUMA
-
сред с ручной оптимизацией производительности
NUMA-узлы 128-ядерного процессора Zen 5 при NPS=4
NUMA-узлы 192-ядерного процессора Zen 5c при NPS=4
NPS1 - режим упрощенной настройки
При NPS1 каждый процессорный сокет представлен как единый NUMA-домен, объединяющий все его ядра и память.
Основные преимущества:
-
Простота эксплуатации
-
не требуется обязательная ручная привязка к NUMA-узлам с помощью numactl или taskset
-
планировщик ОС может свободно распределять задачи в пределах сокета
-
снижается сложность настройки при отсутствии опыта оптимизации NUMA
-
Снижение риска ошибок конфигурации
-
уменьшается вероятность неправильной привязки CPU и GPU
-
снижается риск частичной локальности из-за некорректного размещения нагрузки
-
режим удобнее для универсальных и смешанных нагрузок
-
Более простая работа без ручной оптимизации
-
приложения без поддержки NUMA могут сохранять приемлемую производительность
-
реже требуется предварительно анализировать топологию, например через nvidia-smi topo -m
-
Упрощение работы с несколькими GPU
-
проще размещать процессы в программных средах без управления NUMA
-
снижается сложность настройки Kubernetes, Slurm и других систем управления вычислительными ресурсами.
Два процессора EPYC 9005 соединены через четыре канала xGMI (NPS1)
Ограничения NPS1
Использование NPS1 может иметь следующие ограничения:
-
более высокая вероятность обращений к удаленной памяти в пределах сокета
-
увеличение обмена данными через Infinity Fabric между CCD и отдельными областями процессора
-
меньшие возможности для точной привязки процессорных ядер к конкретным корневым комплексам PCIe
Это может приводить к:
-
увеличению задержек
-
снижению эффективности передачи данных на GPU
-
ухудшению масштабируемости при пиковых нагрузках
Когда выбирать NPS1, а когда NPS4
|
Сценарий |
Рекомендуемый режим |
|---|---|
|
Полностью оптимизированное обучение ИИ — несколько GPU, с учетом NUMA |
NPS4 |
|
Тестирование производительности / HPC |
NPS4 |
|
Универсальные нагрузки ИИ без дополнительной оптимизации |
NPS1 |
|
Общие среды / узлы с несколькими арендаторами |
NPS1 |
|
Начальный этап развертывания / отладки |
NPS1 |
|
Оптимизированные промышленные кластеры ИИ |
NPS4 |
Логические процессоры - SMT
Отключение SMT может повысить предсказуемость производительности для нагрузок, ограниченных ресурсами CPU. Однако в задачах ИИ с интенсивной подготовкой данных и вводом-выводом SMT способен увеличить пропускную способность. Поэтому влияние SMT рекомендуется оценивать отдельно для каждой нагрузки, а не отключать его по умолчанию. Такой подход соответствует и рекомендациям AMD для высокопроизводительных вычислений.
Виртуализация
Рекомендация: для серверов ИИ без гипервизора процессорную виртуализацию можно отключить, если не используются SR-IOV, разделение ресурсов GPU или виртуальные машины.
Обоснование: Virtualization Technology и IOMMU Support в BIOS Dell являются отдельными настройками. Если IOMMU необходим, его режим следует настраивать отдельно с учетом используемых GPU, операционной системы и требований к DMA.
Настройка памяти
Рекомендуемые параметры:
-
скорость памяти - максимальная, поддерживаемая конкретной платформой и установленными DIMM, например DDR5-6400 для соответствующих конфигураций EPYC 9005
-
чередование памяти - включено с учетом выбранной конфигурации NPS
-
установка DIMM - задействовать все 12 каналов памяти каждого процессора
Для задач ИИ пропускная способность памяти центрального процессора может становиться одним из ограничивающих факторов. Использование всех каналов памяти и максимально поддерживаемой частоты повышает доступную пропускную способность, что особенно важно при подготовке данных и работе с закрепленной системной памятью для обмена с GPU.
Настройка хранения данных
По рекомендации Dell, режим RAID не следует использовать в конфигурациях NPS2 и NPS4 из-за заявленного повышенного риска отказов.
Системный профиль и управление питанием
Для System Profile устанавливается режим Performance или Custom.
Custom применяется в случаях, когда требуется вручную переопределить отдельные параметры, описанные далее.
Управление C-states
Рекомендация Dell для данной конфигурации ИИ: отключить Global C-State Control и DF C-States.
Переход процессора и Data Fabric между состояниями простоя может добавлять задержки выхода из них, что влияет на стабильность синхронизированных вычислительных процессов и обмена данными с GPU.
Эта настройка ориентирована прежде всего на чувствительные к задержкам и длительные нагрузки ИИ. Более ранние рекомендации AMD для HPC предусматривали отключение DF C-States при сохранении Core C-states, поэтому оптимальный вариант следует определять тестированием конкретной нагрузки.
Управление детерминированностью
-
Performance Determinism - распределенное обучение на нескольких узлах. Выравнивание производительности процессоров между серверами уменьшает влияние более медленных узлов на общую скорость синхронных операций
-
Power Determinism - односерверные системы и инференс. Позволяет отдельным процессорам повышать частоты при наличии запаса по питанию и охлаждению
-
путь в BIOS: BIOS Settings -> System Profile Settings -> Determinism Control -> Manual
-
путь в BIOS: BIOS Settings -> System Profile Settings -> Determinism Slider
Dell рекомендует выбирать режим в зависимости от характера нагрузки, а не применять один вариант для всех сценариев.
Выбор профиля питания
Для Power Profile рекомендуется режим Maximum IO Performance, поддерживающий Infinity Fabric, контроллеры памяти и корневые комплексы PCIe в высокопроизводительном состоянии.
APBDIS и фиксация P-state
Algorithm Performance Boost динамически изменяет рабочие состояния Infinity Fabric и подсистемы памяти в зависимости от нагрузки. Для задач ИИ, чувствительных к задержкам, такие переходы могут увеличивать вариативность времени выполнения.
Рекомендация: установить APBDIS = Enabled и зафиксировать соответствующее состояние Fabric на P0 - наиболее производительном фиксированном P-state. Аналогичная базовая настройка APBDIS и P0 присутствует в руководстве AMD по оптимизации EPYC для HPC.
Фиксация высокопроизводительного состояния уменьшает вариативность задержек, но одновременно повышает энергопотребление и тепловую нагрузку. При такой настройке необходимо учитывать возможности питания и охлаждения сервера.
Управление энергопотреблением PCIe - ASPM
Рекомендация Dell: Disabled.
Для плотных GPU-конфигураций переходы PCIe в энергосберегающие состояния L0s/L1 могут увеличивать задержки и в отдельных случаях сопровождаться проблемами восстановления соединения с ускорителями. Поэтому Dell рекомендует отключать ASPM для таких платформ.
Энергосбережение PCIe в режиме простоя
Рекомендация: Optimize for IO latency.
Политика энергопотребления PCIe в режиме простоя настраивается с приоритетом минимальной задержки, чтобы переходы между состояниями питания PCIe меньше влияли на стабильность обмена данными с GPU.
Настройка охлаждения через iDRAC
Тепловое ограничение частот способно снижать производительность сервера при длительной нагрузке ИИ. Поэтому профиль охлаждения должен учитывать продолжительную работу CPU, памяти и GPU с высоким энергопотреблением.
Выбор профиля охлаждения
Путь:
iDRAC -> Configuration -> System Settings -> Hardware Settings -> Cooling Configuration -> Thermal Profile = Maximum Performance
Этот профиль изменяет параметры охлаждения и:
-
повышает базовую скорость вращения вентиляторов
-
снижает вероятность теплового ограничения частот CPU, памяти и GPU
-
увеличивает запас для длительной работы на повышенных частотах
Настройка Fan Speed Offset
Fan Speed Offset выбирается с учетом температуры воздуха на входе в стойку.
Установленное смещение сохраняется после перезагрузки и обновления микропрограммы. На поддерживаемых платформах его можно сочетать с ручным ограничением минимальной скорости вентиляторов и температуры выходящего воздуха.
Настройка операционной системы Linux
Параметры ядра GRUB
В /etc/default/grub изменяется GRUB_CMDLINE_LINUX, после чего для систем с соответствующей конфигурацией GRUB2 создается обновленный файл загрузчика:
grub2-mkconfig -o /boot/grub2/grub.cfg
Эту команду нельзя считать универсальной для всех дистрибутивов. Например, Ubuntu обычно использует update-grub, поэтому процедуру следует сопоставлять с конкретной ОС.
Базовый набор параметров, рекомендуемый Dell:
GRUB_CMDLINE_LINUX="... pcie_aspm=off iommu=pt numa_balancing=disable pci=realloc=off"
Назначение параметров
pcie_aspm=off - отключает управление PCIe ASPM со стороны Linux; в данной конфигурации он дополняет отключение ASPM на уровне BIOS и не позволяет ОС активировать энергосберегающие состояния PCIe.
iommu=pt - включает режим passthrough по умолчанию: DMA для соответствующих устройств может обходить преобразование IOMMU. В актуальной документации Linux этот режим эквивалентен iommu.passthrough=1.
numa_balancing=disable - отключает автоматическую балансировку NUMA ядром, что позволяет сохранить заданное вручную размещение процессов и памяти.
pci=realloc=off - запрещает ядру перераспределять ресурсы мостов PCIe, первоначально назначенные BIOS. Dell рекомендует этот параметр для рассматриваемой конфигурации GPU.
Различие между iommu=pt и amd_iommu
IOMMU преобразует адреса DMA устройств в адреса физической памяти и может использоваться даже в системах без гипервизора.
iommu=pt определяет режим работы DMA и по умолчанию переводит его в режим обхода IOMMU. Это позволяет уменьшить накладные расходы преобразования адресов для устройств, которым оно не требуется.
amd_iommu= относится к параметрам драйвера AMD IOMMU и управляет его поведением. Эти параметры не следует смешивать с iommu=pt, который задает режим преобразования DMA.
Оптимизация нагрузки во время выполнения
После настройки платформы одним из наиболее значимых этапов становится привязка процессов и памяти к локальным ресурсам непосредственно при запуске нагрузки.
Привязка к NUMA-узлам с помощью numactl
Шаг 1 - определить топологию:
numactl -H
lscpu
lstopo
-
numactl -H - NUMA-узлы, процессорные ядра и объем памяти каждого узла
-
lscpu - топология процессоров и ядер
-
lstopo - иерархическая топология системы, включая подключение устройств PCIe
Шаг 2 - определить соответствие GPU и NUMA:
rocm-smi --showtoponuma
для AMD Instinct
nvidia-smi topo -m
для NVIDIA.
Шаг 3 - привязать нагрузку:
numactl --cpunodebind=0 --membind=0 ./ai_workload
или:
numactl --physcpubind=0-15 --membind=0 ./ai_workload
Для контролируемой NUMA-локальности следует задавать как привязку CPU, так и --membind: без явной привязки памяти часть выделений может размещаться в удаленных NUMA-узлах.
Привязка процессорных ядер к PCIe и GPU
Основной принцип: процессы CPU, обслуживающие конкретный GPU, следует по возможности размещать в том же NUMA-домене, что и корневой комплекс PCIe этого ускорителя.
При NPS4 корневые комплексы PCIe распределяются между NUMA-доменами. Привязка рабочих процессов каждого GPU к соответствующему локальному домену сокращает междоменный обмен через Infinity Fabric при:
-
передаче данных между системной памятью и GPU
-
подготовке данных в закрепленной памяти
-
координации NCCL/RCCL со стороны CPU
-
планировании рабочих процессов программной среды
Соответствие необходимо проверять непосредственно на конкретном сервере: разводка линий PCIe различается между PowerEdge XE7745, XE9785/XE9785L и XE9685L.
Пример запуска распределенного обучения:
numactl --cpunodebind=<gpu_numa> --membind=<gpu_numa> python train.py --local-rank <id>
Привязка OpenMP, если она используется:
export OMP_NUM_THREADS=<cores_per_node>
export OMP_PROC_BIND=close
export OMP_PLACES=cores
export GOMP_CPU_AFFINITY="<core_range>"
Заключение
В конечном счете оптимальная конфигурация определяется сценарием эксплуатации:
-
для тщательно оптимизированных и критичных к производительности систем ИИ предпочтительны детальное разделение NUMA и явная привязка вычислительных ресурсов
-
для универсальных и смешанных нагрузок приоритетом могут быть простота настройки и стабильность, а не достижение максимальной производительности
Поэтому наиболее эффективный подход - целенаправленная настройка с учетом характера нагрузки и обязательная проверка результатов на репрезентативных приложениях.
Соблюдение локальности ресурсов, минимизация вариативности задержек и корректная привязка нагрузок - базовые принципы для построения предсказуемой, масштабируемой и производительной инфраструктуры ИИ на серверах Dell PowerEdge с процессорами AMD.
Вам может быть интересно


Обзор: Серверные процессоры AMD EPYC 9005 для ЦОД: ядра Zen 5, память DDR5, PCIe Gen 5, CXL и аппаратная безопасность

Контроллер Dell PERC13: новый уровень аппаратного NVMe-RAID для эпохи ИИ
Подпишитесь на новости
Обратитесь к экспертам компании Itelon



Оцените статью и добавьте комментарий — будьте первым
Спасибо!
Комментарий успешно отправлен на модерацию! После модерации комментарий будет опубликован в ближайшее время!