Включение Expert Parallel для сервисов в inference vLLM
Содержание
ВведениеКогда использовать Expert ParallelПредварительные требования и ограниченияОбзор конфигурации EPПоведение слоев при включенном EPСоответствие upstream-команды и платформыНастройка single-node InferenceServiceПочему эти флаги важныПроверка настроенного specДля multi-node развертыванийReferencesВведение
В этом документе показан базовый вариант настройки на одном узле, ориентированный на YAML, для включения vLLM Expert Parallel (EP) в InferenceService.
Expert Parallel — это возможность upstream vLLM для моделей Mixture-of-Experts (MoE). В vLLM она по-прежнему находится в состоянии experimental, и связанные с ней имена аргументов или значения по умолчанию могут измениться в будущих версиях.
Эта страница посвящена примеру конфигурации для одного узла и предназначена для начального знакомства с Expert Parallel. Для настройки производительности, планирования емкости и сведений о распределенном развертывании см. официальную документацию vLLM.
Когда использовать Expert Parallel
Expert Parallel актуален, когда вы обслуживаете модель MoE и хотите, чтобы vLLM разделял экспертные слои по GPU, а не полагался на поведение группировки экспертных слоев по умолчанию.
Для развертывания на одном узле upstream-подход vLLM выглядит так:
- Включите EP с помощью
--enable-expert-parallel. - Оставьте пример на одном узле.
- Используйте
--data-parallel-size, чтобы охватить все GPU на этом узле. - Используйте
--tensor-parallel-size 1в этом примере, чтобы слои attention оставались реплицированными между data parallel rank'ами, а не разделялись с помощью tensor parallelism.
Если вы обслуживаете dense-модель или если в вашем текущем runtime image отсутствуют зависимости, необходимые для EP в upstream vLLM, этот документ не является подходящей отправной точкой.
Предварительные требования и ограничения
- У вас есть доступ к Kubernetes cluster с установленным KServe.
- У вас есть namespace, в котором можно создавать ресурсы
InferenceService. - На платформе уже доступен runtime для обслуживания vLLM.
- Используемый вами runtime image уже включает upstream-зависимости, необходимые для vLLM EP.
- Ваша модель — это модель MoE, и она уже доступна сервису через настроенный
storageUri. - На целевом узле доступны несколько видимых GPU. В этом примере в качестве single-node data parallel size используется обнаруженное количество GPU.
Если текущий image vLLM еще не включает необходимые зависимости для EP, сначала расширьте или пересоберите runtime image. Для настройки runtime с учетом особенностей платформы см. Extend Inference Runtimes. Список upstream-зависимостей и рекомендации по backend см. в официальном руководстве по развертыванию vLLM EP в разделе References.
Обзор конфигурации EP
Включите EP, добавив флаг --enable-expert-parallel. В upstream vLLM размер expert parallel вычисляется автоматически:
Где:
TP_SIZE: размер tensor parallelDP_SIZE: размер data parallelEP_SIZE: размер expert parallel, вычисляемый vLLM автоматически
Это означает, что отдельный аргумент для задания размера EP не используется. Вместо этого вы выбираете размеры tensor parallel и data parallel, а vLLM выводит эффективный размер группы expert parallel на основе этих параметров.
Поведение слоев при включенном EP
Когда EP включен для модели MoE, разные типы слоев используют разные стратегии параллелизма:
Для слоев attention:
- При
TP_SIZE = 1веса attention реплицируются по всем data parallel rank'ам. - При
TP_SIZE > 1веса attention разделяются с помощью tensor parallelism внутри каждой группы data parallel.
Например, если TP_SIZE = 2 и DP_SIZE = 4, сервис использует в общей сложности 8 GPU:
- Слои expert образуют одну EP-группу размером 8, при этом эксперты распределяются по всем GPU.
- Слои attention используют tensor parallelism размером 2 внутри каждой из 4 групп data parallel.
По сравнению с обычным развертыванием data parallel основное отличие заключается в том, как распределяются слои MoE. Без --enable-expert-parallel слои MoE следуют поведению группировки tensor parallel. При включенном EP слои expert переключаются на expert parallelism, который специально предназначен для sharding'а expert-слоев в MoE.
Соответствие upstream-команды и платформы
В upstream single-node примере используется команда, аналогичная следующей:
В Alauda AI эти же флаги обычно передаются через команду контейнера InferenceService. Иными словами:
vllm serve ...становится командой, запускаемой внутриspec.predictor.model.command--tensor-parallel-size,--data-parallel-sizeи--enable-expert-parallelдобавляются к команде запуска vLLM- расположение модели, имя runtime и ресурсы Kubernetes задаются через
storageUri,runtimeиresources
Именно поэтому следующий пример сосредоточен на том, как поместить флаги, связанные с EP, в YAML InferenceService на платформе.
Настройка single-node InferenceService
Создайте YAML-файл, например deepseek-v3-ep.yaml, со следующим содержимым:
Примените манифест:
Почему эти флаги важны
Настройте поля ресурсов GPU так, чтобы они соответствовали ключам ресурсов, доступным в вашем cluster, и количеству GPU на целевом узле. В этом примере важно именно то, где аргументы vLLM EP добавляются в команду InferenceService. Если вам нужно явно задать all-to-all backend, сначала следуйте upstream-руководству по выбору backend, а затем добавляйте --all2all-backend.
Проверка настроенного spec
После применения манифеста проверьте итоговый spec InferenceService и убедитесь, что присутствуют аргументы, связанные с EP:
Обратите внимание на сгенерированную команду predictor и убедитесь, что в ней по-прежнему присутствуют:
--enable-expert-parallel--data-parallel-size--tensor-parallel-size 1
Эта проверка подтверждает, что нужные аргументы vLLM были применены к конфигурации сервиса. Она не проверяет производительность runtime, совместимость backend или поведение в multi-node сценарии.
Для multi-node развертываний
Развертывания EP на нескольких узлах требуют дополнительной конфигурации распределенного runtime и сети, включая параметры запуска для каждого узла, роли узлов и настройки коммуникации data parallel.
Эта страница посвящена шаблону конфигурации для одного узла. Если вам нужен multi-node EP, обратитесь к официальному руководству vLLM и адаптируйте модель развертывания под топологию вашего cluster и среду runtime.