В сценариях распределенного обучения ИИ ускорение межзадачного чтения сетевых данных с помощью удаленного прямого доступа к памяти (RDMA) стало предпочтительным решением для оптимизации производительности приложений ИИ. Возможности RDMA предоставляются интеллектуальными сетевыми картами. В среде Kubernetes сетевую карту необходимо виртуализировать в несколько субинтерфейсов с помощью таких решений, как SR-IOV или MacVlan. Каждый модуль использует возможности RDMA сетевой карты через субинтерфейс. интерфейсы для многократного использования одной карты. Inspur Yunhai сотрудничал с сообществом Kube-OVN для анализа болевых точек конфигурации SR-IOV, представил проект sriov-network-operator и оптимизировал болевые точки для реализации автоматической настройки RDMA сетевой карты, а также в сочетании с Kube-OVN предоставил комплексное прикладное решение RDMA для производственной среды.
01 Конфигурация RDMA и SR-IOV громоздка и имеет проблемы с сохранением.
При настройке RDMA и SR-IOV вам придется иметь дело с множеством параметров и различиями в конфигурации сетевых устройств разных производителей. Кроме того, проблемы с сохранением устройств RDMA VF и связанных обновлений с Kubernetes также усложняют управление и обслуживание.
1. Настройка RDMA SR-IOV громоздка. Процесс настройки требует инициализации максимального количества VF, ожидаемого количества VF, размера MTU, размера Vlan, конфигурации IOMMU и т. д. сетевого устройства SR-IOV. Конфигурации сетевых карт разных производителей также различаются. для загрузки льда модули ядра, такие как iavf и irdma, а также сетевые карты Mellanox, должны загружать связанные модули ядра, если имена сетевых карт нескольких узлов различаются, также необходимо установить разные сценарии конфигурации; Обычными решениями этой проблемы являются настройка операционной системы, сценарии автоматической настройки SR-IOV и т. д. Однако эти решения обладают недостаточной гибкостью, а процесс реализации является громоздким.
2. Проблема с сохранением устройства RDMA VF. Устройство RDMA VF создается путем динамической настройки и не может быть сохранено после сбоя в работе сервера узла или его обновления и перезапуска. Системные службы и пользовательские правила udev обычно используются для управления автоматическими сценариями для перенастройки VF при запуске сервера. Однако этот метод требует от разработчика разработки сценариев в соответствии с различными средами и не является универсальным.
3. Как обновить RDMA SR-IOV в связке с Kubernetes после настройки. Поскольку плагин устройства инициирует обнаружение и передачу информации об устройстве VF только один раз при запуске, вам необходимо вручную перезапустить плагин устройства после настройки RDMA SR-IOV для обновления информации VF в Kubernetes, чтобы гарантировать, что модули, которым требуются устройства RDMA, могут быть доступны. оборудование VF запланировано и распределено нормально. Когда в среду добавляется новая сетевая карта или изменяется количество VF и т. д. и необходимо обновить конфигурацию, после перенастройки RDMA SR-IOV, чтобы обеспечить доступность кластера Kubernetes и бизнеса, многое требуется много рабочей силы и времени, чтобы выселить поды и перезапустить сервер, чтобы обеспечить высокую доступность кластера. Этот процесс требует от исполнителя глубокого накопления технологий Kubernetes и сильных практических навыков.
02Автоматическая настройка через sriov-network-operator
Inspur Yunhai решил вышеуказанные проблемы, внедрив компонент sriov-network-operator. Благодаря декларативной конфигурации он реализует динамическую, автоматизированную и высокодоступную настройку SR-IOV, упрощает ручное управление SR-IOV и RDMA, а также повышает гибкость и удобство обслуживания системы, что делает ее более подходящей для облачных сред. Быстрое развертывание и динамические обновления.
Рабочий процесс sriov-network-operator, автоматически настраивающий SR-IOV, выглядит следующим образом:
Глобальный универсальный шаблон конфигурации SR-IOV:Поддерживает разные определения сетевых карт разных производителей для всех узлов.Конфигурация Ресурсы для хранения ожиданийSR-IOVСопутствующая информация,Включая имя сетевой карты, тип сетевой карты, ожидаемое количество VF, метки узлов и т. д. Конфигурация хранится в базе данных Etcd в виде ресурсов K8S.,Поддержка через Kubernetes Динамическая конфигурация API.
Шаблон конфигурации узла SR-IOV: Сопоставляется и наследуется от глобального шаблона конфигурации SR-IOV на основе текущей информации об узле. Информация о состоянии процесса настройки и ошибках также будет храниться в этом шаблоне.
Распределенный конфигуратор SR-IOV:Разверните набор демонов на каждом узле.SR-IOVКонфигурацияустройство,Отвечает за автоматическую обработку информации SR-IOV на этом узле. Его основные возможности включают в себя:
• Выполните подготовительные работы во время запуска, такие как включение параметров ядра IOMMU, загрузка драйвера ядра VFIO_PCI и т. д.
• Отслеживайте изменения в информации о ресурсах конфигурации SR-IOV этого узла в режиме реального времени и загружайте ее в конфигуратор как можно скорее.
• Поддерживает автоматическую настройку информации SR-IOV. В соответствии с ожидаемой информацией о конфигурации SR-IOV этого узла автоматически генерируется и выполняется сценарий конфигурации, а для обеспечения эффективности конфигурации поддерживаются такие операции, как вытеснение пода и перезапуск узла.
• Создавайте дифференцированные метаданные узлов, от которых зависит плагин устройства, и перезапускайте плагин устройства, чтобы реализовать отчеты об обнаружении VF, а также реализовать связь между компонентами Kubernetes.
• Поддерживает создание подробной информации о состоянии процесса настройки. Персонал по эксплуатации и техническому обслуживанию может быстро проверять ход выполнения, находить и решать проблемы с помощью информации о состоянии.
• Последовательно перезапускайте узлы, чтобы изменения конфигурации IOMMU, VF и другой информации вступили в силу, чтобы обеспечить высокую доступность кластера Kubernetes.
Основываясь на практике разработки и производственной среды, Inspur Yunhai внесла множество оптимизаций и улучшений на основе исходного оператора sriov-network-operator, например поддержку Kube-OVN OVS. Конфигурация VF сценария разгрузки, соответствующий Pod sriov-network-operator запланирован только для узлов с Feature.node.kubernetes.io/network-SR-IOV.capable=true, сетевая карта Intel загружает модуль ядра iavf, а Метод вытеснения пода изменен на принудительное удаление. Это позволяет избежать проблемы недоступности узла в течение длительного времени в случае сбоя выселения и т. д. и совместимо с сериями Mellanox CX, Intel X7/E8 и другими интеллектуальными сетевыми картами. Эти обновления были отправлены в проект sriov-network-operator сообщества Kube-OVN и будут работать «из коробки».
03: Общее решение Kube-OVN+SR-IOV для реализации сосуществования сети RDMA и стандартной сети Kubernetes.
В реальных производственных средах SR-IOV может обеспечить сеть RDMA для связи между модулями. Однако, поскольку технология SR-IOV обходит стек сетевых протоколов хоста, базовые возможности, такие как собственный сервис Kubernetes, использовать нельзя. Мы предоставляем как сеть RDMA, так и стандартную сеть K8S с помощью решения Kube-OVN+SR-IOV. Выполняя вышеуказанные функции, мы также можем достичь других возможностей, таких как многопользовательская крупномасштабная сеть, обеспечивающая более сильную изоляцию и безопасность данных клиентов. Общий план следующий:
В контейнере сеть RDMA и стандартная сеть Kubernetes используют независимые сетевые карты для реализации выделенных карт, обеспечивая полную реализацию возможностей сети RDMA. В то же время, используя Kube-OVN в качестве глобального IPAM (управление IP-адресами), управление IP-адресами контейнеров упрощается и достигается унифицированное планирование, выделение и освобождение IP-адресов, тем самым значительно повышая эффективность управления и повышая удобство обслуживания. контейнерная среда.
Это решение обеспечивает ключевую техническую поддержку для создания высокооптимизированной вычислительной среды искусственного интеллекта, способствует ее применению в крупномасштабной обработке данных и распределенных вычислениях, а также помогает ускорить разработку технологий искусственного интеллекта, чтобы удовлетворить растущий спрос на вычисления, обеспечивая надежную сеть. решения.
Справочные ссылки:
https://github.com/kubeovn/kube-ovn
https://github.com/kubeovn/SR-IOV-network-operator