DeepEP: инструмент с открытым исходным кодом для оптимизации эффективности связи специально для моделей MoE (День 2 недели открытых исходных кодов DeepSeek)

Общее введение

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

DeepEP:专为MoE模型优化通信效率的开源工具(DeepSeek 开源周第二天)

 

Список функций

  • Эффективная связь по всем направлениям: Оптимизирует обмен данными между графическими процессорами по принципу "все к одному" и поддерживает внутриузловую 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, вы можете выполнить следующие шаги:

  1. Подготовка моделей и данных: Убедитесь, что ваша модель MoE сконфигурирована с экспертной параллельной логикой и готова к получению обучающих наборов данных.
  2. Вызов ядра DeepEP: Представьте в учебном сценарии коммуникационный интерфейс DeepEP "все для всех". Пример:
    #include "deep_ep.h"  
    void moe_train(float* input, float* output, int size) {  
    deep_ep_all_to_all(input, output, size, FP8);  
    }
    
  3. Конфигурационное оборудование: Укажите устройство GPU, которое будет использоваться, например:
    CUDA_VISIBLE_DEVICES=0,1,2,3 ./train_script
    
  4. беговые тренировки: После начала обучения DeepEP автоматически оптимизирует взаимодействие между NVLink и RDMA.

Особенность 2: рассуждения с малой задержкой

Ядра с низкой задержкой подходят для задач рассуждения в реальном времени, например, для систем онлайн-диалога:

  1. Модели для погрузки: Загрузите предварительно обученную модель MoE в память.
  2. Вызов ядра вывода: Используйте чистый интерфейс связи 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);  
    }
    
  3. Проверка скорости рассуждений: Выполните следующую команду, чтобы измерить задержку:
    python tests/test_inference.py --batch_size 128 --hidden_size 7168
    

    На выходе будет показано время вывода для каждой партии, что гарантирует соблюдение требований реального времени.

Функция 3: Оптимизация вычислений FP8

DeepEP поддерживает распределение FP8 для снижения вычислительных затрат:

  1. Включить режим FP8: При вызове интерфейса связи укажите тип данных как FP8.
  2. Точность верификации: Запустите тестовый сценарий, чтобы сравнить различия в производительности и точности между FP8 и BF16:
    python tests/test_fp8.py
    
  3. Применение в производстве: Интеграция конфигураций FP8 в существующие процессы обучения или вывода.

Функция 4: Контроль и оптимизация ресурсов

Настройте количество SM в соответствии с оборудованием:

  1. Просмотр количества аппаратных SM: Использованиеnvidia-smiПроверьте количество потоковых процессоров в GPU.
  2. Установка пределов SM: Указано в сценарии:
    deep_ep_set_sm_limit(32);  // 限制为32个SM
    
  3. Проведение испытаний: Проведите контрольные испытания после изменения количества SM, чтобы найти наилучшую конфигурацию.

предостережение

  • Конфигурация сетиDeepEP оптимально протестирован на сетях InfiniBand, RoCE требует дополнительной проверки совместимости.
  • Адаптивная маршрутизация: Только ядра с низкой задержкой поддерживают эту функцию; включение ее для обычных ядер может привести к тупикам.
  • Настройка кластера: Рекомендуется запускать все тестовые сценарии (например.tests/каталог) для автоматической настройки конфигурации под ваш кластер.

Выполнив эти шаги, вы сможете быстро начать работу с DeepEP и в полной мере использовать его возможности по оптимизации связи в модели MoE.

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...