DeepEP: инструмент с открытым исходным кодом для оптимизации эффективности связи специально для моделей MoE (День 2 недели открытых исходных кодов DeepSeek)
Общее введение
DeepEP - это коммуникационная библиотека с открытым исходным кодом, разработанная командой deepseek-ai и направленная на повышение эффективности обучения и рассуждений в моделях Mixture-of-Experts (MoE) и экспертного параллелизма (EP). Она обеспечивает высокую пропускную способность и низкие задержки при передаче данных, оптимизируя обмен данными между GPU для крупномасштабных распределенных систем. DeepEP поддерживает технологии NVLink и RDMA, совместима с операциями низкой точности, такими как FP8, и была разработана с высокоэффективными ядрами для сценариев обучения и вывода соответственно. Библиотека прошла боевую проверку в производственной среде команды DeepSeek, особенно для моделей MoE, требующих межузлового взаимодействия, что позволяет значительно повысить общую производительность системы и является мощным помощником для исследователей и разработчиков ИИ в построении эффективных моделей глубокого обучения. В настоящее время DeepEP находится в открытом доступе на GitHub, и сообщество может принять участие в его улучшении.

Список функций
- Эффективная связь по всем направлениям: Оптимизирует обмен данными между графическими процессорами по принципу "все к одному" и поддерживает внутриузловую NVLink и межузловую RDMA для обеспечения быстрого и стабильного обмена данными.
- Поддержка высокопроизводительного обучения: Предоставляет ядра, предназначенные для обучения и предварительного наполнения выводов, которые могут обрабатывать большие объемы данных и повышать эффективность обучения моделей.
- Ядро вывода с низкой задержкой: Для фазы вывода и декодирования используется чистая технология RDMA для уменьшения задержки, которая подходит для сценариев приложений реального времени.
- FP8 Арифметика низкой точностиВстроенная поддержка распределения FP8 позволяет снизить стоимость вычислений при сохранении производительности в средах, чувствительных к ресурсам.
- Гибкое управление ресурсами: Поддержка потоковой настройки количества мультипроцессоров (SM), что позволяет разработчикам оптимизировать конфигурацию в соответствии с аппаратными условиями.
- Перекрытие между коммуникациями и вычислениями: Бесшовная связь и вычисления с помощью механизма hook для повышения эффективности использования GPU.
- Оптимизация пропускной способности между доменами: Обеспечивает поддержку эффективной пересылки данных из NVLink в RDMA для алгоритма DeepSeek-V3 Packet Limit Domain.
Использование помощи
Процесс установки
DeepEP - это основанный на GitHub проект с открытым исходным кодом, который требует ручной загрузки и настройки среды для использования. Ниже приведены подробные шаги по установке:
1. предварительные условия
- операционная система: Linux (например, Ubuntu 20.04 или более поздняя версия) рекомендуется для совместимости с GPU и сетевым оборудованием.
- требования к оборудованию: Оснащен графическими процессорами с поддержкой NVLink или RDMA (например, NVIDIA H800) и подключен к высокоскоростным сетям (например, InfiniBand 400 Гбит/с).
- зависимость от программного обеспечения::
- CUDA Toolkit (рекомендуется версия, совместимая с оборудованием, например CUDA 11.x или 12.x).
- NCCL (коллективная коммуникационная библиотека NVIDIA).
- Модифицированная версия NVSHMEM (DeepEP полагается на ее коммуникационные возможности и должна быть установлена отдельно).
- Python 3.8+ (для тестирования и выполнения скриптов).
2. Загрузите исходный код DeepEP
Откройте терминал и выполните следующую команду, чтобы клонировать репозиторий:
git clone https://github.com/deepseek-ai/DeepEP.git
cd DeepEP
3. Установка NVSHMEM
DeepEP использует модифицированную версию NVSHMEM, пожалуйста, обратитесь к официально предоставленномуРуководство по установке NVSHMEM. Кратко этапы работы описаны ниже:
- Загрузите исходный код NVSHMEM и примените патч, предоставленный DeepEP (находится в
third-party/nvshmem.patch
). - Скомпилируйте и установите:
cd nvshmem patch -p1 < ../third-party/nvshmem.patch make -j && sudo make install
4. Компиляция DeepEP
Перейдите в каталог DeepEP и скомпилируйте коммуникационную библиотеку:
make
После компиляции генерируются файлы ядра, которые могут быть вызваны в проекте.
5. Настройка переменных окружения
Чтобы обеспечить корректную работу DeepEP, необходимо настроить параметры, связанные с NVSHMEM, например, назначение виртуальных каналов:
export NVSHMEM_IB_SL=0 # 设置虚拟通道,避免流量冲突
Дополнительная настройка доступна, если вам нужно включить адаптивную маршрутизацию (только для ядер с низкой задержкой):
export NVSHMEM_ENABLE_ADAPTIVE_ROUTING=1
6. Тестовая установка
Запустите предоставленный тестовый сценарий, чтобы проверить функциональность DeepEP:
python tests/test_low_latency.py
Если вывод показывает успешную связь, установка завершена.
Использование
DeepEP в основном используется с помощью рабочих процессов, интегрированных в модель MoE, и ниже приводится подробное руководство по работе с основными функциями:
Функция 1: Выполнение высокопроизводительного обучения
Высокопроизводительное ядро DeepEP подходит для распределенного обучения моделей MoE. Если у вас есть модель на базе DeepSeek-V3, вы можете выполнить следующие шаги:
- Подготовка моделей и данных: Убедитесь, что ваша модель MoE сконфигурирована с экспертной параллельной логикой и готова к получению обучающих наборов данных.
- Вызов ядра DeepEP: Представьте в учебном сценарии коммуникационный интерфейс DeepEP "все для всех". Пример:
#include "deep_ep.h" void moe_train(float* input, float* output, int size) { deep_ep_all_to_all(input, output, size, FP8); }
- Конфигурационное оборудование: Укажите устройство GPU, которое будет использоваться, например:
CUDA_VISIBLE_DEVICES=0,1,2,3 ./train_script
- беговые тренировки: После начала обучения DeepEP автоматически оптимизирует взаимодействие между NVLink и RDMA.
Особенность 2: рассуждения с малой задержкой
Ядра с низкой задержкой подходят для задач рассуждения в реальном времени, например, для систем онлайн-диалога:
- Модели для погрузки: Загрузите предварительно обученную модель MoE в память.
- Вызов ядра вывода: Используйте чистый интерфейс связи RDMA. Пример:
#include "deep_ep.h" void moe_infer(float* query, float* result, int batch_size) { deep_ep_low_latency_all_to_all(query, result, batch_size); }
- Проверка скорости рассуждений: Выполните следующую команду, чтобы измерить задержку:
python tests/test_inference.py --batch_size 128 --hidden_size 7168
На выходе будет показано время вывода для каждой партии, что гарантирует соблюдение требований реального времени.
Функция 3: Оптимизация вычислений FP8
DeepEP поддерживает распределение FP8 для снижения вычислительных затрат:
- Включить режим FP8: При вызове интерфейса связи укажите тип данных как FP8.
- Точность верификации: Запустите тестовый сценарий, чтобы сравнить различия в производительности и точности между FP8 и BF16:
python tests/test_fp8.py
- Применение в производстве: Интеграция конфигураций FP8 в существующие процессы обучения или вывода.
Функция 4: Контроль и оптимизация ресурсов
Настройте количество SM в соответствии с оборудованием:
- Просмотр количества аппаратных SM: Использование
nvidia-smi
Проверьте количество потоковых процессоров в GPU. - Установка пределов SM: Указано в сценарии:
deep_ep_set_sm_limit(32); // 限制为32个SM
- Проведение испытаний: Проведите контрольные испытания после изменения количества SM, чтобы найти наилучшую конфигурацию.
предостережение
- Конфигурация сетиDeepEP оптимально протестирован на сетях InfiniBand, RoCE требует дополнительной проверки совместимости.
- Адаптивная маршрутизация: Только ядра с низкой задержкой поддерживают эту функцию; включение ее для обычных ядер может привести к тупикам.
- Настройка кластера: Рекомендуется запускать все тестовые сценарии (например.
tests/
каталог) для автоматической настройки конфигурации под ваш кластер.
Выполнив эти шаги, вы сможете быстро начать работу с DeepEP и в полной мере использовать его возможности по оптимизации связи в модели MoE.
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...