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

Управление бэкендом инференса

GPUStack позволяет администраторам настраивать бэкенды инференса и версии серверной части.

Эта статья служит руководством по работе со страницей Inference Backend. Информацию о поддерживаемых встроенных бэкендах и их возможностях см. в разделе Встроенные бэкенды вывода.

Рекомендации по настройке пользовательских серверных частей и примеры пользовательских серверных частей, работа которых проверена, см. в разделе Пользовательские серверные части.

Бэкэнд-исходники

GPUStack поддерживает три типа серверных модулей вывода:

  • Встроенные: предварительно настроенные серверные части, поддерживаемые GPUStack (например, vLLM, MindIE, VoxBox). Их нельзя удалить.
  • Сообщество: бэкенды, доступные на торговой площадке бэкендов сообщества. Вы можете включить их по мере необходимости.
  • Пользовательский: серверные части, которые вы создаете со своими собственными конфигурациями. Их можно свободно добавлять, редактировать и удалять.

Списки «Встроенные» и «Сообщество» обновляются «по беспроводной сети», без обновления GPUStack. Вы также можете указать любой список на собственный документ. См. Обновления контента OTA.

Описание параметра

Имя параметра Описание Обязательно
Имя Имя бэкенда инференса Да
Путь проверки работоспособности Путь проверки работоспособности, используемый для проверки работоспособности серверной части и ее ответа. По умолчанию: /v1/models (совместим с OpenAI). Нет
Команда выполнения по умолчанию Команда/аргументы запуска контейнера. Например (vLLM): vllm serve {{model_path}} --port {{port}} --served-model-name {{model_name}} --host {{worker_ip}}. Заполнители {{model_path}}, {{model_name}}, {{port}}, {{worker_ip}}, {{gpu_count}}, {{gpu_ids}} и {{VAR_NAME}} (для переменных среды) автоматически заменяются, когда развертывание запланировано для воркера; после замены заполнителя аргументы разделяются в стиле POSIX. {{gpu_count}} и {{gpu_ids}} отражают графические процессоры, назначенные одному запланированному воркеру (пользовательские серверные части не поддерживают вывод нескольких воркеров). Заключайте значения в кавычки с пробелами и избегайте операторов оболочки. Нет
Точка входа по умолчанию Переопределение точки входа в контейнер. Если установлено, оно заменяет точку входа изображения для этого бэкенда. Аргументы разделяются в стиле POSIX. Нет
Переменные среды по умолчанию Переменные среды, которые нужно установить для всех версий этого бэкенда. На него можно ссылаться в командах, используя синтаксис {{VAR_NAME}}. Переменные среды, зависящие от версии, имеют приоритет. Нет
Параметры серверной части по умолчанию Предварительно заполните раздел «Дополнительные параметры серверной части» во время развертывания; вы можете настроить их перед запуском Нет
Формат флага Управляет тем, как отображается каждая пара --key value при сборке команды запуска серверной части: Space Separated (--key value) или Equal Sign (--key=value). Оставьте пустым, чтобы отключить нормализацию (параметры сохраняются точно в том виде, в каком они были введены). Параметры с несколькими значениями всегда остаются разделенными пробелами. См. Формат флага. Нет
Общие параметры серверной части Список часто используемых параметров для этой серверной части, показанный в виде предложений во входных данных Backend Parameters во время развертывания для быстрого ввода. В отличие от Default Backend Parameters, они предлагаются только для быстрого выбора и не заполняются предварительно при открытии формы развертывания. Не влияет на поведение во время выполнения. Нет
Описание Описание Нет
Конфигурации версий Настройка доступных версий этого бэкенда Да
Версия по умолчанию Выбирается заранее во время развертывания. Если вы не выбираете версию, используется ее изображение Нет

Переменные среды

Вы можете определить переменные среды на двух уровнях:

  • Уровень серверной части (Default Environment Variables): применяется ко всем версиям серверной части.
  • Уровень версии (Environment Variables): специфично для версии, переопределяет переменные внутреннего уровня.

На переменные среды можно ссылаться в командах, используя синтаксис {{VAR_NAME}}.

Пример:

backend_name: my-backend-custom
default_env:
  MODEL_CACHE_DIR: /cache
  LOG_LEVEL: info
version_configs:
  v1:
    image_name: my-image:v1
    custom_framework: cuda
    run_command: "serve {{model_path}} --cache {{MODEL_CACHE_DIR}} --log-level {{LOG_LEVEL}} --port {{port}}"
    env:
      MODEL_CACHE_DIR: /custom-cache # Overrides backend-level value

В этом примере:

  • MODEL_CACHE_DIR установлено на /cache на внутреннем уровне
  • Версия v1 заменяет его на /custom-cache
  • LOG_LEVEL остаётся info для всех версий
  • Обе переменные упоминаются в команде с использованием синтаксиса {{VAR_NAME}}.

Описание параметра конфигурации версии:

Имя параметра Описание Обязательно
Версия Имя версии отображается в раскрывающемся списке «Версия серверной части» во время развертывания Да
Имя изображения Имя образа контейнера для серверной части (например, ghcr.io/org/image:tag) Да
Framework
(custom_framework)
Внутренняя структура (внутренний идентификатор: custom_framework). Развертывание и планирование фильтруются по поддерживаемым платформам Да
Переменные среды Переменные среды, специфичные для этой версии. Переопределяет внутренний уровень Default Environment Variables. На него можно ссылаться в Execution Command, используя синтаксис {{VAR_NAME}}. Нет
Точка входа Переопределение точки входа контейнера для конкретной версии. Если опущено, используется Default Entrypoint. Аргументы разделяются в стиле POSIX. Нет
Команда выполнения Команда запуска для конкретной версии. Если этот параметр опущен, используется команда выполнения по умолчанию. Правила синтаксического анализа и разделения идентичны Default Execution Command. Нет

Формат флага

Flag Format управляет тем, как GPUStack отображает каждую пару --key value при сборке команды запуска бэкенда. Он настраивается на внутреннем уровне, применяется ко всем развертываниям модели, использующим этот серверный интерфейс, и вступает в силу, когда воркер собирает команду запуска контейнера.

Доступные значения:

  • Space Separated (--key value): разделены пробелом и отображаются как --key value.
  • Equal Sign (--key=value): к ним присоединяется =, отображается как --key=value.
  • Пусто (по умолчанию): без нормализации; параметры сохраняются точно так, как введено в Backend Parameters.

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

Пример:

Если для Flag Format бэкенда установлено значение Equal Sign (--key=value), развертывание с использованием этого бэкенда со следующим Backend Parameters:

--tensor-parallel-size 2 --max-model-len 8192 --lora-modules a=/path1 b=/path2

нормализуется в команде запуска как:

vllm serve Qwen/Qwen3.5-0.8B --tensor-parallel-size=2 --max-model-len=8192 --lora-modules a=/path1 b=/path2

--tensor-parallel-size и --max-model-len преобразуются в форму со знаком равенства, а --lora-modules сохраняет форму, разделенную пробелами, поскольку она содержит несколько значений.

Примечание

  • Параметры с несколькими значениями (например, --lora-modules) всегда остаются разделенными пробелами независимо от выбранного формата. Преобразование их в форму --key=value меняет семантику argparse, поскольку последующие значения обычно перезаписывают предыдущие.
  • Короткие опции, состоящие из одного тире (например, -n, -ngl и -m в llama.cpp) сохраняются дословно, а не преобразуются в формы с двойным тире, такие как --n.

Добавить пользовательский бэкенд инференса

  1. Нажмите кнопку «Добавить серверную часть» в правом верхнем углу.
  2. Вы можете добавить собственный бэкенд инференса, заполнив форму или вставив определение YAML. Значения полей см. в описании параметров выше.
  3. Имя серверной части нельзя изменить после создания. Имена пользовательских серверов должны заканчиваться на «-custom» (заранее заполненный в форме).
  4. Нажмите «Сохранить», чтобы отправить.

Есть два способа добавить собственный бэкенд инференса:

  • Через форму пользовательского интерфейса: перейдите на страницу Служба модели > Серверы вывода и нажмите кнопку Добавить пользовательский бэкенд инференса.
  • Через конфигурацию YAML: импортируйте файл YAML, содержащий конфигурацию серверной части.

Включить серверную часть Community Inference

По сути, это пользовательские серверные части с меткой источника «сообщество», позволяющие быстро создавать собственные серверные части без ручной настройки.

  1. На странице бэкенда инференса нажмите кнопку «Добавить серверную часть» в правом верхнем углу.
  2. Выберите опцию «Сообщество», чтобы просмотреть доступные серверные части сообщества на торговой площадке.
  3. Найдите серверную часть, которую вы хотите использовать, и нажмите «Включить» в меню действий карты.
  4. После включения серверная часть становится доступной для развертывания модели. Чтобы отключить, удалите серверную часть со страницы Inference Backend.

Редактирование бэкенда инференса или добавление пользовательской версии.

  1. На странице Серверная часть вывода найдите целевую серверную часть. В правом верхнем раскрывающемся меню карты выберите «Изменить».
  2. Измените свойства серверной части (имя не может быть изменено) или добавьте новую версию.
  3. Для встроенных бэкендов пользовательские версии должны заканчиваться на «-custom» (заранее заполненный в форме).
  4. Нажмите «Сохранить», чтобы отправить.

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

  1. На странице Серверная часть вывода найдите бэкенд инференса vLLM. В правом верхнем раскрывающемся меню карты выберите «Изменить».
  2. В разделе «Конфигурации версий» нажмите «Добавить версию».
  3. Заполните поля следующим образом:
  • Версия: 0.19.0
  • Имя изображения: vllm/vllm-openai:v0.19.0
  • Рамка: cuda
  • Переопределить точку входа изображения: vllm serve
  • Команда выполнения: {{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name {{model_name}}
  1. Нажмите «Сохранить», чтобы отправить.

Примечание

vLLM изменила точку входа своего образа Docker с версии 0.11.1. Поэтому при добавлении пользовательской версии vLLM v0.11.1 или новее необходимо указать поля Override Image Entrypoint и Execution Command; в противном случае модель не запустится. Если вы используете более новые версии изображений gpustack/runner, вам не нужно задавать поле Execution Command.

Для бэкендов, которые предоставляют исполняемый файл через Override Image Entrypoint (например, vLLM и SGLang), Execution Command должен содержать только аргументы. Не помещайте исполняемый файл (например, vllm serve или python -m vllm ...) в Execution Command, иначе он будет добавлен после точки входа и создаст дублированный префикс, например vllm serve python -m vllm ....

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

  1. На странице модуля вывода найдите бэкенд инференса SGLang. В правом верхнем раскрывающемся меню карты выберите «Изменить».
  2. В разделе «Конфигурации версий» нажмите «Добавить версию».
  3. Заполните поля следующим образом:
  • Версия: 0.5.10
  • Имя изображения: lmsysorg/sglang:v0.5.10
  • Рамка: cuda
  • Переопределить точку входа изображения: sglang serve
  • Команда выполнения: --model-path {{model_path}} --host {{worker_ip}} --port {{port}}
  1. Нажмите «Сохранить», чтобы отправить.

Удалить пользовательский бэкенд инференса

  1. На странице Inference Backend найдите целевой сервер и выберите «Удалить» в правом верхнем раскрывающемся меню карты.
  2. Встроенные бэкенды удалить нельзя.
  3. Нажмите «Удалить» в диалоговом окне подтверждения.

Список версий бэкенда инференса

На странице бэкенда инференса щелкните в любом месте карточки серверной части (кроме кнопок действий), чтобы открыть модальное окно, в котором вы можете просмотреть все встроенные и добавленные пользователем версии.

Гибкое развертывание тестирования

Используйте этот режим для быстрой проверки или настройки образа и команды запуска без редактирования определения серверной части.

  1. Перейдите на страницу «Развертывания», нажмите кнопку «Развернуть модель» и выберите любой источник модели.
  2. На вкладке «Основные» откройте раскрывающийся список «Бэкэнд» и выберите «Пользовательский» в разделе «Встроенный».
  3. Появятся два поля: image_name и run_command. Они переопределяют серверную конфигурацию только для этого развертывания.
  4. Просмотрите оставшиеся необходимые настройки и отправьте развертывание.

Ограничения пользовательских бэкендов инференса

Пользовательские бэкенды инференса не поддерживают распределённый инференс между несколькими воркерами.