Перейти к содержанию

Встроенные движки инференса

GPUStack поддерживает следующие движки инференса:

При запуске развертывания модели пользовательский интерфейс автоматически предварительно выбирает серверную часть на основе следующих критериев:

  • Если модель является известной моделью Text-to-Speech или Speech-to-Text, используется VoxBox.
  • Если модель является известной моделью Image, используется SGLang.
  • В противном случае используется vLLM.

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

Примечание

Для всех поддерживаемых бэкендов инференса у нас есть предварительно созданные образы Docker, доступные по адресу DockerHub. Когда пользователи развертывают модели, система автоматически извлекает и запускает соответствующие образы.

vLLM

vLLM — это бэкенд инференса LLM с высокой пропускной способностью и эффективным использованием памяти. Это популярный выбор для запуска LLM в производстве.

vLLM полностью поддерживает большинство современных моделей с открытым исходным кодом, в том числе:

  • LLM, подобные трансформаторам (например, Qwen3)
  • LLM с архитектурой смеси экспертов (например, DeepSeek V3/R1)
  • Мультимодальные LLM (например, Qwen3-VL)
  • Модели эмбеддингов (например, Qwen3-Embedding)
  • Модели реранкера (например, Qwen3-Reranker)

По умолчанию GPUStack оценивает требования к видеопамяти для экземпляра модели на основе метаданных модели.

Вы можете настроить параметры в соответствии со своими потребностями. Следующие параметры vLLM могут быть полезны:

  • --gpu-memory-utilization (по умолчанию: 0.9): доля памяти графического процессора, используемая для экземпляра модели.
  • --max-model-len: Длина контекста модели. Для моделей с большим контекстом GPUStack автоматически устанавливает для этого параметра значение 8192, чтобы упростить развертывание модели, особенно в средах с ограниченными ресурсами. Вы можете настроить этот параметр в соответствии со своими потребностями.
  • --tensor-parallel-size: количество параллельных реплик тензора. По умолчанию GPUStack устанавливает этот параметр с учетом доступных ресурсов графического процессора и оценки требований к памяти модели. Вы можете настроить этот параметр в соответствии со своими потребностями.

Более подробную информацию см. в Справочнике по vLLM CLI.

Поддерживаемые модели

Информацию о поддерживаемых моделях см. в документации vLLM.

Поддерживаемые функции

Омнимодальная поддержка

vLLM-Omni — это расширение vLLM, предназначенное для омнимодального вывода и поддерживающее:

  • Омни-модели: одновременная обработка текста, аудио, изображений и видео (например, Qwen3-Omni)
  • Задачи изображения: создание и редактирование изображений (например, Z-Image-Turbo)
  • Задачи видео: создание и редактирование видео (например, Wan2.2)
  • Аудио задачи: синтез речи, клонирование голоса и многое другое (например, Qwen3-TTS)

GPUStack интегрируется с vLLM-Omni, обеспечивая удобство развертывания и управления омнимодальными моделями. Когда модель развертывается через серверную часть vLLM, GPUStack автоматически определяет, является ли она омнимодальной, на основе ее метаданных, и устанавливает необходимые параметры для vLLM-Omni.

Распределенный вывод по воркерам (экспериментальный)

Если одному воркеру не хватает видеопамяти или вычислительных ресурсов для размещения модели, vLLM может разделить один экземпляр модели на несколько воркеров и совместно выполнить логический вывод. GPUStack организует эти межузловые процессы как единый экземпляр модели и по-прежнему предоставляет внешне только одну OpenAI-совместимую конечную точку.

Установите флажок Allow Distributed Inference Across Workers при развертывании модели, чтобы включить ее.

GPUStack предоставляет два пути выполнения для распределённого инференса vLLM, выбираемых параметром --distributed-executor-backend vLLM. Обычно вам не нужно устанавливать его вручную — GPUStack выбирает его автоматически на основе образа контейнера и версии vLLM.

Ray Бэкэнд
  • При использовании: путь по умолчанию для официальных образов runner GPUStack — образы runner всегда поставляются вместе с Ray, независимо от версии vLLM. Также используется, когда --distributed-executor-backend явно установлено в ray или любое значение, отличное от mp (например, external_launcher) в параметрах серверной части.
  • Как работает: GPUStack запускает вспомогательный процесс Ray на каждом участвующем узле, образуя кластер. Лидер запускает основной процесс vLLM и сервер API, а Ray координирует планирование задач между узлами.
Бэкенд MultiProcessing
  • При использовании: Когда --distributed-executor-backend=mp задано явно в параметрах серверной части; или при запуске пользовательского образа (бэкенд-версия с суффиксом -custom) на vLLM ≥ 0.18.0 — vLLM удалила Ray из зависимостей по умолчанию в 0.18.0, поэтому пользовательский образ может не включать Ray, а GPUStack возвращается к mp во избежание сбоев при запуске.
  • Как работает: напрямую используется многопроцессное многоузловое выполнение vLLM без вспомогательного процесса Ray. GPUStack подставляет аргументы топологии, например --nnodes, --node-rank, --master-addr и --master-port, исходя из структуры кластера.
  • Ведомые экземпляры без API-сервера: экземпляры с ролью ведомого автоматически получают --headless, поэтому участвуют только в распределённых вычислениях и не запускают сервер API OpenAI. Только лидер предоставляет HTTP-конечную точку: все внешние запросы поступают через него и передаются ведомым. Наличие --headless в журнале ведомого — нормальное поведение; поэтому такие экземпляры не занимают порт API.
  • Форма топологии: GPUStack автоматически выбирает один из макетов параметров dp_only, mp_only или nested на основе конфигурации параллелизма (TP/PP/DP).

Известные ограничения

  1. Файлы модели должны быть доступны по одному и тому же пути для всех участвующих воркеров. Вы должны либо использовать общую файловую систему, либо загрузить файлы модели по одному и тому же пути для всех участвующих воркеров.
  2. В режиме Ray каждый воркер может быть одновременно назначен только одному экземпляру распределенной модели vLLM.

Автоматическое планирование поддерживается при следующих условиях:

  • Участвующие воркеры имеют одинаковое количество графических процессоров.
  • Все GPU воркера должны удовлетворять требованию gpu_memory_utilization (по умолчанию 0.9).
  • При тензорном параллелизме графические процессоры делятся по количеству голов внимания.
  • Общая заявка на VRAM превышает предполагаемую заявку на VRAM.

Если вышеуказанные условия не соблюдены, экземпляр модели не будет запланирован автоматически. Однако вы можете запланировать его вручную, выбрав нужных воркеров/GPU в конфигурации модели.

Справочник параметров

Полный список поддерживаемых параметров для vLLM см. здесь.

SGLang

SGLang — это высокопроизводительная платформа обслуживания для больших языковых моделей и моделей визуального языка.

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

По умолчанию GPUStack оценивает требования к видеопамяти для экземпляра модели на основе метаданных модели.

При необходимости GPUStack также автоматически устанавливает несколько параметров для моделей с большим контекстом. Общие параметры SGLang включают:

  • --mem-fraction-static (по умолчанию: 0.9): доля видеопамяти, выделяемая для каждого графического процессора. Планировщик использует это значение для сопоставления ресурсов и выбора кандидатов. Вы можете переопределить его с помощью backend_parameters модели.
  • --context-length: Длина контекста модели. Для моделей с большим контекстом, если автоматически оцененная длина контекста превышает возможности устройства, GPUStack устанавливает для этого параметра значение 8192, чтобы упростить развертывание в средах с ограниченными ресурсами. Вы можете настроить этот параметр по мере необходимости.
  • --tp-size: Размер тензорной параллели. Если это не указано явно, GPUStack выводит и устанавливает этот параметр на основе выбранных графических процессоров.
  • --pp-size: Размер параллельности трубопровода. При развертывании с несколькими узлами GPUStack определяет комбинацию --tp-size и --pp-size в соответствии с моделью и конфигурацией кластера.
  • Многоузловые аргументы: --nnodes, --node-rank, --dist-init-addr. Когда распределённый инференс включен, GPUStack вводит эти аргументы для инициализации многоузловой связи.

Более подробную информацию можно найти в документации SGLang.

Поддерживаемые модели

Информацию о поддерживаемых моделях см. в документации SGLang.

SGLang также поддерживает модели изображений. Мы проверили: Qwen-Image, Flux 1 Dev. Для получения дополнительной информации обратитесь к документации SGLang Diffusion.

Поддерживаемые функции

Распределенный вывод по воркерам (экспериментальный)

Вы можете включить распределённый инференс SGLang для нескольких воркеров в GPUStack.

Известные ограничения

  1. Все участвующие узлы должны работать под управлением Linux, а изображения/среды должны быть совместимы по версии Python и коммуникационным библиотекам (например, NCCL).
  2. Файлы модели должны быть доступны по одному и тому же пути на всех узлах. Используйте общую файловую систему или загрузите модель по одному и тому же пути на каждом узле.

При выборе кандидата для автоматического планирования учитываются следующие условия:

  • Участвующие графические процессоры удовлетворяют требованию --mem-fraction-static (по умолчанию 0.9).
  • В сценариях с одним узлом и несколькими графическими процессорами или несколькими узлами с несколькими графическими процессорами общая эффективная выделяемая видеопамять должна соответствовать требованиям модели.
  • Должны быть соблюдены требования к параллелизму модели (например, общее количество голов внимания, кратное размеру тензорного параллелизма), в противном случае кандидат отклоняется.

Если вышеуказанные условия не соблюдены, вы все равно можете вручную запланировать экземпляр модели, выбрав рабочие/графические процессоры в конфигурации, хотя может быть указан риск превышения обязательств.

Диффузионные модели (экспериментальные)

SGLang Diffusion — это высокопроизводительный движок инференса, разработанный специально для моделей диффузии и призванный ускорить процесс генерации изображений и видео. Благодаря методам параллельной обработки SGLang и оптимизированным ядрам он достигает скорости генерации в 1.2 раза выше по сравнению с основными базовыми моделями (например, диффузорами Hugging Face Diffusers).

Более подробную информацию можно найти в разделе SGLang Diffusion.

Другие расширенные функции

Доступны дополнительные расширенные функции, такие как:

Инструкции по использованию см. в официальной документации.

Справочник параметров

Полный список поддерживаемых параметров для SGLang см. здесь.

MindIE

MindIE — это высокопроизводительная служба вывода на оборудовании Ascend.

Поддерживаемые модели

MindIE поддерживает различные модели, перечисленные здесь.

В GPUStack поддерживается большие языковые модели (LLM) и мультимодальные языковые модели (VLM).

Однако встраиваемые модели и модели мультимодального создания пока не поддерживаются.

Поддерживаемые функции

MindIE обладает множеством функций, описанных здесь.

В настоящее время GPUStack поддерживает подмножество этих возможностей, включая Квантование, Расширение размера контекста, Распределенный вывод, Mixture of Experts (MoE), Split Fuse, Спекулятивное декодирование, Многотокенное предсказание, Кэширование префиксов, Вызов функции, Мультимодальное понимание, Многоголовое скрытое внимание (MLA), Тензорный параллелизм, Контекстный параллелизм, Последовательность Параллелизм, Экспертный параллелизм, Параллелизм данных, Ответ буфера (начиная с Ascend MindIE 2.0.RC1). Пул КВ (начиная с Ascend MindIE 2.2.RC1).

Примечание

  1. Для квантования требуется определенный вес и корректировка config.json модели. Следуйте справке (руководству), чтобы подготовить правильный вес.

  2. Некоторые функции являются взаимоисключающими, поэтому будьте осторожны при их использовании. Например, если включено кэширование префиксов, функцию расширения размера контекста использовать невозможно.

Справочник параметров

MindIE имеет настраиваемые параметры и переменные среды.

Чтобы избежать непосредственной настройки JSON, GPUStack предоставляет набор параметров командной строки, как показано ниже.

Параметр По умолчанию Диапазон Область применения Описание
--log-level Информация Конфигурация журнала Уровень журнала для MindIE. Варианты: Verbose, Info, Warning, Warn, Error, Debug.
--max-link-num 1000 [1, 1000] Конфигурация сервера Максимальное количество параллельных запросов.
--token-timeout 60 [1, 3600] Конфигурация сервера Тайм-аут генерации токена в секундах.
--e2e-timeout 60 [1, 3600] Конфигурация сервера E2E (от принятия запроса до остановки вывода) тайм-аут в секундах.
--openai-support vllm Конфигурация сервера Режим совместимости с OpenAI API.
--kv-pool-config Конфигурация бэкенда Конфигурация пула KV в формате JSON. Например: {"backend":"<KV pool backend name>", "configPath":"/path/to/your/config/file"}.
--max-seq-len 8192 (0, *) Конфигурация развертывания модели Длина контекста модели. Если не указано, оно будет получено из конфигурации модели.
--max-input-token-len (0, --max-seq-len] Конфигурация развертывания модели Максимальная длина входного токена. Если не указано, она будет получена из min(--max-seq-len, --max-prefill-tokens).
--truncation Конфигурация развертывания модели Усекать длину входного токена, если она превышает минимум --max-input-token-len и --max-seq-len - 1.
--cpu-mem-size 0 [0, *) Конфигурация модели Размер пространства подкачки ЦП в ГиБ. Работает, если указано --max-preempt-count.
--npu-memory-fraction (env: NPU_MEMORY_FRACTION) 0.9 (0, 1] Конфигурация модели Доля памяти NPU, которая будет использоваться для исполнителя модели (от 0 до 1). Например: 0.5 означает 50% использования памяти.
--trust-remote-code Конфигурация модели Доверительный удаленный код (для загрузки модели).
--models Конфигурация модели Конфигурация моделей в формате JSON, для определенных конкретных конфигураций, таких как метод реализации экспертного параллелизма, тензорный параллелизм LM, разделение заголовка/выходного внимания.
--async-scheduler-wait-time 120 [1, 3600] Конфигурация модели Время ожидания (в секундах) запуска асинхронного планировщика.
--cache-block-size 128 Конфигурация расписания Размер блока кэша KV. Должно быть степень 2.
--max-prefill-batch-size 50 [1, --max-batch-size] Конфигурация расписания Максимальное количество запросов, группируемых на этапе предварительного заполнения. Должно быть меньше --max-batch-size.
--max-prefill-tokens [1, --max-seq-len] Конфигурация расписания Во время каждого предварительного заполнения общее количество всех входных токенов в текущем пакете не может превышать --max-prefill-tokens. По умолчанию такое же, как --max-seq-len.
--prefill-time-ms-per-req 150 [0, 1000] Конфигурация расписания Расчетное время предварительного заполнения для каждого запроса (мс). Используется для выбора между этапом предварительного заполнения и декодирования.
--prefill-policy-type 0 Конфигурация расписания Стратегия этапа предварительного заполнения:
0: FCFS (первым пришел, первым обслужен).
1: СОСТОЯНИЕ (то же, что и FCFS).
2: ПРИОРИТЕТ (приоритетная очередь).
3: MLFQ (многоуровневая очередь обратной связи).
--max-batch-size 200 [1, 5000] Конфигурация расписания Максимальное количество запросов, группируемых на этапе декодирования.
--max-iter-times [1, --max-seq-len] Конфигурация расписания Максимальное количество итераций для этапа декодирования. По умолчанию такое же, как --max-seq-len.
--decode-time-ms-per-req 50 [0, 1000] Конфигурация расписания Расчетное время декодирования на запрос (мс). Используется с --prefill-time-ms-per-req для выбора партии.
--decode-policy-type 0 Конфигурация расписания Стратегия этапа декодирования:
0: FCFS
1: STATE (приоритет вытеснения или замены запросы)
2: ПРИОРИТЕТ
3: MLFQ
--max-preempt-count 0 [0, --max-batch-size] Конфигурация расписания Максимальное количество вытесняемых запросов, разрешенных во время декодирования. Должно быть меньше --max-batch-size.
--support-select-batch Конфигурация расписания Включить выбор партии. Определяет приоритет выполнения на основе --prefill-time-ms-per-req и --decode-time-ms-per-req. Используйте --no-support-select-batch для явного отключения.
--max-queue-delay-microseconds 5000 [500, 1000000] Конфигурация расписания Максимальное время ожидания в очереди в микросекундах.
--max-first-token-wait-time 2500 [0, 3600000] Конфигурация расписания Максимальное время ожидания первой генерации токена в миллисекундах.
--override-generation-config Переопределяет или устанавливает конфигурацию генерации в формате JSON. Например: {"temperature": 0.5}. Это сольется с generation_config.json структуры модели.
--enforce-eager Выпускайте операторы в нетерпеливом режиме.
--no-metrics Отключить предоставление метрик в конечной точке /metrics.
--dtype авто Тип данных для весов модели и активаций.
auto: использовать тип данных по умолчанию конфигурации модели.
half/float16: для FP16.
bfloat16: для BF16.
float/float32: для FP32.
--rope-scaling Увеличение размера контекста Конфигурация масштабирования RoPE в формате JSON. Например: {"type":"yarn","factor":4.0,"original_max_position_embeddings":32768}. Это сольется с config.json структуры модели.
--rope-theta Увеличение размера контекста Тета-конфигурация RoPE. Это сольется с config.json структуры модели.
--enable-split Split Fuse Включить разделенный предохранитель, что-то вроде фрагментированного предварительного заполнения. Используйте --no-enable-split для явного отключения.
--policy-type 0 Split Fuse Стратегия разделения предохранителя.
0: FCFS, порция в порядке очереди.
4: SJF, сначала самая короткая работа.
5: LJF, первая самая длинная работа.
6: Пропустить-присоединиться к MLFQ, пропустить-присоединиться к многоуровневой очереди обратной связи.
7: SJF-MLFQ, самое короткое первое задание и многоуровневая очередь обратной связи.
--split-chunk-tokens 512 [1, 8192] Split Fuse Размер токенов для партии для Split Fuse. Кратно 16.
--split-start-batch-size 16 [0, --max-batch-size] Split Fuse Размер партии для начала разделения для Split Fuse.
--enable-memory-decoding Спекулятивное декодирование/декодирование памяти Включить спекулятивное декодирование памяти. Используйте --no-enable-memory-decoding для явного отключения.
--memory-decoding-length 16 [1, 16] Спекулятивное декодирование/декодирование памяти Длина для предположения декодирования памяти.
--memory-decoding-dynamic-algo Спекулятивное декодирование/декодирование памяти Включить динамический алгоритм для спекулятивного декодирования памяти.
--enable-lookahead Спекулятивное декодирование / просмотр вперед Включить прогнозирование вперед. Используйте --no-enable-lookahead для явного отключения.
--lookahead-level 4 [3, 16] Спекулятивное декодирование/просмотр вперед Уровень для спекулятивного прогнозирования.
--lookahead-window 5 [1, 16] Спекулятивное декодирование/просмотр Размер окна для прогнозирования.
--lookahead-guess-set-size 5 [1, 16] Спекулятивное декодирование/упреждающий просмотр Угадать размер набора для прогнозного прогнозирования.
--enable-multi-token-prediction Прогнозирование нескольких токенов Включить прогнозирование нескольких токенов. Используйте --no-enable-multi-token-prediction для явного отключения.
--multi-token-prediction-tokens 1 (0, *) Прогнозирование нескольких токенов Количество токенов предсказания нескольких токенов. Это действует только тогда, когда включено --enable-multi-token-prediction.
--enable-prefix-caching Кэширование префиксов Включить кеширование префиксов. Используйте --no-enable-prefix-caching для явного отключения.
--pipeline-parallel-size, -pp 1 (0, *) Параллелизм Количество параллельных групп конвейера.
--data-parallel-size, -dp -1 Параллелизм Количество параллельных групп данных для слоев внимания. -1 означает отключение параллелизма данных, в противном случае должно быть степенью 2.
--context-parallel-size, -cp -1 Параллелизм Количество контекстных параллельных групп для слоев внимания. -1 означает отключение контекстного параллелизма, в противном случае должно быть степенью 2.
--tensor-parallel-size, -tp -1 Параллелизм Число тензорных параллельных групп для слоев внимания. -1 означает использование размера мира в качестве тензорного параллельного размера, в противном случае значение должно быть степенью 2.
--sequence-parallel-size, -sp -1 --tensor-parallel-size Параллелизм Количество групп параллельных последовательностей для слоев MLP. -1 означает отключение параллелизма последовательностей, в противном случае должно быть степень 2.
--moe-expert-parallel-size, -moe-ep -1 Параллелизм Количество экспертных параллельных групп. -1 означает отключение экспертного параллелизма MoE, в противном случае должно быть степень 2.
--moe-tensor-parallel-size, -moe-tp -1 Параллелизм Число тензорных параллельных групп для слоев MoE MLP. -1 означает использование размера мира в качестве параллельного размера тензора MoE, в противном случае должно быть степень 2.
--enable-buffer-response Ответ буфера Включить ответ буфера. Используйте --no-enable-buffer-response для явного отключения.
--prefill-expected-time-ms Ответ буфера Ожидаемая задержка (SLO) для времени до первого токена (TTFT) в миллисекундах.
--decode-expected-time-ms Ответ буфера Ожидаемая задержка (SLO) для времени на выходной токен (TPOT) в миллисекундах.

Примечание

GPUStack позволяет пользователям вводить пользовательские переменные среды во время развертывания модели, однако некоторые переменные могут конфликтовать с управлением GPUStack.

Следовательно, GPUStack переопределит/запретит эти переменные. Сравните результаты журналов экземпляров модели со своими ожиданиями.

VoxBox

VoxBox — это движок инференса, предназначенный для развертывания моделей преобразования текста в речь и речи в текст. Он также предоставляет API, полностью совместимый с аудио API OpenAI.

Поддерживаемые модели

Модель Тип Ссылка Поддерживаемые платформы
Faster-whisper-large-v3 Преобразование речи в текст Hugging Face, ModelScope AMD64,ARM64
Faster-whisper-large-v2 Преобразование речи в текст Hugging Face, ModelScope AMD64,ARM64
Faster-whisper-large-v1 Преобразование речи в текст Hugging Face, ModelScope AMD64,ARM64
Faster-whisper-medium Речь в текст Hugging Face, ModelScope AMD64,ARM64
Faster-whisper-medium.en Преобразование речи в текст Hugging Face, ModelScope AMD64,ARM64
Faster-whisper-small Преобразование речи в текст Hugging Face, ModelScope AMD64,ARM64
Faster-whisper-small.en Преобразование речи в текст Hugging Face, ModelScope AMD64,ARM64
Faster-distil-whisper-large-v3 Преобразование речи в текст Hugging Face, ModelScope AMD64,ARM64
Faster-distil-whisper-large-v2 Преобразование речи в текст Hugging Face, ModelScope AMD64,ARM64
Faster-distil-whisper-medium.en Преобразование речи в текст Hugging Face, ModelScope AMD64,ARM64
Faster-whisper-tiny Преобразование речи в текст Hugging Face, ModelScope AMD64,ARM64
Faster-whisper-tiny.en Преобразование речи в текст Hugging Face, ModelScope AMD64,ARM64
CosyVoice-300M-Instruct Преобразование текста в речь Hugging Face, ModelScope AMD64
CosyVoice-300M-SFT Преобразование текста в речь Hugging Face, ModelScope AMD64
CosyVoice-300M Преобразование текста в речь Hugging Face, ModelScope AMD64
CosyVoice-300M-25Hz Преобразование текста в речь ModelScope AMD64
CosyVoice2-0.5B Преобразование текста в речь Hugging Face, ModelScope AMD64
Dia-1.6B Преобразование текста в речь Hugging Face, ModelScope AMD64

Поддерживаемые функции

Разрешить разгрузку графического процессора/процессора

VoxBox поддерживает развертывание моделей на графических процессорах NVIDIA. Если ресурсов графического процессора недостаточно, модели автоматически развертываются в процессоре.

Потоковая передача не поддерживается

VoxBox не поддерживает потоковую передачу текста в речь (/v1/audio/speech) или речи в текст (/v1/audio/transcriptions). Чтобы использовать API потокового аудио, вместо этого разверните vLLM-совместимую аудиомодель на серверной части vLLM.